Где найти фреймворк, похожий на XNA на Java - PullRequest
7 голосов
/ 11 марта 2012

Я сейчас разработчик на C # / Java, и я прекрасно провел время на XNA с C # .NET.
Но я хочу попробовать разработать 3d на Java, поскольку он переносим, ​​и я еще не пробовал OpenGL.

Я столкнулся с проблемой, где было много возможностей:

  • jMonkeyEngine
  • Avatrix3D
  • Ardor3D
  • Java3D - На самом деле я не особо задумывался, это кажется интересным, но я бы предпочел посмотреть, что люди на самом деле говорят в первую очередь. Если бы это действительно то, что я искал, это было бы здорово. Недостатком является то, что я считаю, что уровень поддержки очень низок.

Я в основном изучал JME, который оказался скорее движком, чем фреймворком (который пришел мне в голову благодаря названию, хотя мне сказали, что это не так).

В основном то, что я хотел бы от специально каркаса :

  • Довольно автоматический рендеринг (см. XNA, возможно, чуть больше, чем они делают, но вокруг этого)
  • Включена векторная математика, то, что они сделали в JME с узлами , отлично
  • Предпочтительно легко портировать с приложением (в отличие от XNA, где конечный пользователь должен установить .NET AND XNA)
  • Нет ненужных реализаций того, что не обязательно будет общим: это, вероятно, требует объяснения, я имею в виду то, что я ненавижу в JME, что у них уже есть куча тяжелых физических реализаций, таких как их класс пули и simplePhysicsUpdate. Они не всегда делают то, что вы от них хотите, и реализовать их не так просто. В XNA они оставляют весь этот предмет полностью открытым.
  • Истинный ООП подход. В самом деле. В XNA я считаю, что это настоящий подход ООП, поскольку у вас есть ОДИН класс контроллеров, который содержит все GameComponent s. Это также облегчает создание собственной библиотеки для управления личным вводом данных и тому подобного. Физика также стала намного проще в обращении.

Обратите внимание, что я давно не смотрю на JME, поэтому я МОГУ ошибаться. Если да, скажите, пожалуйста, и, возможно, приведите примеры того, как он может реализовать то, о чем я прошу, сверху.

В противном случае, пожалуйста, дайте мне идеи о том, что может быть так, то есть framework , а не engine .

Также стоит отметить, что я уже задавал подобный вопрос здесь . Вот так я и заглянул в JME. Я также смотрю на Java3D в моем списке задач.
Этот вопрос отличается, так как я спрашиваю специально для framework , а не engine . (для меня разница в том, что движок будет стараться, чтобы все было готово к игре , в то время как фреймворк просто упрощает создание фактического движка, который удовлетворяет вашим потребностям).

Редактировать : после прочтения 2-х ответов я собираюсь заглянуть в Java3D, хотя кажется, что он имеет очень небольшую поддержку, так как я не хочу тяжести JME, если я не Я собираюсь использовать его, и считаю, что взламывать куски продукта - это несколько неправильно (я имею в виду, что можно делать это в случае необходимости, но я бы предпочел сначала поискать другие решения). Если это тоже не сработает, я посмотрю на jogamp и LWJGL, возможно, построив из них свой собственный фреймворк (кажется, интересный проект). Если я не соберу его, я просто буду придерживаться XNA (хотя я потеряю возможность установки любого из своих творений на машину с Linux внизу :()

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

Пару мыслей, но перейдем к погоне: такой платформы для Java не существует, вы можете перестать искать - или сильно разочароваться.

XNA - это крупная инвестиция со стороны Microsoft, ее объема и инструментовудивительныИ неудивительно: XNA является частью стратегии Microsoft XBox И одновременно их мобильной стратегии.У этого есть много ресурсов позади этого.Никто на стороне Java никогда не делал подобные инвестиции, потому что ни один крупный игрок не был заинтересован в том, чтобы продвигать Java как игровую платформу (это может измениться в случае Android и JavaFX, но я бы не стал задерживать дыхание).

То, что мы имеем здесь, в Джаваланде, - это множество небольших библиотек, сообществ и проектов.Больше волнений и идей, меньше зрелости.Меньше инструментов, больше перекрестного опыления.Мой любимый в настоящее время PlayN - это действительно классная кроссплатформенная библиотека, которая позволяет создавать игры для Android и настольных компьютеров, а затем компилировать ее в Javascript и играть в любом современном браузере без каких-либо плагинов.

Что касаетсятехническая сторона, две заметки:

  • Я возражаю против того, чтобы называть «один контроллер, чтобы управлять ими всеми» истинно подходом ОО (и, возможно, против называть что-либо «подходом истинно ОО»);это, безусловно, выбор дизайна, который имеет хорошие стороны, но у него есть свои компромиссы.Существуют и другие способы предоставления зависимостей, кроме их прикрепления к какому-то центральному объекту.

  • JME не - AFAIR - жестко привязан к какому-либо конкретному физическому движку, он построен с предположением, что все должнобыть замененнымЭто может быть сделано не так, как XNA, но это хорошо.

1 голос
/ 11 марта 2012

Я думаю jMonkeyEngine , вероятно, ваш лучший выбор.

Он разработан как довольно полнофункциональный игровой движок, но ничто не мешает вам использовать его в качестве фреймворка и просто выбирать и выбирать нужные биты. Это также открытый исходный код, так что если вы хотите сделать что-то немного по-другому, то всегда можно взломать это так, как вы хотите: -)

Например, если вам не нравятся функции графа сцены jMonkeyEngine более высокого уровня, вы можете просто использовать LWJGL (который jME использует для рендеринга внутри) и рисовать, используя OpenGL напрямую.

...