Touch: tap the on-screen d-pad to step and fight (bump a monster to attack), tap the centre dot to wait a turn; tap a lit tile to walk there, stopping if a monster appears; the big action button grabs, descends or fires depending on where you stand; tap BAG for the satchel, tap the speaker to mute; tap to start and to play again · Keyboard: Arrow keys / WASD / HJKL to move and attack; . or Space to wait; > to descend or grab the core; F to fire a ranged weapon; I or Tab for the satchel; number keys to use an item; M to mute; Esc to step back. Mouse: click a lit tile to travel there. On the title: 1/2/3 pick a class, N rerolls the seed, Enter plays; on game over, Enter delves again.
About:
A compact turn-based dungeon crawl, made in-house for Leetdom in the spirit of the classic bump-to-fight roguelikes. You hold the only lanthorn in the dark, so you can only see what its light reaches; the rest of each floor is remembered in cold grey or swallowed in black until you walk it.
Everything is a turn. Nothing moves until you do, so every step is a decision you get to think about. Combat is fully transparent: step toward a monster and the game shows your hit chance and the damage band before you commit, worked out from your accuracy against its evasion, so a fight is a bet you can read rather than a dice roll you hope on. Monsters sleep until they see your light, which turns the dark into cover and lets you pick where a fight happens.
Three ways to delve, each a different hand to play. The Warden is tough and heavy-handed, trading footwork for raw staying power and soaking hits other builds can't. The Scout is light and evasive and fights from a step away with thrown blades, winning by never standing where the blow lands. The Adept is a frail glass cannon who fights at range with an emberbolt wand and reads the dark well, lethal from afar but ruined by a single mistake up close.
The satchel is a gamble. Potions and scrolls look different every seed, a Rose potion in one run is a Fogged vial in the next, and the only way to learn what they do is to drink or read one. Quaff an unknown potion when you're cornered and it might heal you or might be the thing that kills you; that tension is the game. Weapons, armour and rings identify on use and reshape your build as you find them.
Runs are short and seeded. Enter a number and two players get the exact same dungeon, monsters and item colours, so a hard floor can be shared, raced or re-attempted instead of being lost forever. Eight floors down lies the core; claim it and climb back to the surface to win. All the art is drawn on a canvas and all the sound is synthesised in code, with no image or audio files at all.
Credits:
Made by Leetdom, 2026. Written for Leetdom, and it lives here.
Phone check: 2026-10-03: built and tested by the 98-build-r0 build agent. A node verifier (test/verify.js) checks 120 generated floors for full connectivity (every floor tile, item, stair and the core reachable), asserts combat hit-chance and damage stay within their stated bounds, confirms the engine is deterministic (same seed replays identically across 3 runs), and runs a greedy solver over 60 seeds per class that charges monsters and dives: all three classes win some runs and lose some (warden 60%, scout 18%, adept 26% at the solver's skill), 11021 checks with 0 failures. Real CDP input via playwright-core on system chromium (serialised behind a lock): a 390x844 portrait phone and an 844x390 landscape phone with touch (tap DELVE to start, d-pad steps the player, the action button advances a turn, satchel opens and closes, mute toggles), and a 1280x800 desktop with keyboard and mouse (class select, arrow/WASD movement, click-to-travel, bag, a real play-through driven to death, one-key retry into a fresh run, tab-hidden pause and resume, resize refit to 820x1180, and a run with localStorage throwing). Zero console errors, zero page errors and no network requests in any run. Screenshots inspected by the agent for both phone orientations and desktop (title, play, satchel, game over, retry, resized); a title help line that overran 390px and a d-pad whose right and bottom arrows clipped the screen edge were both fixed and re-verified, and the message log now truncates with an ellipsis instead of running off-screen. Audio rendered offline and measured: true silence between effects, music sits well under the effects, peak below 0 dBFS, no harsh high-frequency content and no single sound left droning. 2026-10-03: independent server2 QA PASS (engine verifier 11021/0, phone portrait + landscape touch, desktop keyboard/mouse, blocked storage, hidden-tab pause, audio peak -3.9 dBFS with music 14.4 dB under SFX). Published by the Pi fleet the same day and re-checked on production: /games/lanthorn returns 200 with zero console errors and no external requests; real CDP touch on a 390x844 phone (portrait, in-page and full screen) and an 844x390 phone (landscape, full screen) steps, waits, opens and closes the satchel and toggles mute; desktop 1280x800 mouse and keyboard work in-page and in full screen; the Full screen button refits the canvas (332x590 to 390x844, 478x850 to 1280x800). Production fixes: the keyboard never reached the game inside the leetdom iframe (canvas now takes focus on tap), the title screen overlapped itself on short landscape screens (now a two-column layout), and the satchel's equipped-gear line was clipped off its left edge.
Rate this game:
One vote per game each month.
Play next:
Robo DanceA rhythm-meets-tactics puzzle: plan your little robot's moves beat by beat, then hit Execute and watch everything on the board dance at once.
Arena ChampionTrain an arena contender through twelve turn-based duels. Read your rival's next move, parry quick cuts, smash guards, step out of reach of heavy blows, and win the crowd on the way to the laurel.
Beacon SiegeEscort a fragile beacon through eight dark arenas. Shove the swarm back with knockback pulses, flick a lance to skewer the dangerous ones, and drop traps to hold the line until the light reaches the gate.
Beetle ParadeA line of beetles is marching down a garden trail toward the burrow. Flick beetles into the line from your snail; three of a colour scuttle off, and the gaps snap shut into chain reactions.