Dungeon.sh
An early spike of a simple dungeon crawler in the style of Eye of the Beholder: first person, stepping along a grid, with a party of four. Just for fun, and a prelude to Undertow.



Why
A short, fun project and a way to learn the genre before attempting the bigger game. A first-person grid crawler is a small enough problem to finish: no physics, no free camera, just a map, a few rules and a lot of atmosphere.
What it does
- Pick a party of four from twelve heroes, then descend from a camp through 63 floors to the bottom. Floors are a mix of hand-drawn levels and seeded generated ones.
- Real-time combat with cooldowns and D&D 5e-lite rules: a d20, advantage, damage types and spells.
- Torches, rations, campfires, crafting, chests, doors, quests and people to talk to, with save and load.
- Keyboard and mouse, or an on-screen d-pad on a touch screen. A small level editor checks that every level can be solved.
- The heroes come from characters I already had on my D&D roster.
Under the hood
- A 320 by 200 canvas drawn by a small raycaster in plain JavaScript, scaled up with hard pixels. Walls, doors and floors are textured, and monsters and people are blocky models drawn by a software rasteriser.
- Almost everything in the 3D view is generated in code: textures from seeded noise, animation poses, sound effects and per-floor music.
- Plain ES modules with no build step, deployed as static files. Game rules, levels, combat and save files are pure functions covered by unit tests.
- A headless bot plays seeded runs to check the balance and prints a win rate. The hero portraits were made with a local image generator.
An early spike for fun, not a finished game. Screenshots are from the current build.