09 / In development · iPhone
Tank
Raid
Greed is the mechanic.
A native iOS prototype with one job: find out whether a single loop is fun before anything gets built on top of it. Ambush a convoy on a country road, watch the enemy alert climb, and decide how long to stay before running for the extraction zone. That is the whole game, and the point of building it was to learn whether that decision is interesting enough to deserve a game around it.
It is also the first project on this site written entirely by Codex rather than Claude Code — which is why it exists in the ledger on the numbers page with a bar that is one solid colour.

The design document is a list of what I did not build
The repository carries a file called Deliberately excluded. It lists production art and audio, obstacle pathfinding, richer line-of-sight rules, more alert tiers, procedural maps, aircraft, artillery, infantry, weather, day/night, crew and components, ammunition types, upgrades, currency, meta progression, campaign, accounts, analytics, monetization, multiplayer, and achievements.
Every one of those is a thing I wanted to add. The file ends with the rule that makes it useful: do not implement these to compensate for weak core play — change the raid pacing, risk, score pressure, or extraction decision first. A prototype that grows features while its central question is still open has stopped being a prototype and become a project that cannot fail, because there is always one more thing to add instead of one verdict to face.
Unbanked, which is the whole idea
Kill a truck and the score goes up — but it goes up in a box labelled UNBANKED, and it is not yours until you drive back into the green zone on the left. Dying loses it. That single word turns every kill into a question about the next one, and it is why extraction pays a bonus and a multiplier rather than simply ending the run.
The numbers exist to put those two impulses in tension. A truck is 100, the command truck 150, the Panzer 500, and extraction adds 250 against a 1.5× multiplier. The Panzer IV is worth more than the convoy that brought it — so the greedy line and the safe line genuinely disagree, which is the only condition under which a decision is worth making.
Armor is a direction, not a number
A shot resolves against the facing it actually hits. Penetration runs 22% against the front, 70% against the side, and 92% against the rear, so the Panzer is not a health bar to grind down but a geometry problem to solve under time pressure. The turret traverses independently of the hull, and reverse driving was added later precisely so backing out of a bad angle does not mean showing your own rear to do it.
The convoy behaves in a way that makes the geometry matter. Three trucks start unaware and follow the road at 78 points per second; attacked, they accelerate to 142 and run. The Panzer arrives nine seconds after the first attack and reloads every 4.5 seconds against the player’s 3.2 — so the moment the alert goes from LOW to RISING is the moment the map stops being a shooting gallery.
The tests cover the math, and say so
Two test suites cover the parts that have right answers: directional armor and angle calculations, and the control logic underneath tap-to-move. Every constant worth arguing about — speeds, both reloads, ranges, response delay, penetration odds, critical-hit chance, scoring — sits in one Tuning file, because the point of a prototype is to change those numbers quickly and the point of keeping them together is that changing one is a decision rather than a search.
What the tests deliberately do not cover is whether any of it is fun. The repository is explicit that feel, pacing, touch targeting, and outcomes need a physical device and a person. Automated coverage of things that have no correct answer is how a prototype convinces itself it is finished.
The playtest was specified before it was run
The protocol is written down: ten raids without touching balance, recording four moments each — time to first shot, the score at which extraction first becomes tempting, whether the Panzer changes the plan, and how the run ended. The highest-priority observation is named in advance: whether a player who could safely extract after one truck stays for another anyway.
Deciding what would count as evidence before collecting any is the difference between a playtest and a demo. If that one behaviour doesn’t show up, the loop does not work, and no amount of art would have told me.
WHAT IT TAUGHT ME
The hard part of a prototype is not building it — it is keeping it small enough to give you an answer. Everything here is aimed at arriving at a verdict quickly: one authored map, one mechanic, a written list of temptations, tests only where correctness exists, and a playtest whose key question was chosen before the first run. The verdict is still outstanding.