2.5D Renderer

Предисловие

В прошлом я хотел ближе познакомиться с компьютерной графикой и одновременно с этим создать уже что-то рабочее. Погружаться в мир шейдеров оказалось не таким интересным занятием, нельзя было получить быстрый результат, сорвать низковисящий фрукт, поэтому я отложил изучение шейдеров в долгий ящик и решил найти для себя иной подход. На глаза попадались статьи про такую технику отрисовки как Raycasting. Если вы немного помните курс школьной геометрии и умеете программировать, то достаточно будет потратить несколько выходных, чтобы создать свой мир в виде лабиринта.

Изучив эту технику, я реализовал браузерную игру похожую на продвинутую версию Wolfenstein 3D с использованием паттерна Entity-Component-System (плюс спасибо ребятам за систему подсветки и открытия дверей):

Wolfenstein 3D-like browser game screenshot

Однако многие, кто не знаком с отрисовщиками прошлого, скажут, что эта игра похожа на DOOM, но к сожалению это не он. И кстати, некоторые разработчики не стесняются этим незнанием пользоваться, например, проект DOOMQL под капотом содержит wolf3d-like отрисовщик:

DOOMQL screenshot

Чтобы передать другим свой опыт изучения raycasting, я реализовал отдельное raycasting demo, где любой может проанализировть, как заданные параметры отрисовки влияют на конечный результат:

Raycasting demo screenshot

Что ж. Теперь настало время перейти к DOOM-like отрисовщику.