Вы собираетесь иметь две основных проблемы, которые сделают это трудно:
1) Плавающая точка не является точным представлением, что означает, что, если у Вас есть часть "x/y", который приводит к значению "z", Ваш дробный алгоритм может возвратить результат кроме "x/y".
2) существует бесконечность намного больше иррациональных чисел, чем рациональный. Рациональное число является тем, которое может быть представлено как часть. Неразумного существа, которые не могут.
Однако в дешевом виде пути, так как плавающая точка имеет предельную точность, тогда можно всегда представлять его как некоторую форму фракции. (Я думаю...)
Использовать Изометрическую проекцию !
I не думайте, что «настоящее 3D» необходимо для воссоздания внешнего вида тематической больницы. Вам нужно только изображение для каждой ориентации (если вы хотите, чтобы пользователь мог выбирать из 4 направлений обзора, как в оригинале) и каждого объекта. Просто согните вертикальные растровые линии на 45 градусов и сделайте ваши объекты трехмерными (и начертите их над соседними ячейками), чтобы создать трехмерный вид, не добавляя дополнительных сложностей, таких как OpenGL, в ваш код.
Я надеюсь, что я ясно изложил свою точку зрения . В противном случае, пожалуйста, спросите :)
Хорошо, я не стал ' Я ясно выражаюсь - как и ожидалось :) Я тоже не эксперт, извините. То, что я назвал «изгибом» выше, называется «сдвигом» (по крайней мере, в GIMP). Основная идея состоит в том, чтобы создать трехмерный вид, не выполняя его, как если бы вы рисовали трехмерный куб на бумаге. Может быть, поможет (правда, довольно уродливый) пример:
Это не 3D - никакие координаты в трехмерном пространстве не нужны - только растровые изображения для создания единообразного вида.
Переход на 3D увеличит затраты на создание контента в 7 раз. (Извините, не могу сослаться на исследование, но NCsoft Korea изучила его и сообщила об увеличении в 7 раз). Это связано с тем, что для создания жизнеспособных, эффективных и красивых активов требуется множество навыков. Так что имейте это в виду. Многие думают, что переход в 3D волшебным образом сделает их игру «лучше». Это заблуждение. Это будет выглядеть лучше только в том случае, если ресурсы достаточно хороши, чтобы создать уровень погружения лучше, чем то, что было у вас раньше.
Пребывание в 2D дает вам много свободы. Вы действительно можете создать художественный стиль, сосредоточиться на игре и т. Д. Как только вы войдете в 3D, вы большую часть времени вы будете тратить на оптимизацию клиента, а не на создание лучшей игры.
Итак, в конечном итоге решение остается за вами, мы не можем принять его за вас.
Если вы все же решите перейти на 3D, вам нужно затем решить, какова ваша цель. Если это просто создание игры, то вы можете изучить движок, чтобы сократить время разработки. Если вы хотите узнать о механике, лежащей в основе трехмерной графики, переходите прямо к OpenGL с помощью JOGL или LWJGL.
Некоторые механизмы, в которые следует изучить:
Удачи.
Тематическая больница - хорошие воспоминания :)
Если это обучающий проект, я бы определенно начал с 2D. Вы сделаете гораздо больше, а рабочую игру - гораздо раньше. Добавление 3D на этом этапе только усложнит.
К тому же Theme Hospital будет просто странно смотреться в 3D!
Если вы собираетесь работать с 3D, вам почти наверняка лучше всего будет использовать что-то вроде OpenGL (например, через JOGL). В этом случае вы в основном описываете свои объекты в трехмерном пространстве (например, положения и цвета стен, положения и цвета источников света и т. Д.). Затем вы указываете текущее местоположение «камеры». Поворот (обычно) обрабатывается простым указанием другой ориентации камеры.
Изучение OpenGL API не является тривиальным делом, но есть вероятность, что вас беспокоят неправильные вещи - например, полное трехмерное вращение довольно тривиально. Создание реалистичного освещения (особенно если вы хотите включить тени) - это большая работа.