Dekiro Dev Blog
Golden hour in the town square of Sanctuary Vale: a sprite fighter with a polearm, townsfolk and the glowing Sanctuary Shard

Dekiro: Sanctuary of Shadows

A hack-and-slash ARPG in the style of a classic Korean MMO, made by one developer, built with AI.

The Dev Blog

How do you build a grindy martial-arts ARPG when one person directs and an AI writes every line of code? This blog follows Dekiro: Sanctuary of Shadows system by system: the data, the multiplayer, the tests, the art pipeline, the music, the dungeons, the story and the balance, with the numbers, the code and the mistakes left in.

28 articles, about 4.7 hours of reading. They are written to be read in order, but most stand on their own.

Start with part 1 The 8-post route About the game

All articles, in reading order

  1. Part 1Short route Building a Grindy Martial-Arts ARPG with an AI Developer One person directs, an AI writes the code, and a rulebook (CLAUDE.md) keeps both of them honest. Six days, 199 commits, and what the human actually decides. 9 min read
  2. Part 2 Skills, Items and Loot as Data Twenty-four skills, 203 items and a +9 upgrade track, with almost none of it hard-coded; gold that had to move from XP to level; glow that became sparks. 8 min read
  3. Part 3 Server-Authoritative Multiplayer in Godot, Single Player Included Four network roles, one spawn function, interest management, dedicated servers, Steam, a bot that plays the game, and what never goes over the network. 8 min read
  4. Part 4Short route Testing a Game with 13,800 Checks Headless tests that loop over data, why the check count lies, the white-wall shader bug no headless test could see, and a combat simulation. 11 min read
  5. Part 5 Everything from Code: 177 Monsters, 203 Items and a Town Built in Headless Blender Every model comes from a Python script; the first batch looked like wooden "Pinocchio dolls". 7 min read
  6. Part 6Short route From Open World to Torii Portals, and Nine Maps with One Town Each A seamless continent switched off after nine hours, a hand sketch turned into a map, shrunk by two thirds, and every map rebuilt around one town. 11 min read
  7. Part 7 From 20 fps to 144, and a GPU Heap That Ran Out: Performance on Big Maps Animation LOD, proximity spawning, chunking, a cache that never hit, a D3D12 descriptor heap, two thousand crates on one material, and VRAM budgets in tests. 10 min read
  8. Part 8Short route Chasing the Valheim Look, and Leaving It for HD-2D Pixel texels, leaf cards, grass trails, cloud shadows; then why every surface but the grass was redrawn in the style of a pixel sprite. 10 min read
  9. Part 9 Composing Original Music in Python: Thirty Tracks, One Motif Karplus-Strong strings, a reverb made of noise, seamless loops, BS.1770 loudness, a motif from the first village that returns in the final raid, and synthesized sound effects. 8 min read
  10. Part 10 A Stardew-Style Fishing Minigame in a Server-Authoritative ARPG A reflex minigame on the client, the outcome on the server, and an autopilot to test it. 5 min read
  11. Part 11Short route From One AI Session to a Team: Coordinator and Subagents 70 subagents in three days, what broke when four of them shared one repository, and the rules that came out of it. 10 min read
  12. Part 12Short route HD-2D on a Budget: Rendering 3D Characters into 8-Direction Palette Sprites Six 3D drafts rejected; a Blender data pass, a palette post step, runtime school dyes and hair colours, NPC outfits, and a VRAM budget. 10 min read
  13. Part 13Short route Twenty Dungeons from One Generator: Sequence Graphs, ASCII Rooms and Solvers That Say No Specs as sequence graphs, ASCII rooms, A* corridors, six kinds of labyrinth, and solvers that refuse unsolvable seeds. 10 min read
  14. Part 14 A Story That Unfolds with Your Level: Murim Lore for a Grind Game Murim lore that explains the game's systems, a 25-quest main line, NPCs who change their lines, 58 tablets, and a finale we don't spoil. 9 min read
  15. Part 15Short route Balancing a 40-Hour Grind Before Anyone Plays It A Monte Carlo career model and a combat sim with dodging bots found a 15-hour game where nothing could hurt you. Charts included. 10 min read
  16. Part 16 Making a Generated World Feel Lived In: Clutter, Houses, Cats and Townsfolk Clutter placed as vignettes by rules, houses with character, named cats you can pet, 66 townsfolk with routines, no network traffic. 7 min read
  17. Part 17 The Fullmoon Weapons: an Old-School +9 Gamble, and Three Steps That Never Fail An old-school +9 gamble with its own currency, a 1000-fragment certain road, and an awakening that never fails on purpose. 8 min read
  18. Part 18Short route The First Playtest: Forty Notes and What Each One Became One long message after an evening of play, ten parallel agents, and what each note became: numbers in a JSON file, real work, or a question back to the developer. 16 min read
  19. Part 19 Taking a PC ARPG to iPhone and Android Sizes in millimetres, a notch the HUD has to dodge, a second finger Godot doesn't see, an APK built on Windows and an iPhone build that still needs a Mac. 15 min read
  20. Part 20Short route Multiplayer Bugs Only a Friend Can Find A friend sinks into the hills and can't pick anything up, the host freezes when someone takes a portal, Steam fails with a cryptic error: six bugs that needed a second player. 12 min read
  21. Part 21 Making an Empty Desert Worth Crossing Three quarters of the map with 3% of the monsters, and six reasons to cross it anyway: a sandstorm that leaves caches, Sunstone, roaming bosses, a caravan on a timetable, lore tablets and a tomb you need a key for. 14 min read
  22. Part 22 Bots That Play for Balance Bots with level-typical gear fight every zone, Elite and boss in the real game, headless, stepping out of telegraphs. What they found, and how "I don't feel so powerful" changed the low levels. 13 min read
  23. Part 23 Weather That Fights Back Heat, cold, cult rituals, shifting lava, diving drakes, demon portals and a growing shade, all run by the server from one data file, with warnings that drape over the hills. 11 min read
  24. Part 24 A Tavern, Named Hens and Cats: The Small Stuff 88 more townsfolk on the roads, a tavern for the Bierlinger Tribe, seven named hens you can't pet, and a route checker that found 120 people walking through walls. 9 min read
  25. Part 25 Every Platform from One Windows PC Seven export presets, the JSON that silently didn't ship, a universal ad-hoc-signed Mac app with Steam, Linux checked in WSL, and testing builds with --main-pack. 10 min read
  26. Part 26 Baking the Minimap: Top-Down Renders of the Real World The minimap knew the data, not the world. Now Godot photographs each map from above and a Python step turns it into a map you can find your way with. 9 min read
  27. Part 27 A Dev Blog in the Game's Style The game's 9-slice textures as CSS border-image, a pixel font subset to a few kilobytes, WebP with fallbacks, generated social cards, Tufte-style sidenotes, and a link checker. 9 min read
  28. Part 28Short route Mastery Past the Cap: Ten Grandmaster Ranks, a Hidden Rank, and the Soul Jade A skill used to stop at Grandmaster. Now it climbs ten more ranks on a jade that bosses drop by chance, and above the tenth waits a rank the game never mentions until you reach it. 12 min read

