"How we built a playable s&box game in a day with AI agents"
You want a repeatable way to ship a playable s&box prototype fast with AI agents — without merge chaos, fake "green" builds, or feel-tuning by guesswork.
Long agent sessions fail when everyone edits the same files, when dotnet build is treated as ship-ready, and when feel bugs are fixed without data. The pattern that works: one strong planner/reviewer, many executors on disjoint ownership, instrument → diagnose → dial.
Division of labor
| Role | Owns |
|---|---|
| Planner / reviewer (strongest model) | Telemetry reading, root-cause diagnosis, precise agent specs, post-land review, small surgical fixes (1–20 lines), merge + final builds |
| Correctness agents | Physics/movement, animation/rig lanes, level math — feel-critical work |
| Mechanical agents | New self-contained components, documented constant swaps, UI panels, well-spec'd features |
Agent spec anatomy (lands green)
- Mandatory prep — exact files + gotcha sections to read first.
- Verbatim player feedback as acceptance criteria.
- Explicit file ownership — "Files you own / Do NOT touch" — parallel agents get disjoint sets; contested files serialize (agent-file-ownership-discipline).
- House rules restated — units conversion,
StartedSolid, dials in a Tuning class, no unsound bone writes, etc. - Verify clause —
dotnet buildin scope; foreign errors are not yours — report, don't fix; plus a whitelist sweep (dotnet-build-vs-whitelist). - Return format — diagnosis-before-fix, consts changed, deviations one-lined, HANDOFF notes for lines in files they can't touch.
Feel-tuning loop
- Player plays → reports feel.
- Read tagged telemetry from the engine console log (state transitions, stuck events, gait/facing lines — build what you need).
- Diagnose from data. Missing data → next task is INSTRUMENT first; never stack sign-guesses.
- Spec agent → land → reviewer pass → build → player restarts.
Reviewer hunts (every land)
- Feedback loops in transform code (read what you wrote last frame).
- Degenerate vector math (near-parallel crosses, damping ⊥ velocity).
- Colliders vs
WorldScale(capsule/model hulls don't follow scale). - Two systems on one input button.
- Missing state→clip mappings.
Concurrent-session traps
- "Everything broke" → stale-assembly-hotload first.
- Explicit git paths only — never
git add -Aduring multi-agent waves. - After ~3 stacked patches on one hot file → consolidate into one ordered pipeline, don't add a sixth patch.
- Interrupt recovery: resume agents with partial-write context when expensive; relaunch only when context is junk.
Art/AI mesh delivery is a separate pipeline — see ai-generated-models. Keep secrets (API tokens) out of the public repo.
Planning quality bounds execution quality; disjoint ownership removes merge thrash; telemetry turns feel arguments into dial changes; explicit whitelist/stale-assembly checks close the verification gaps that make agent waves look productive while the running game is lying.