DungeonCraft - the soul core

DungeonCraft

Dig. Build. Defend. Conquer.
An evil little dungeon game for the browser - in glorious pixels, in 3D, for free.

Rust WebAssembly Made with Claude Code Made with qwen3.8-flash-next-iq3xxs and Strata in OpenCode MIT License 18 languages

โ–ถ Play now - open it in your browser, or download the standalone file on the title screen
Bestiary ยท Run your own server ยท Design notes

The title screen: the endless battle between a lava river and an underground river

--- ## Wake up, master. Yes, you. Don't look around, there's nobody else down here - just you, four imps and me, old **Crookfinger**. A hundred years ago the Order of the Lightwatch smashed your soul core into shards and carried them off like trophies. They polished their boots, sang songs about the sun and forgot about you. **Big mistake.** Your heart still beats. Hear that? *Lub-dub. Lub-dub.* That's the sound of a grudge. So pick up the pickaxe - well, point at the rock, the imps carry the pickaxes - and let's dig ourselves a realm. Gold is in the walls, creatures are waiting behind the portal, and the knights... the knights are about to have a very bad century.

The beating crystal heart, the demon gate and the dark towers
Your heart, master, held in chains on its obsidian throne. And the demon gate. I polished it myself.

## What awaits you down here **๐Ÿ•ณ Dig your realm.** Mark the rock and your imps dig, claim the ground, carry gold, gems and diamonds to the treasury and hang torches on the walls. Up to five imps help each other with one job. Every tile you claim is *yours*. **๐Ÿฐ Build rooms that bring the right guests.** A lair and a mushroom garden open the portal. A library brings shadow mages, a training hall stone ogres, a temple the flame priestess, an aerie giant bats, gargoyles, arcane owls - and maybe, one day, an **ember wyrm**. Fourteen rooms in total, from the forge to the sacrifice altar. **๐Ÿ‘น Keep them happy, or they leave.** Every creature wants a bed, food and its wage on payday - and it walks to the treasury to fetch it. Each has a favourite room, and some of them simply cannot stand each other. Put a mage next to an ogre and watch the fur fly. (Nobody dies. Probably.) **โš” Train them into legends.** Ten ranks from Recruit to Warlord, with chevrons, bars and stars - and gear that grows with them, up to golden armour, a crown and a halo. With the level come abilities: the ogre learns to *stomp*, the mage to *step through shadows*, the chainbreaker to spin like a *whirlwind*.

A battle on a tongue of rock between lava and water
The knights brought a bridge. How thoughtful. Now they're bringing it back, one piece at a time.

**๐Ÿ”ฅ Defend with towers, traps and doors.** Arrow spires, hellmouth cannons and dark spires on the walls. In the **forge** your creatures build spike pits, poison vents, fire jets, stone rollers, alarm bells, rune mines and frost glows - and doors of wood, iron and magic. Lock them, and nobody gets through. Not even the giant. Well. Not for a while. **โœจ Cast nasty spells.** Lightning, healing, seer's eye, cave-in, haste, stoneskin, gold rain, invisibility, plague, quake and frost. Your scholars **research** them in the library - one discovery after another. **๐ŸŒซ Explore the dark.** Everything beyond your walls is black until your creatures go there. Somewhere out there: a cave of neutral **dwarves** guarding gold and gems - and sometimes a chest with the plans of a dwarven **rune forge tower**. Islands in lava rivers. Mana springs. Creatures in chains, waiting to be freed.

The forge with coglings and every kind of trap and door Prison, graveyard, arena, altar and guard posts
Left: the forge and its little coglings. Right: prison, graveyard, arena, guard posts and the altar. Cosy.

**๐ŸŒณ Up into the daylight.** Some maps reach the surface: grass, birds, sunshine - disgusting - and forests your imps fell for **wood**, the second resource (down below only the odd giant mushroom gives some). Wood builds bridges and wooden doors. Raise walls again where you dug too much, burn the knights' wooden bridges, pull up your **drawbridges** when they come, freeze lava into obsidian to cross it - and roll **battering rams and catapults** out of your forge to break a fortress in the forest.

The cliff between the dungeon and a sunny forest above ground A raised drawbridge, a lowered one, and obsidian on a lava river
Left: the world up there. Too bright. Right: a drawbridge up, a drawbridge down, and lava that thinks it is a floor.

**๐Ÿ† Champions and trophies.** Every fifth wave a champion of the Order leads the knights - Sir Aldric, Dame Seraphine, Brother Halvard or Captain Rothgar, each with a trick of his own and loot for whoever brings him down. After every game a chart shows how it went, and 64 achievements wait - some of them secret, all of them petty. **๐Ÿ‘‘ Other masters want your realm, too.** Mossgrim the Mouldy (green, smells like a wet cellar) and Lady Nightwell (blue, writes threatening letters on scented paper) dig their own dungeons in free play and in the campaign. And the humans attack *everybody*. Let them bite each other first. **๐Ÿ“œ A campaign of thirty missions.** Take back the shards of your soul core - from the first little outpost by the border brook to the citadel of Grand Master Valerian Brightshield. Rivers, fortresses, treasure islands, sealed caves, rival masters, and me, telling you the story. With tea.

A dwarf cave with a rune chest The start of a game in the fog of war
A dwarf cave, master. Nice dwarves. Don't go too close. - And this is where every game begins: in the dark.

Lava lights up the dungeon, torches on stands in a big hall
Lava glows ten tiles wide, master, and my imps put torches on stands where the walls are too far away.

## Build your own campaigns > *You want to torment heroes your own way? Fine. The* **campaign editor** *is right in the title menu - in the same > graphics as the game, no tools needed.*

