What it is
A small dungeon crawl demo: one level, a four-hero party, doors that open and close, monsters that come for you, and a stairway down that something is standing in front of. Movement is on a grid the way the old Westwood crawlers did it — you step forward a whole square, and turning is its own action, which is what makes a corridor feel like a corridor.
No asset files
There are no PNGs, no sprite sheets and no sound files anywhere in the project. Every wall texture, monster sprite, item icon, hero portrait and sound effect is drawn or synthesised at runtime — the textures as procedural pixel art on a canvas, the audio through WebAudio. The whole game is seven files and 84 KB, and three.js itself arrives from a CDN through an import map, so there is nothing to compile and nothing to bundle.
The level is an ASCII map. Editing the dungeon means editing a block of text in
src/level.js and reloading the page.
Controls
| Key | Action |
|---|---|
| W A S D | Step forward, strafe, step back |
| Q E or ← → | Turn |
| Space | Open or close the door ahead |
| 1 2 3 4 | Attack with each hero |
| H | Drink a healing potion |
| Click a portrait | Open that hero's character sheet (Esc closes it) |
There is also an on-screen movement pad, so it plays on a phone.
How it's put together
index.html,style.css— the page shell and the stone HUDsrc/level.js— the ASCII map, its legend and the parsersrc/textures.js— procedural pixel art for walls, doors, monsters, items and portraitssrc/audio.js— WebAudio sound effectssrc/main.js— world building, grid movement, doors, monsters, combat and the HUD
Running it yourself
ES modules need to be served over HTTP rather than opened from disk, so from the project folder:
python3 -m http.server 8137
Then open http://localhost:8137.