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




Шаблон MVC должен помочь.
Думаю, вы уже в курсе, но смотрели ли вы на Java3D? Возможно, наличие заменяемого плагина вида 3D-рендеринга на основе этого (но которое не обязательно отшлифовано и готово к производству) сохранит вашу честность, чтобы вы не оказались привязанными к 2D каким-то ужасным образом. Это может быть так же просто, как рендеринг вашего 2D-материала с добавлением некоторого Z-позиционирования.
Самый простой способ добиться этого - написать игру в 3D и визуализировать виды, используя проекцию 3D в 2d, например в плане или высоте. Если внутренняя механика игры двухмерная, и вы пытаетесь перейти к истинному трехмерному кадру, вам, вероятно, будет лучше переписать. Это также в некоторой степени зависит от того, что вы имеете в виду под 3D, и от того, есть ли у вас эффективная опция отображения. Например, Microsofts Age of Empires визуализируется в 3D, но отлично подойдет как 2D-план. С другой стороны, шутеры от первого лица, такие как Half Life или Quake, не годятся.
Я так не думаю, поскольку ваше действие, по сути, происходит на поверхности, которую можно рассматривать сверху как план. В этом случае добавление трехмерной графики должно быть довольно простым. Просто держите весь код рендеринга отдельно и слабо связанным с остальной частью приложения.
Due to lack of capital and time we are having to do our game in 2D even though me (the developer) would prefer if it was done in 3D. I would hate for users to join the game, only to think the graphics look bad and leave. Though I suppose we just have to try and do our best.
Я не думаю, что все должно быть трехмерным, чтобы хорошо выглядеть. Хорошо сделанная 2D-графика может выглядеть во много раз лучше, чем стандартная 3D-графика. Чтобы иметь отличную 3D-графику, нужно приложить серьезные усилия. Если ваш бюджет не позволяет этого, я бы предпочел приложить много усилий для разработки игрового процесса.
Просто подумайте о (несколько устаревшей) Diablo II, которая не является трехмерной, но все же имеет красивую и красивую графику.
Конечно, можно построить архитектуру, которая упростит изменение графического представления, но я думаю, что она почти никогда не будет такой простой, как вы описали. Конечно, если вам просто нужно 3D ради 3D, это можно сделать (вместо растровых изображений вы теперь визуализируете 3D-модели), но это несколько бессмысленно. Если вы хотите использовать 3D, игрок должен иметь возможность его использовать (например, перемещая камеру, имея больше степеней свободы, ...), но это должно быть учтено во всем дизайне игры и, следовательно, серьезно влияет на игровой процесс.
Однако модели Diablo - это 3D-рендеры. Для действительно прекрасных примеров хороших 2D-игр с блокировкой вам придется искать хитроумную пиксельную графику.
Когда вы решаете создать 2D-игру, на самом деле не имеет значения, как создаются 2D-спрайты, если они соответствуют общему стилю игры. Пиксель-арт может быть прекрасным, но рендеринг 3D-моделей может иметь некоторые преимущества (например, легче создавать анимацию в 8-16 направлениях).
Вы можете использовать ортогональный вид GL. Это позволит вам рисовать на экране, используя только 2D-координаты, если вы позже захотите 3D, переключитесь с Орто на Перспективный вид, и у вас будет 3D, однако я не думаю, что это поможет вам повторно использовать код, поскольку 2D Орто-вид обычно выполняется с текстурами, и вы не можете преобразовать текстуру в трехмерную сетку.
Возможно, лучший подход - сделать все в 3D и настроить камеру так, чтобы она смотрела сверху, если вы сделаете это позже, вы можете переключиться в 3D, просто переместив камеру и создав лучшие модели и текстуры. Этот вариант звучит лучше, но дает вам больше работы за счет компромисса с переносимостью 2D в 3D без изменения кода.
Это не шутер от первого лица, игрок в основном будет ходить, разговаривать с неигровыми персонажами, обмениваться / драться с другими игроками и т. д. 3D будет только давать тени игрокам, объектам и зданиям, улучшать графику, и камера будет лучше (т. Е. с разн. направлений). Как вы думаете, это потребует переписывания?