Zero Handwritten Lines: Claude Code Built This Godot Tower Defense in 5 Days
The verification loop is what separates this from AI demos that compile but fall apart on device; frame capture and smoke runs are the only way an agent catches runtime crashes and visual regressions. It also maps real Godot constraints for mini-game targets that any developer shipping to WeChat or Douyin will hit: a 20MB total package cap, 4MB main package, no system fonts, and mandatory iOS high-performance mode.
Claude Code produced every one of Holy Light Defense's 8,408 GDScript lines across 77 files, with 573 test functions, in five days. The developer handled requirements, playtesting, decisions, and account operations like QR logins. The result is a vertical tower defense targeting Steam and WeChat mini-games, packaged at 13.84MB with AI-generated art and code-synthesized audio.
Day one locked two things down. The AI asked four scoping questions before writing: usage, art sourcing, tower defense form, and first-playable size. The answers set copyright rules that banned existing game names from code, data, art, and image prompts, and delivered a fully completable level by the close of day one. On the platform side, the AI found Douyin's official Godot SDK only supports 4.5, WeChat relies on community export templates with nothing official, and mini-game package caps force Godot itself into a subpackage.
The load-bearing infrastructure was a make-based verification toolchain: make test runs 573 unit tests headless; make lint escalates GDScript warnings to errors because Godot's CLI hides warnings by default; make smoke plays a level at 8x speed and fails on any runtime error; make frames captures 91 PNGs per playthrough so the AI visually checks character placement, overflow, and occlusion. When an exported build crashed because a startup optimization cleared an array, the packaging step was amended to auto-play a level from the built binary and check the exit code.
The four pre-coding questions did more architectural work than the engine choice; they bounded copyright, the art pipeline, and the day-one deliverable, which is why five days of generation stayed on track.
Platform constraints, not code quality, drove the architecture: vertical orientation, font bundling, and subpackage placement for the engine itself all trace back to mini-game platform rules.
Frame capture and smoke runs substitute for human visual testing, and they caught real failures a compile would not: a loading hang on a device, a black iPhone screen, and an array cleared only after export.
Every AI stumble got converted into a permanent regression check, which explains how the test count tripled over five days without a single handwritten line.