2026-11-05 21:21:12 +01:00
2026-11-05 21:08:33 +01:00
2026-11-05 12:22:20 +01:00
2026-11-03 08:30:49 +01:00
2026-11-05 21:21:12 +01:00

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 and quake. 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.

👑 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/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.

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. 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: https://dungeon.familie-zink.org/. 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.

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 - 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.
  • 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 - © 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 are licensed separately under CC BY 4.0. Details in CREDITS.md.


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

S
Description
No description provided
Readme MIT
351 MiB
0 Stars 1 Watchers 0 Forks
2026-11-07 13:37:02 +01:00
Languages
Rust 48.2%
Logos 46.2%
Python 5%
JavaScript 0.4%
Shell 0.1%