IanCSS
← Work

Relic Sweeper: how far can a disciplined agent workflow go?

A logic puzzle game for Android and iOS, built with Claude Code as the main pair of hands. Eight regions, a museum to fill, a shared daily board, and a small backend of its own.

Engine
Godot 4.7, GDScript
Platforms
Android, iOS
Languages
English, Dutch
Backend
Cloudflare Worker, D1 (EU)
levels proven solvable
96
specified tasks finished
84
automated tests
2,124
commits in the repository
242
The game

A Minesweeper-style logic puzzle with an archaeology theme. You clear dig sites tile by tile, and safe tiles can hold relic fragments that complete exhibits in your own museum. Win or lose, you keep what you found.

The interesting parts

No guessing, proven by a solver

Every expedition board is checked by a solver that only uses logic. Its seed is searched in advance and stored. A golden test over 66 boards protects the solver from any change in behaviour, even when it is being made faster.

A core with no hidden inputs

Game rules never read the clock or the random generator. They receive the time and a seed as parameters, so every rule can be tested exactly, and the shared daily board is the same on every phone.

Vendors behind interfaces

Ads, purchases, notifications and game services each sit behind one interface, with a mock for tests and an adapter for the real SDK. The game builds and runs without any of them.

Analytics I can defend

Off unless the player opts in. Events go to my own Cloudflare Worker, stored in the EU without IP addresses. The test suite fails if an event is sent that the documentation does not list.

How it was built

Each piece started as a written task with acceptance criteria. An agent implemented it test-first and could not call it done until the full suite passed. A separate reviewer agent checked each milestone. Everything a test cannot judge, like whether it feels good, stayed with me.

The full story and lessons learned

Privacy policy