The campaign graph: missions as cards, linked by next missions and branches The map editor on the 3D map with the zone tool
Triggers of a mission: zone entered, line crossed, zone claimed, ... The block editor with message, objective, variable and spawn blocks

- **Campaign graph**: missions as cards; drag arrows for the next mission and for branches (another goal reached first leads elsewhere). Save as a file, online, and publish for every player on the server. - **Maps**: a random map rolled once per run of the campaign, or a painted one - start from the generator and paint ground, rooms, veins, the core, portals, the hero gate, units, towers, traps, knight fortresses and rival masters, with brush, rectangle, fill, mirroring and undo. Trigger zones are drawn right on the map. - **Scripts as blocks**, no code: a start script, victory and defeat checks, a clock, and triggers - zone entered or left, line crossed, zone claimed or dug, units in a zone, timers, a unit or tower falls, values, rooms, spells, slaps, research. Problems are marked red while you build. - **Test play** right from the editor, with the trigger log and the variables on screen; **co-op** for editor campaigns. *Open the demo* in the editor shows every trigger at work. Details: [docs/CAMPAIGN_EDITOR.md](docs/CAMPAIGN_EDITOR.md), [docs/MISSION_SCRIPTING.md](docs/MISSION_SCRIPTING.md). ## Together - **Versus** for 2-4 masters, with teams, gold for allies and fallen masters watching the rest of the match. - **Co-op**: the 20-mission campaign *League against the Lightwatch*, the built-in missions or any editor campaign, each master with an own dungeon; empty seats are played by the AI. Hero waves march on the strongest master. - **Offline with an AI partner**: every co-op mission also runs without the server - the partner builds his own dungeon, follows your attack flag and helps out with gold. Interrupted runs go on with *Continue*. Details: [docs/MULTIPLAYER.md](docs/MULTIPLAYER.md).

The Match page with the co-op league and the AI partner The language dropdown with pixel flags for 18 languages

## Meet the household

Pit imp Kobold Cave spider Shadow mage Stone ogre Jailer Flame priestess Cogling Revenant Giant bat Chain gargoyle Arcane owl Ember wyrm Chainbreaker

> *Fourteen kinds of wonderful creatures, master, and eight kinds of humans in shiny tin. I wrote everything down for > you - who loves what, who hates whom, who learns what - in* **[Crookfinger's Bestiary](BESTIARY.md)**. > *The same book is in the game, by the way - on the title screen and in the pause menu.* ## How to play 1. **Open the game online**: . It runs on desktop and on phones (touch controls switch on by themselves). Logged-in players can download the whole game as one HTML file from the title screen (*Download Standalone*); it then runs offline, and downloaded savegame files load there too. 2. Or **run your own server** with Docker - with user accounts, savegames on the server and the game as an installable app: see **[INSTALL.md](INSTALL.md)**. **The basics, master:** | | | |---|---| | Left click / drag | use the tool - dig, build rooms (drag a rectangle), cast, place towers and traps | | Right click | drop what your hand holds (creatures, prisoners - or a sacrifice on the altar) | | Shift + click | slap your own creatures (faster for a while) or punch a hero | | Right drag, WASD, screen edge | move the camera ยท middle drag, Q/E, R/F: rotate and tilt ยท wheel: zoom | | Esc | pause menu: save, load, settings, bestiary | On phones: tap to use a tool, drag to mark or move, two fingers to zoom and turn, long press for information. ## Under the hood - **Rust**, compiled to **WebAssembly**, with [macroquad](https://github.com/not-fl3/macroquad) - one small module, no engine, no plugins. - A real 3D isometric world in pixel art: chunked meshes, flickering point lights, a glow pass, particles, billboard sprites with eight viewing directions, every frame of it drawn by code - **no image files** except the font. - Procedural chiptune soundtrack as FastTracker 2 modules with its own XM replayer and synthesised sound effects: 47 pieces around one leitmotif - in the dungeon dark and minor, above ground bright, with flute, harp, birdsong and wind; the music follows the camera between the two worlds. - A tiny Rust savegame server (axum, Argon2 passwords) - optional; without it the game uses savegame files. - 18 languages: German, English, Spanish, Portuguese, Dutch, Danish, Norwegian, Swedish, Finnish, Russian, Croatian, Hungarian, Serbian, Romanian, Slovak, Czech, Italian and Greek โ€“ chosen from a dropdown with pixel flags; another language is one text file away. ## Made with Claude Code

Claude Code mark  DungeonCraft was developed with the help of Claude Code, Anthropic's AI coding assistant - the code, the graphics, the music, the texts and this page. Claude, Claude Code and Anthropic are trademarks of Anthropic; the pixel mark only credits the tool.


## Made with qwen3.8-flash-next-iq3xxs, Strata and OpenCode Parts of DungeonCraft were also developed with the language model qwen3.8-flash-next-iq3xxs, run with Strata in OpenCode. Qwen and OpenCode are trademarks of their respective owners; the pixel marks on the title screen only credit the tools. ## License DungeonCraft is released under the **[MIT License](LICENSE)** - ยฉ 2026 Richard Zink. It covers the code, the generated music in `assets/music/` and the procedural graphics. The **Dinowyde** and **DINOBYTE** fonts (`assets/dinowyde_1x.png`, `assets/dbyte_1x.png`) by [mby](https://mby.itch.io/) are licensed separately under **CC BY 4.0**. Details in [CREDITS.md](CREDITS.md). ---

"The underworld is yours, master. Now - tea?"
- Crookfinger