Исходник Гайд Imgui ASCII бегалка с псевдо 3D

Liquit

Известный
Автор темы
278
107
Мне резко стало интересно сделать псевдо 3D графику полностью на ASCII, вот собственно и оно. В ней можно поиграться с настройками и изучить технологию Ray Casting'a, которая использовалась в первых шутерах по типу Wolfenstein и Doom. Здесь я реализовал самую тупую и неоптимизированную версию, объяснение которой можно найти тут.

Вот как это выглядит:
1731842775375.png

FOV - угол обзора
Depth - дальность прорисовки
raycast step - шаг алгоритма отрисовки лучей
player speed - очевидно скорость передвижения персонажа
bound - отрисовка линий на миникарте которые попадают в ребра стен
show fov - отрисовка всех линий на миникарте которые строит алгоритм
также можно генерировать разные карты
Зависимости: ImGui
Установка: Переместить скрипт в папку moonloader
Активация: /raycasting
WASD - перемещение, J и L поворот камеры влево-вправо
А ещо можно стрелять из пикалета на пробел
Изначально я хотел сделать полноценный шутер полностью на ASCII, но столкнулся с определёнными проблемами, в частности с оптимиацией(рендерить игру внутри другой игры это гениально), ну и делать фулл на символах пипец запарно и тоже добавляет определённых ограничений
хочу попробовать более оптимизированные вариации этого алгоритма, по типу DDA(Digital Differential Analysis) и отрисовывать графику не символами, и возможно не в сампе
 

Вложения

  • raycasting.lua
    27.5 KB · Просмотры: 7
Последнее редактирование:

Liquit

Известный
Автор темы
278
107
Гц, Дум в сампе
от дума это далеко, т.к. в думе все сложнее, скорее похоже на вульфенштейн, разве что без текстур и без врагов

заметил забавный баг, что можно проходить сквозь стены если они расположены по диагонали, и чем больше шаг raycast'a тем больше зазор между ними
1731847583168.png