// case study
We left an agent swarm alone for 14 hours. It built a playable Godot game.
Chess-2 is a real-time strategy reimagining of chess on a 12x8 board. The autonomous run produced a playable milestone with two asymmetric factions, a gold economy, spawning, auto-combat, leveling, an AI opponent, UI screens, and 123 passing unit tests.
Source material was copied from the complete Chess-2 milestone archive into this sanitized web page. Excerpts shown here were screened for personal paths, account details, API keys, private hostnames, and other personal identifiers.
// what happened
A playable game milestone, built without human code edits.
At 11:03 PM on May 22, 2026, the swarm was pointed at a game design document. By 1:24 PM the next day, it had built Chess-2: a playable Godot 4 project with a typed scene graph, autoloads, GDScript systems, GUT tests, and a final harness QA pass.
The agents did not chat with each other directly. They coordinated through the shared repository, a task dependency graph, broadcast claims, validation results, and an AGENT_KNOWLEDGE.md file that accumulated project-specific lessons.
This was not a polished release. The final QA agent found a real gameplay bug: the game-over condition could trigger while the King was still alive. That finding is part of the case study because it is exactly the kind of signal the system should surface.
// why this is different
Not a toy script. A Godot 4 project with engine-native failure modes.
Most public autonomous game-building demos use Python or browser games. Chess-2 was built in Godot 4 GDScript, where agents had to handle scenes, autoload singletons, headless GUT tests, signal wiring, typed arrays, resource references, and validation scripts.
Self-healing graph
Validation failures spawned bug tasks and reparented downstream dependents so broken work blocked the chain until repaired.
Shared memory
Agents wrote Godot gotchas to AGENT_KNOWLEDGE.md, and later agents avoided those same errors.
Harness QA
The final QA agent launched the game, read live state over TCP, and found a premature game-over bug.
Faction-selection screen from the preserved Chess-2 artifacts.
Gameplay state with units, resources, spawn zones, and enemy bases visible.
Task graph animation from the Chess-2 run, cropped to remove empty vertical space.
// broadcast log excerpt
The coordination transcript reads like a flight recorder.
The surviving milestone archive preserves enough broadcast and agent context to reconstruct the run. This excerpt is copied and sanitized from the writeup; it contains internal task IDs and timestamps, but no personal paths, accounts, keys, or private infrastructure details.
[2026-05-22 23:03 | chess-2-t01-5338] US-001 complete: board, camera, unit selection all working. 13/13 GUT tests pass. Key fix: Unit extends Node2D, duck-typing for class_name workaround. [2026-05-23 09:49 | integration-chess-2-1779543659] Integration complete: game runs with 19 units, gold income works, 23/23 GUT tests pass. No fixes needed - all features wired correctly. [2026-05-23 10:14 | task-05ca0dc9219f] chess-2-t02 complete: 13 Faction A GUT tests written, 47/47 pass. All acceptance criteria verified. Downstream tasks unblocked. [2026-05-23 10:16 | chess-2-t05-5342] US-005: implementing unit spawning from spawn zones. Files claimed: spawn zone manager, spawn menu, spawn feedback, main scene patches. [2026-05-23 11:45 | chess-2-t07-5344] Complete: unit leveling - 84/84 GUT pass. Key: use unit_level var, not "level"; add_xp subtracts the current level threshold each loop. [2026-05-23 13:24 | qa-auto-chess-2-1779554431] [QA FINDING] elapsed_seconds=11, game_over_triggered=true, but King is alive at 200/200 HP. Premature game over. Blocks all gameplay testing.
// agent knowledge
The agents wrote a knowledge base for each other.
Every agent started by reading accumulated project knowledge. At the end of its task, it could append structural facts it discovered: file locations, API patterns, engine quirks, test conventions, and gotchas.
By the end of the run, the knowledge file included six Godot 4 behaviors discovered through failure. Examples included class_name conflicts with autoload singletons, standalone lambda parse errors in GUT tests, typed array type-loss through Dictionary.get(), and Rect2.ZERO not existing in Godot 4.
// limitations
The honest version: it built the milestone, and QA still found a bug.
Chess-2 is not a finished game. The visuals are simple geometric pieces, the AI is basic, some intended design scope is missing, and the final QA pass found a premature game-over bug. The important result is not that the game was ready to ship. It is that the swarm produced a playable, engine-native milestone, tested it, repaired itself through multiple failure chains, and surfaced a real gameplay defect without human code edits.
// next
Read the system docs or run the controller locally.
The same controller that ran this case study can be configured against your own workspace and provider keys. ShrimpHub is early software for technical users, so keep projects under version control and review the agent output.