A Nethack-inspired roguelike playable in any browser. No install required.
Built with React 18 + TypeScript + Vite. Pure ASCII rendering via CSS monospace grid. All engine logic hand-rolled — no external game libraries.
yarn install
yarn devOpen http://localhost:5173 in your browser.
Descend 26 dungeon levels, grab the Amulet of Yendor on depth 26, then ascend back to depth 1 to win. Death is permanent.
| Key | Action |
|---|---|
h/j/k/l |
Move W/S/N/E |
y/u/b/n |
Move diagonals |
| Arrow keys | Move cardinal |
| Numpad | Full 8-direction movement |
. |
Wait |
, |
Pick up item |
i |
Inventory |
d → letter |
Drop item |
e → letter |
Equip item |
u → letter |
Use item |
t → letter → cursor → Enter |
Throw item |
z → number |
Cast spell (Wizard only) |
> / < |
Descend / ascend stairs |
S |
Save and quit |
? |
Help screen |
| Class | Str | Dex | HP | Special |
|---|---|---|---|---|
| Fighter | 16 | 12 | 14 | +2 melee damage (scales with level) |
| Wizard | 10 | 12 | 8 | Spells, MP pool, wand bonus |
| Rogue | 12 | 16 | 10 | Backstab ×2 vs unseen monsters |
- Procedural BSP dungeon generation across 26 depths
- Recursive shadowcast FOV with explored-tile memory
- 25 monster types with AI (aggressive, patrol, guard, passive, flee)
- 61 item types — weapons, armor, potions, scrolls, wands, rings, amulets, food
- Randomized unknown item names per playthrough (identification system)
- Hunger system with 6 states
- Shop rooms on certain levels
- Permadeath with localStorage high score table (top 10)
- Save on quit via localStorage
yarn buildOutput in dist/. Fully static — deploy anywhere.