дневник разработки · браузерная игра
КРИПТА — шутер от первого лица в духе Doom девяностых, полностью написанный на JavaScript и Canvas. Один HTML-файл. Без движка, без сборки, без единой внешней библиотеки для рендера.
Игрок спускается через логово тварей, отстреливаясь от врагов ближнего и дальнего боя, и тратит добытые монеты в лавке апгрейдов между уровнями. Каждый спуск — это гонка на выживание: чем глубже, тем плотнее засады и тем злее враги.
Технически всё держится на raycasting — той самой технике, которая в 1992 году лежала в основе Wolfenstein 3D. Никакого WebGL и трёхмерных движков: трёхмерность на экране — иллюзия, построенная из вертикальных полос и математики лучей, пересчитываемой заново на каждом кадре.
Ни сборщика, ни npm, ни подключаемых фреймворков — вся игра открывается двойным щелчком по файлу.
Алгоритм DDA (Digital Differential Analyzer) построчно вычисляет пересечение каждого луча со стенами карты и рисует вертикальную полосу нужной высоты и яркости — классический трюк raycasting-движков начала девяностых, реализованный на 2D Canvas.
Конечный автомат на несколько состояний — патруль, преследование, атака. Дальнобойные противники дополнительно считают траекторию снаряда до игрока и корректируют угол на лету.
Ни одного аудиофайла в проекте. Все эффекты — от выстрела до победной темы — генерируются на лету через Web Audio API.
WASD и мышь с Pointer Lock на десктопе; адаптивный джойстик и свайп-прицеливание на мобильных, с автоопределением поворота экрана.