# IRON ABYSS A retro first-person shooter written in PHP with [JumPHP](https://git.jumphp.net/jumphp/jumPhp): it runs on the desktop and in the browser (PHP compiled to WebAssembly). - **Engine**: a PHP port of the software renderer and game logic of the 1993 engine whose C source id Software released under the GNU GPL (https://github.com/id-Software/DOOM): BSP walk with solid-seg clipping, wall columns, visplanes, colormap lighting, sprites clipped by silhouettes, 35 Hz tics, thing state machines, monster AI (look / chase / new chase direction), hitscan with vertical autoaim, sight checks, doors, lifts, lights, sound propagation. The BSP tree is built at load time by `src/Engine/Map/NodeBuilder.php`. - **Content**: original. Monsters (husk, gnasher, spitter, warden), weapons (wrench, sidearm, scattergun, riveter, ion launcher), textures, sky and sounds are generated by code (`tools/make-art.php`, `tools/art/`); the three levels are drawn in text (`assets/maps/*.json`). No file of the original game is used. ```bash bin/jumphp run doom-jumphp # play on the desktop bin/jumphp test doom-jumphp # lint, phpstan, the game tests, the smoke test bin/jumphp build doom-jumphp # browser version -> dist/web bin/jumphp php games/doom-jumphp tools/make-art.php preview # rebuild assets/data/art.pak and assets/sfx ``` Controls: arrows / W S move and turn, A D (or Q D) strafe, Shift run, Ctrl / F / click fire, Space / E use (doors, switches, lifts), 1-5 weapons, Tab map, Escape menu. License: GNU GPL v2 or later (see LICENSE), as a derived work of the GPL engine source.