The accumulated experiment
Each project inherited ideas from the previous one. Tests, responsive layouts, AI tiers, private art handling, installability and safe publishing became a reusable production line.
The laboratory
TGOME grew from one map into a four-map, installable game. Its long revision history established many features reused by the later builds.
The map had a hex that did not exist
Angled photos introduced transcription errors, including a phantom Cnidaria hex at 18,12. Coordinate overlays plus physical-board checks corrected Avenia, Kazan and Cnidaria. Resolution: map data became editable and independently testable.
Twenty-eight cards wanted one engine, not 28 exceptions
Investigate cards looked bespoke, but their effects decomposed into phased actions. Resolution: a generic action pipeline replaced card-by-card control flow.
Two identical AI scores looked like state corruption
Back-to-back 99-point games were suspicious. Seeded runs produced scores from 80 to 145, showing coincidence rather than shared state. Resolution: deterministic seeds became a debugging instrument.
Undo met hidden information
Ordinary undo becomes cheating after a treasure is revealed. Resolution: ruins show a lock and an explicit warning before the irreversible draw.
The sprint
The smallest rulebook did not mean the simplest board. Air paths crossing ground cells made geometry as important as combat logic.
The player aid and rulebook disagreed
A player aid suggested Truck movement 5; the rulebook said maximum 3. Resolution: the authoritative rulebook value won and was pinned by a test.
The board needed an editor before it needed polish
Diagonal and corner flight paths were hard to infer confidently from photos. Resolution: text-based map data plus ?edit and ?debug overlays made uncertainty visible.
A phone sidebar crushed the battlefield
Portrait fold widths still triggered a desktop split layout. Resolution: the phone layout threshold expanded through 1100px portrait width.
Animation vanished during re-render
State updates replaced DOM nodes carrying active effects. Resolution: animation events and render timing gained dedicated test coverage in v0.2.
The forensic build
LOTR demanded the most reconstruction: image-only documents, perspective-heavy card photography, chain symbols and a hidden-information expansion.
The right first move was to stop
The project folder initially had no source material. Rather than invent components from memory, work paused for the scans and photos. Resolution: uncertainty was made explicit before implementation.
Perspective broke automatic card cropping
Cards at different depths did not share one reliable rectangle. Resolution: manual bounding boxes, edge snapping and perspective correction produced all 69 crops.
Duplicate-looking retakes were identified by rules
Artwork alone could not distinguish C3-02, C3-11 and C3-12. Resolution: printed chain symbols and skill costs became the fingerprints.
A patch version exposed a version-test bug
The comparator treated 0.8.1 as equal to 0.8. Resolution: semantic comparison was extended to the patch component.
The mature pipeline
The newest build reused lessons from all three predecessors, then added a complete modular expansion in the same session.
The backs were easier than expected—and one was missing
Front and back photos used matching, non-mirrored grid positions, enabling deterministic pairing. The Fire Eater back was absent but shares the same trailer back as the Juggler. Resolution: reuse the physically identical back.
The browser was slow; the engine was not
Headless self-play appeared to hang while the pure engine completed games in about two seconds. Infinite CSS animation kept virtual time busy. Resolution: shorten browser test budgets and isolate engine performance.
A state mismatch was only bookkeeping
Click-driven UI tests disagreed with direct engine play on one UI-only done flag. Resolution: canonical state comparison excludes presentation bookkeeping.
Full art without publishing the source art
Local builds embed the personal photos; public builds use drawn cards. Resolution: 126 assets are packed into AES-256-GCM-encrypted art.bin, unlocked only by the private fragment key.
What “tokens” and “cost” mean here
The transcripts do not store Cursor billing usage. The token figures are a reproducible text proxy: all visible user and assistant text characters divided by four. They exclude tool results, system context, repeated context and hidden processing, so they are not actual consumption.
All four builds used Claude Opus 5.5. Equivalent cost applies Anthropic’s current Claude Opus 5.5 standard output rate of US$20 per million tokens to that visible-text proxy. The standard input rate is US$4 per million tokens, but the true input/output split is not retained in the transcripts. This is therefore an illustrative output-cost comparison—not a Cursor invoice or a full API-run estimate.
| Game | Token proxy | Output-cost proxy |
|---|---|---|
| TGOME | 91,022 | US$1.82 |
| Gruntz | 12,296 | US$0.25 |
| LOTR Duel | 235,587 | US$4.71 |
| The Bloody Inn | 47,942 | US$0.96 |
| Total | 386,847 | US$7.74 |
Make uncertainty visible.
The strongest fixes were not clever algorithms. They were overlays, seeded runs, canonical comparisons, strict publishers and tests that made a physical ambiguity impossible to ignore.