A first-person, grid-based dungeon crawler
Descend into a procedurally generated dungeon lit by nothing but the torch in your hand. Every floor is larger, darker, and deadlier than the last β and the black ahead of you always holds a little dread.
How deep can you get?
Written from scratch in C# + hand-written OpenGL 4.1. No asset files β every texture, sound, and note is generated in code.
A single flickering torch point-light drives all shading over bump-mapped stonework, with camera-facing sprites and smoothly tweened grid movement.
Classic grid-based crawling. Combat is as direct as it gets β bump into a monster to attack it. Rats and bats haunt the upper floors; slimes and skeletons wait below. Every enemy you don't put down steps toward you.
Spend a point-buy budget across Strength, Dexterity, Vitality, and Luck. Your class β Warrior, Rogue, Guardian, or Trickster β is auto-assigned from your strongest stat, each with a passive edge.
A dozen-plus interactive pickups: blades and whetstones, shields, torch oil, healing herbs, an hourglass that freezes every enemy, boots of haste, fire scrolls, and maps that reveal the whole floor.
No asset files anywhere. Sound effects are synthesized at startup by a tiny software synth, and every level composes its own music β seeded by depth, rendered on a background thread so the descent never hitches.
Torch-lit line-of-sight means the dark ahead is genuinely dark. A minimap fills in as you explore, and the stonework shifts palette the deeper you go.
Fall in battle and spend your gold to revive right where you dropped β or roll a fresh hero and start the descent over. Auto-saves every floor; pick Continue to resume your exact run.
Distribute a shared point-buy budget across four attributes β or reroll for a random spread. Everything is previewed live as you spend.
Attack damage β sets your min/max hit.
Dodge chance β % to negate an incoming hit.
Raw health β your maximum HP.
Critical hits (double damage) and better loot.
Grab a build below, or run it from source with dotnet run -c Release.
macOS: the app is unsigned β right-click β Open the first time. Windows: unzip and run the executable.