#видеоигры
Diora – трехмерная игра для двумерной консоли
Главное о движке «Diorama Engine» из девлога соло-разработчика Закари Снайдера.
В своем блоге Закари Снайдер рассказывает о том, как создал кастомный движок «Diorama Engine», который позволил воплотить трехмерные визуальные эффекты на двумерной консоли Playdate.
Diora – это игра соло-разработчика Закари Снайдера для портативной консоли Playdate. В игре нужно решать пространственные головоломки, а ещё можно строить собственные уровни в конструкторе.

Все игры на плейдейт двухмерные, но Закари очень хотел сделать трехмерную игру в духе Monument Valley, поэтому для Диоры Закари заморочился и разработал собственный движок «Diorama Engine».
Как работает «Diorama Engine»

Уровни Диоры стоят из блоков. Внешне блоки выглядят трехмерными, но на самом деле каждый ассет представляет собой огромную таблицу из 180 изображений.
Закари создает блоки в Blender, рендерит каждый ракурс блока с шагом в 2 градуса в папку с PNG-файлами, а затем, используя кастомный веб-инструмент, понижает качество изображений и объединяет их в линейный спрайт лист. Получившиеся игровые ассеты выводятся на экран Playdate с помощью кода, который использует рукоятку консоли для выбора нужного кадра из спрайт листа.
Самое сложное в процессе рендеринга – это смещение положения отрисовки блока в зависимости от положения и поворота камеры. Обычный способ вычисления этого положения потребовал бы уникальных тригонометрических операций для каждого блока, поэтому Закари сделал расчет, основываясь на угле камеры 0°, а затем повернул это положение вокруг начала координат.
Чтобы отрисовать блоки в правильном порядке, Закари использовал сортировку ассетов по их расстоянию до «камеры». Он назвал этот прием «алгоритмом художника» в честь того, как слои краски накладываются на холст. К сожалению, этот метод оставлял артефакты и был неэффективен, поэтому требовал доработки.
После проведения серии тестов выяснилось, что сортировка не требуется при перемещениях на 90°. Сортировка актуальна лишь тогда, когда камера выходит за пределы угла в 90°, что значительно сокращает количество операций сортировки. Этот подход позволил движку эффективно работать с необходимым числом блоков.
Закари впоследствии неоднократно проводил оптимизацию движка, но именно эта версия, когда сортировка связана с углом поворота камеры, оказалась наиболее эффективной.

Таким образом, Закари не только создал эстетически привлекательную головоломку, следуя лучшим традициям Monument Valley, но и преодолел технические ограничения Playdate.

За развитием игры можно следить в девлоге Закари.