All projects

Idle Dungeon Crawler

A browser idle RPG: hand-drawn pixel heroes auto-crawl an endless procedural dungeon while you program their tactics. Built by directing AI coding agents.

Idle Dungeon Crawler box art

A browser idle RPG: a party of hand-drawn pixel heroes auto-crawls an endless procedural dungeon while you manage the village and program each hero's behavior with a priority-ordered trigger→action tactics language. Built as an experiment in how far you can take a project by directing AI coding agents.

Stack

TypeScript (strict) · Bun (runtime, bundler, test runner) · React 19 · Canvas 2D · Zustand · Cloudflare Pages + D1 (anonymous telemetry). No Vite, Node, or Jest; no external art assets.

Engineering highlights

  • Pure, deterministic simulation core — seeded RNG only, a fixed 10 Hz tick, zero Math.random/Date.now/DOM. Pinned by golden-seed hash tests and a save/load-equivalence test; a purity test fails any PR that breaches the boundary.
  • Content-as-JSON pipeline — monsters, items, and palette-indexed pixel sprites are JSON, compiled to typed modules by a validating codegen step (grid sizes, palette chars, reference integrity, spawn coverage).
  • Layered architecture — pure sim ← read-only Canvas renderer ← app loop & command queue ← React UI; the UI mutates state only through commands at tick boundaries.
  • ~153 automated tests, a headless balance-simulation harness, and one-feature PR-per-slice delivery with continuous deploy.

Scope

18 classes (four with bespoke resource meters) · 12 gods with a favor system and rare “divine manifestation” events · 16 races · a morale system · personality traits that drive both dialogue and mechanics · a procedural dungeon with bosses, elites, events, and per-hero loot.

Built by

Orchestrating AI agents (Claude Code), including multi-agent workflows for parallel content authoring and a deterministic-sim architecture that kept the AI-driven changes provably safe.

Curious how it was built? Read the full write-up →