Что выбрать: 2D или 3D для java-игры

Что должна выбрать небольшая команда для своей первой игры, когда у них мало времени, но у них большие амбиции? Я опытный программист, но до этого не занимался программированием игр. Мой дизайнер очень талантлив и артистичен, он работал с 3D около года назад, но с тех пор не делал этого, так что ему может потребоваться некоторое время, чтобы изучить его снова, и я не уверен, сможет ли он это сделать. у него хорошая работа, хотя его навыки графического дизайна в остальном просто потрясающие.

Наша основная задача - как можно быстрее завершить игру, а также сделать это легко, поскольку это мой первый проект по программированию игр. В то же время мы не хотим иметь каких-либо ограничений, которые могут помешать нашему прогрессу в дальнейшем или иным образом сделать игру неинтересной в определенном смысле.

Например, я узнал, что некоторые анимации невозможны в 2D, такие как вращение и т. д. Я хотел бы, чтобы персонаж игрока мог превращаться в животных, и должна быть возможность стрелять в монстров (например, стрелять стрела и видит, как она летит и попадает в другого человека). Возможно ли это в 2D?

В будущем, если бы мы захотели перейти от 3D к 2D, возможно ли это без полного переписывания игры?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
6
0
2 875
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Вам не обязательно использовать 3D, чтобы создать «трехмерный вид». Такие вещи, как повороты, движения или преобразования, могут быть предварительно записаны или предварительно обработаны как анимации или последовательности изображений и легко интегрированы в 2D-игру. Единственное, что невозможно в 2D, - это свободно перемещаться в «игровом пространстве» (например, ходить или летать, произвольно поворачиваться и т. д.)

Однако основной проблемой при выборе 2D или 3D должен быть игровой процесс. Есть игры, которые абсолютно нуждаются в 3D (шутеры, симуляторы), в то время как другие прекрасно обходятся без (приключения, головоломки, ...). Так что на самом деле вам не нужно выбирать, кроме как выбрать то, что лучше всего соответствует вашей игровой идее.

Лично я бы по возможности избегал использования 3D в вашей первой игре, чтобы устранить все связанные с этим ограничения и проблемы.

При использовании 3D вам обычно приходится выбирать 3D-фреймворк, который сильно повлияет на дизайн вашего программного обеспечения, внешний вид игры и общую производительность. Java3D, например, предлагает сложную структуру классов, к которой вам нужно приспособиться. И очень много усилий уходит на то, чтобы заставить этот 3D-материал вообще работать. Простые вещи, такие как вращение квадрата, превращаются в матричные операции, включающие кватернионы. Каждый эффект должен быть реализован в сложном трехмерном мире и таким образом, чтобы его двухмерный проецируемый вид получился именно таким, каким вы его задумали. Не говоря уже о том, что 3D-приложения часто имеют очень стереотипный вид, который очень трудно преодолеть.

В 2D вы буквально избегаете одного измерения сложности. Вы делаете все именно так, как должно выглядеть, вы можете использовать стандартные графические приложения и открытые форматы файлов, чтобы упростить рабочий процесс между дизайнером и разработчиком. А множество псевдо-3D-эффектов, таких как параллаксное движение, глубина резкости и предварительно обработанные изображения, позволяют создавать потрясающие образы в 2D-мире.

Можете ли вы подробно рассказать об ограничениях и проблемах, связанных с использованием 3D?

Click Upvote 28.12.2008 18:57

Я не мог с этим согласиться. Поскольку это первый проект по программированию игр на Java, решение о переходе на 2D уже было принято, если вы спросите меня.

Ross 29.12.2008 18:58

> Простые вещи, такие как вращение квадрата, превращаются в матричные операции, включающие кватернионы в java3d ...? Вы можете просто установить пару преобразований вращения с любым углом, который вам нравится - и я считаю, что есть даже встроенный интерполятор вращения, который позволит вам эффективно применять угловую скорость без особой головной боли. В общем, я обнаружил, что с java3d очень легко разобраться, и, конечно, намного проще, чем напрямую использовать оболочку opengl.

sanbikinoraion 18.05.2009 14:11

Учитывая ваши требования, я бы выбрал 2D. У вас есть больше инструментов на выбор. больше доступных талантов для заключения контрактов на произведения искусства ... и конвейер активов проще. В конце концов, все дело в том, насколько хороша игра сама по себе. Среднестатистическому пользователю иногда труднее разобраться в 3D.

В зависимости от того, что вы концептуализируете, вращения и морфинг должны быть вполне возможны в 2D. Вы даже можете рассмотреть псевдо-трехмерный подход, как Paper Mario ..

Переход от 2D к 3D не должен быть серьезной проблемой, если вы проектируете структуру кода с учетом этого. ..

Я думаю, что для написания 2D- или полноценной 3D-игры нужен совершенно другой подход к дизайну, который позже не может быть легко изменен: SUN предоставляет Java 2D API и Java 3D API для двух решений разработки. За первую игру с жестким дедлайном я бы проголосовал за 2D-версию. Если игровой процесс интересный, а дизайн приятный, то 3D не обязательно.

Вам следует перейти в 2D. Вы указали несколько причин, чтобы воспользоваться этим подходом:

  • Вы небольшая команда, и 3D берет больше работы.
  • Это твоя первая игра, так что вам нужно сделать это так же просто, как возможно, или проект может провалиться (вы подвергаетесь большому риску!)
  • Художнику 3D необходимо заново изучить ремесла!
  • У вас есть (на вид добровольно) крайний срок.
  • И т.п.

3D требует много времени, и его лучше всего потратить на улучшение остальной части игры. Подумайте обо всех потрясающих играх, существовавших до эпохи 3D.

Не бойтесь принимать ограничения: в то время как 3D может дать вам множество возможностей, 2D может привести к более творческой работе!

Я бы также порекомендовал 2D. 3D-игра будет более требовательной к графике на компьютере пользователя, и многие вещи, такие как обнаружение столкновений, значительно проще в 2D. Вы даже можете создавать модели своих персонажей в 3D, а затем проецировать их в 2D, чтобы создать спрайты для реальной игры. Puzzle Pirates (http://www.puzzlepirates.com/) использует этот подход, и он очень хорошо работает с точки зрения постоянного освещения и т. д.

Я бы рассмотрел несколько факторов:

  1. Это мобильная игра или игра-апплет? Если так, я бы выбрал 2D-версию. В таких условиях очень сложно получить правильное 3D-изображение.
  2. Что удобнее для вашего дизайнера? Может ли он быстрее моделировать, текстурировать и анимировать персонажа, чем создавать все спрайты, необходимые для 2D-персонажа?
  3. Поддержка инструмента. Какие выходные форматы может создавать ваш дизайнер как в 2D, так и в 3D? Какие форматы может обрабатывать промежуточное программное обеспечение, которое вы собираетесь использовать? Может ли ваш 3D-движок загружать или, по крайней мере, преобразовывать файлы .obj (в качестве примера можно было бы использовать любой другой формат модели)?

Даже если вы хотите пойти по пути 3D, вы все равно можете создать 2D-игру (иногда называемую 2.5D или псевдо-3D). Также есть несколько хороших сторонних фреймворков как для 2D, так и для 3D-материалов на Java. Вам не обязательно использовать java2D / java3D.

Другие вопросы по теме