A cramped corridor shooter. First-person raycaster, procedural world art.
Weapon overlays are FPS Gun Sprites by Rekkimaru. Indexed pixel viewmodels stay as a fallback if the sheets fail to load.
Play: https://sullenstudio.github.io/sullen-doom/
| Input | Action |
|---|---|
| WASD / arrows | move |
| mouse | look |
| click / space | fire |
| 1–4 | select a carried weapon |
| Q / E | previous / next carried weapon |
| walk over a drop | ammo, medkit, or a found gun |
| walk through the open gate | next map (gate opens when the map is clear) |
| Phone | left stick + FIRE, drag the view to look |
Best kill count is stored in localStorage. Campaigns start with the pipe
and pistol; shotgun and chaingun drop from killed enemies.
npm install
npm run devnpm install
npm run dev # dev server
npm test # unit tests
npm run build # production build into dist/The renderer draws into a 480-pixel-wide buffer and scales it up, so the
game looks the same on every display. World art is generated from a seed at
startup; first-person guns are the Rekkimaru sheets in public/sprites/guns/.