Portfolio — real-time strategy In development
MISTMARCH
a castle-economy RTS where every run is a fresh map you reveal tile by tile
In development — playable prototype, solo project since July 2026. Real-time strategy · Castle economy · Roguelike runs · Godot 4 / C# · PC (Windows). All images are from a development build; nothing on this page is from a public release.
What it is
Mistmarch is a real-time strategy game in the Stronghold lineage — a keep, workers, production chains, taxes and mood — set inside a roguelike run. Each run opens on one square of a 5×5 map. You reveal neighbours one by one, and what you uncover decides your next twenty minutes: open land to farm, a bandit camp to break, or worse. Unrevealed ground is fog in the literal sense — nothing paths into it, nothing builds on it. Today the economy, reveal grid, enemy camps, recruitment and a complete save-and-resume door are built and played. The deterministic simulation runs headless at twenty ticks a second, and more than a thousand tests guard it. Combat encounters are the next milestone.
How the game is built
-
01
Content is data
Tiles, biomes, buildings, units and recipes are JSON packs validated by a schema check; a content error names its file and field on screen instead of loading a broken world.
-
02
The sim runs blind
A deterministic tick simulation with no engine dependency — twenty ticks a second, headless — so the whole game can be proven without a window open.
-
03
Presentation only draws
The Godot scene reads the sim and never writes game state; the camera, the fog and the HUD are consumers of one truth.
-
04
Units are rendered, not modelled live
Rigged 3D units with animation clips are rendered to sprite sheets by a pipeline that proves every clip is alive before it ships; pose sharing keeps 400 units on screen above 140 fps.
-
05
Every proof is broken on purpose
Each test is sabotaged at least once to show it can go red; a smoke harness boots the real game, pushes real keys and reads the result; CI judges every pushed commit.
Mistmarch started from a simple observation: the castle-economy RTS is a great twenty-minute loop that its own genre buries under two-hour matches. A roguelike frame fixes the length without touching the loop. One map per run, a keep on one square, a boss somewhere on the grid, and a reveal mechanic that makes exploration a decision rather than a scroll — reveal the wrong neighbour and a bandit camp is awake before your granary is. The economy underneath is deliberately classical: workers walk, hoppers fill, bread needs wheat needs a mill, taxes buy loyalty and lose it. Nothing abstract stands between a decision and its consequence.
The hardest technical problem so far was not pathfinding or fog; it was trust. The simulation is deterministic and folded into a hash, seven “golden” scenarios pin that hash across every commit, and any change that moves one must say why. That discipline caught the project’s most instructive bug: the save system passed every headless test, every scripted boot and a full smoke run — and never saved a single real session. Every proof had entered through a scripted boot the game treats as automation and refuses to write for; the one code path a human actually runs had never been executed by a test. The fix was small. The lesson was structural: a proof that calls the mechanism directly never touches the wiring a player uses. The smoke harness now boots the game exactly as the developer does — no arguments, a real key press, a real quit — and reads the file that results.
The other pillar is honesty at the boundary. The game never silently loses a run. A save it cannot read is kept on disk and refused by name — this tile type, this building, this content pack changed — and the refusal is re-checked on every boot in case the content comes back. The HUD never encodes a state in colour alone; every state carries a shape mark, so the game reads the same under colour-vision deficiency. And a boot that produces no world says why on screen rather than showing a black map with dashes.
More than a thousand headless tests guard the sim — and every one of them has been made to fail on purpose at least once. A test that has never been red is decoration.
Feature highlights
-
Reveal grid
A 5×5 map uncovered one neighbour at a time; fog is impassable, unbuildable and unregistered, so the shape of your territory is the shape of your defence.
-
Castle economy
Wood, stone, iron, bread, meat, apples and ale through walking workers, hoppers and coverage buildings, with a tax slider and a mood that answers it.
-
Enemy camps encounters planned
Bandit encampments on the grid with their own buildings and units; break them or they break you. Full combat encounters — attack groups, midboss, boss siege — are the next milestone.
-
Recruitment and squads
A barracks that turns population into soldiers, squads on digit keys, and a workshop that lets you choose what it makes.
-
Save and resume, honestly
One run, one file, written on quit and by autosave; a run the game cannot read is kept, named and forgiven, never deleted.
-
Card-driven runs planned
Rewards drafted between tiles that modify any stat through a universal modifier pipeline — the pipeline exists; the cards do not yet.
Where it stands
Current milestone: playable prototype — economy, reveal grid, enemy camps, recruitment and a complete save/resume door, all played by hand.
Next milestone planned: encounters and combat — attack groups on reveal, a midboss, the map’s boss siege.
Built solo since July 2026 with a multi-agent Claude workflow — a planner, an executor and an art instance — under a written engineering canon and a round-by-round audit trail.
Screens
-
VillageThe first minutes of a run: the keep, the free first stockpile, granary and woodcutter, and workers walking the hauls that make the economy visible. -
RevealThe map from above — revealed squares in the clear, the fog edge where nothing paths or builds, and the tile map panel showing what the run has uncovered so far. -
CampA bandit encampment revealed on a neighbouring square: its own buildings and guards, and the player's squad formed up on a digit key at the edge of revealed ground. -
WorkshopThe bottom bar with a Workshop selected — the recipe picker choosing between bows and spears, the kingdom's resources, tax and mood in the vitals column.
Tech stack
- Godot 4 (.NET) · C#
- Headless deterministic tick sim, golden-hash scenarios
- JSON content packs + schema validator
- xUnit (1,000+ headless tests) · booted smoke harness · sabotage discipline
- GitHub Actions, four gates per commit (build, tests, schema, smoke) · Git LFS
- Rigged 3D units → sprite sheets · CC0 / licensed kits · colour-vision-safe mark rule
- Python close/verification scripts · per-run engine logs
- Claude (multi-agent: planner, executor, art) with a written engineering canon
- Windows PC export pipeline planned
Play it
In development — no public build yet
Unit animation clips are Adobe Mixamo; building and prop kits from Quaternius (CC0) and CraftPix (licensed). Godot is MIT-licensed.