The 8-post route · 121 min

Short on time? These eight cover the whole story: the way of working, the tests, the maps, the look, the team of agents, the sprites, the dungeons and the balance.

  1. 01Building a Grindy Martial-Arts ARPG with an AI Developer9 min
  2. 04Testing a Game with 13,800 Checks11 min
  3. 06From Open World to Torii Portals, and Nine Maps with One Town Each11 min
  4. 08Chasing the Valheim Look, and Leaving It for HD-2D10 min
  5. 11From One AI Session to a Team: Coordinator and Subagents10 min
  6. 12HD-2D on a Budget: Rendering 3D Characters into 8-Direction Palette Sprites10 min
  7. 13Twenty Dungeons from One Generator: Sequence Graphs, ASCII Rooms and Solvers That Say No10 min
  8. 15Balancing a 40-Hour Grind Before Anyone Plays It10 min
  9. 18The First Playtest: Forty Notes and What Each One Became16 min
  10. 20Multiplayer Bugs Only a Friend Can Find12 min
  11. 28Mastery Past the Cap: Ten Grandmaster Ranks, a Hidden Rank, and the Soul Jade12 min

Pairs that read well back to back: 7 and 8 (performance budget, then spending it), 8 and 12 (why the look changed, then how the sprites work), 13 and 14 (dungeons, then the story that sends you into them), 15 and 17 (the balance model, then the item it was hardest to balance).