Легко переносить из 2D в 3D в Java-игре - PullRequest
0 голосов
/ 01 января 2009

Из-за нехватки капитала и времени нам приходится делать нашу игру в 2D, хотя я (разработчик) предпочел бы, чтобы она была в 3D. Я не хотел бы, чтобы пользователи присоединились к игре, только чтобы думать, что графика выглядит плохо и уходит. Хотя я полагаю, что мы просто должны постараться и приложить все усилия.

При этом я хотел бы разработать игру таким образом, чтобы в случае необходимости мы могли как можно проще портировать на 3D. Я знаю игры, которые должны были переписать все с нуля. Я бы не хотел этого делать, поэтому мне хотелось бы использовать некоторые советы / рекомендации при программировании игры, чтобы при переходе на 3D это было так же просто, как изменение кода 1-5 классов рендеринга графики (или закрыть) и 3D-графика будет работать.

P.S Это многопользовательская ролевая игра ( Не MMORPG, намного меньше по объему на данный момент)

Ответы [ 4 ]

5 голосов
/ 01 января 2009

Самый простой способ добиться этого - написать игру в 3D и визуализировать виды с помощью 3D-2D-проекции, например. в плане или возвышении. Если внутренняя механика игры двумерная, и вы пытаетесь перейти к настоящей трехмерной рамке, вам, вероятно, лучше переписать. Это также в некоторой степени зависит от того, что вы подразумеваете под 3D, и от того, есть ли у вас эффективный вариант отображения. Например, Microsofts Age of Empires визуализируется в 3D, но отлично работает в качестве 2D-плана. С другой стороны, шутер от первого лица, такой как Half Life или Quake, не будет.

3 голосов
/ 01 января 2009

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

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

Подумайте о (несколько устаревшем) Diablo II, который не является 3D, но все же имеет приятную и привлекательную графику.

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

2 голосов
/ 01 января 2009

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

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

1 голос
/ 01 января 2009

Шаблон MVC должен помочь.

И я думаю, вы уже в курсе, но вы смотрели на Java3D ? Возможно, наличие сменного вида трехмерного рендеринга на основе этого (но не обязательно отполированного и готового к производству) сохранит вашу честность, так что вы не будете привязаны к 2D каким-либо ужасным образом. Это может быть так же просто, как рендеринг 2D-материала с добавлением некоторого позиционирования Z.

...