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




Вам не обязательно использовать 3D, чтобы создать «трехмерный вид». Такие вещи, как повороты, движения или преобразования, могут быть предварительно записаны или предварительно обработаны как анимации или последовательности изображений и легко интегрированы в 2D-игру. Единственное, что невозможно в 2D, - это свободно перемещаться в «игровом пространстве» (например, ходить или летать, произвольно поворачиваться и т. д.)
Однако основной проблемой при выборе 2D или 3D должен быть игровой процесс. Есть игры, которые абсолютно нуждаются в 3D (шутеры, симуляторы), в то время как другие прекрасно обходятся без (приключения, головоломки, ...). Так что на самом деле вам не нужно выбирать, кроме как выбрать то, что лучше всего соответствует вашей игровой идее.
Лично я бы по возможности избегал использования 3D в вашей первой игре, чтобы устранить все связанные с этим ограничения и проблемы.
При использовании 3D вам обычно приходится выбирать 3D-фреймворк, который сильно повлияет на дизайн вашего программного обеспечения, внешний вид игры и общую производительность. Java3D, например, предлагает сложную структуру классов, к которой вам нужно приспособиться. И очень много усилий уходит на то, чтобы заставить этот 3D-материал вообще работать. Простые вещи, такие как вращение квадрата, превращаются в матричные операции, включающие кватернионы. Каждый эффект должен быть реализован в сложном трехмерном мире и таким образом, чтобы его двухмерный проецируемый вид получился именно таким, каким вы его задумали. Не говоря уже о том, что 3D-приложения часто имеют очень стереотипный вид, который очень трудно преодолеть.
В 2D вы буквально избегаете одного измерения сложности. Вы делаете все именно так, как должно выглядеть, вы можете использовать стандартные графические приложения и открытые форматы файлов, чтобы упростить рабочий процесс между дизайнером и разработчиком. А множество псевдо-3D-эффектов, таких как параллаксное движение, глубина резкости и предварительно обработанные изображения, позволяют создавать потрясающие образы в 2D-мире.
Я не мог с этим согласиться. Поскольку это первый проект по программированию игр на Java, решение о переходе на 2D уже было принято, если вы спросите меня.
> Простые вещи, такие как вращение квадрата, превращаются в матричные операции, включающие кватернионы в java3d ...? Вы можете просто установить пару преобразований вращения с любым углом, который вам нравится - и я считаю, что есть даже встроенный интерполятор вращения, который позволит вам эффективно применять угловую скорость без особой головной боли. В общем, я обнаружил, что с java3d очень легко разобраться, и, конечно, намного проще, чем напрямую использовать оболочку opengl.
Учитывая ваши требования, я бы выбрал 2D. У вас есть больше инструментов на выбор. больше доступных талантов для заключения контрактов на произведения искусства ... и конвейер активов проще. В конце концов, все дело в том, насколько хороша игра сама по себе. Среднестатистическому пользователю иногда труднее разобраться в 3D.
В зависимости от того, что вы концептуализируете, вращения и морфинг должны быть вполне возможны в 2D. Вы даже можете рассмотреть псевдо-трехмерный подход, как Paper Mario ..
Переход от 2D к 3D не должен быть серьезной проблемой, если вы проектируете структуру кода с учетом этого. ..
Я думаю, что для написания 2D- или полноценной 3D-игры нужен совершенно другой подход к дизайну, который позже не может быть легко изменен: SUN предоставляет Java 2D API и Java 3D API для двух решений разработки. За первую игру с жестким дедлайном я бы проголосовал за 2D-версию. Если игровой процесс интересный, а дизайн приятный, то 3D не обязательно.
Вам следует перейти в 2D. Вы указали несколько причин, чтобы воспользоваться этим подходом:
3D требует много времени, и его лучше всего потратить на улучшение остальной части игры. Подумайте обо всех потрясающих играх, существовавших до эпохи 3D.
Не бойтесь принимать ограничения: в то время как 3D может дать вам множество возможностей, 2D может привести к более творческой работе!
Я бы также порекомендовал 2D. 3D-игра будет более требовательной к графике на компьютере пользователя, и многие вещи, такие как обнаружение столкновений, значительно проще в 2D. Вы даже можете создавать модели своих персонажей в 3D, а затем проецировать их в 2D, чтобы создать спрайты для реальной игры. Puzzle Pirates (http://www.puzzlepirates.com/) использует этот подход, и он очень хорошо работает с точки зрения постоянного освещения и т. д.
Я бы рассмотрел несколько факторов:
Даже если вы хотите пойти по пути 3D, вы все равно можете создать 2D-игру (иногда называемую 2.5D или псевдо-3D). Также есть несколько хороших сторонних фреймворков как для 2D, так и для 3D-материалов на Java. Вам не обязательно использовать java2D / java3D.
Можете ли вы подробно рассказать об ограничениях и проблемах, связанных с использованием 3D?