Brood War Bench
By Ben Swerdlow
Which model wins at Brood War?
Key takeaways
- None of the models played beyond a beginner level.
- Codex Astra is the clear leader beating all other models consistently.
- Grok models are not smart enough to play Brood War yet.
- Older models tended to play the RTS as a turn-based game, leading them to get destroyed while they were thinking. Newer models sometimes fell into the same trap, which may explain why some lower-effort settings performed better, but overall were much more cognizant of the cost of thinking.
Powered By Freestyle
Leaderboard
| Rank | System | Wins | Losses | APM | Cost / game | Win rate |
|---|---|---|---|---|---|---|
| 🥇 | Codex Astra / xhigh | 18 | 0 | 12.6 | $10.54 | 100.0% |
| 🥈 | Codex Astra / medium | 16 | 2 | 17.2 | $15.11 | 88.9% |
| 🥉 | Claude Fable | 15 | 3 | 12.6 | $12.24 | 83.3% |
| 4 | Codex Astra / low | 14 | 4 | 25.7 | $21.07 | 77.8% |
| 5 | Codex 5.6 Sol / medium | 13 | 5 | 10.1 | $5.12 | 72.2% |
| 6 | Codex 5.6 Sol / low | 12 | 6 | 18.1 | $9.23 | 66.7% |
| 7 | Claude Opus 5 | 12 | 6 | 10.5 | $20.78 | 66.7% |
| 8 | Codex 5.6 Sol / xhigh | 11 | 7 | 8.0 | $3.23 | 61.1% |
| 9 | Codex 5.6 Luna / low | 9 | 9 | 23.8 | $0.42 | 50.0% |
| 10 | Codex 5.6 Terra / xhigh | 9 | 9 | 15.8 | $2.10 | 50.0% |
| 11 | Codex 5.6 Terra / medium | 8 | 10 | 10.5 | $3.15 | 44.4% |
| 12 | Codex 5.6 Terra / low | 8 | 10 | 48.3 | $4.65 | 44.4% |
| 13 | Codex 5.6 Luna / xhigh | 7 | 11 | 5.2 | $0.16 | 38.9% |
| 14 | Claude Sonnet | 7 | 11 | 6.2 | $8.98 | 38.9% |
| 15 | Codex 5.6 Luna / medium | 6 | 12 | 14.8 | $0.30 | 33.3% |
| 16 | Grok 4.6 / xhigh | 2 | 15 | 2.8 | $0.66 | 11.1% |
| 17 | Grok 4.6 / medium | 1 | 16 | 3.2 | $0.79 | 5.6% |
| 18 | Claude Haiku | 0 | 16 | 0.3 | $0.34 | 0.0% |
| 19 | Grok 4.6 / low | 0 | 16 | 4.2 | $1.26 | 0.0% |
Show all
Brood War Bench started after I built a version of Brood War that you could only play through agents as an experiment to play with friends. I played it with a couple friends who did surprisingly well for people who have only played a couple Starcraft games in their lives. When I asked them why, they said they hadn't done much, they asked their agent to attack and it had built a small army and done the full attack for them. This lead me to wonder how far they can go on their own; this is my answer.
What I observed
01
Codex found cheese before it found macro
Codex's strongest recurring idea was disruption. In Protoss games it often sent a Probe across the map to attack workers or buildings. This worked shockingly well as the opposing agents often spent dozens of seconds thinking about what to do about a probe instead of doing anything else.
The same systems were much weaker at sustained production. They delayed tech, trickled one or two basic units into defended bases, and threw workers into last stands.
I also noticed Codex often created separate subagents to manage the economy, army production, and army control. They didn't communicate much with one another, so the army agent often sent each new unit straight into an attack, unaware of the larger army the other agents were planning to build.
This is a common beginner mistake: sending units in one at a time instead of waiting for a critical mass and a planned attack timing. In games where I helped direct Codex, it was much better at planning those moments and getting its subagents to work together.
The persistence was real. In G009, after losing its army and main base, Codex 5.6 Terra / medium lifted its last Command Center and moved it toward the opposite corner. It survived for another six minutes.
Six Probes cross the mapA Probe first, then Zealots in dripsThe last Command Center runs
02
Grok spent the game between actions
Grok 4.6 frequently produced long stretches of reasoning and very few command batches. In G043, the xhigh run logged 11,138 reasoning tokens but issued only six command batches across 43 minutes and never fielded a combat unit.
The actions it did take rarely developed into a working control loop. In G003, Grok / xhigh made three Marines and never reached the enemy base. In G002, Grok / medium made two Zealots and also never crossed the map. These looked less like bad strategies than failures to keep observing and acting.
Forty-three minutes, no army
03
Fable earnestly tried to play the game
I found myself rooting for Claude Fable in more than a few games. Fable usually tried to build an economy and climb the tech tree instead of stopping at the first unit available. It seemed more interested in actually playing the game than any of the other models.
In G007 it reached a Lair, Spire, and Mutalisks and won. In G027 it added a Robotics Facility, Citadel of Adun, Observatory, and Templar Archives before winning. Ambition did not guarantee execution: in G036 Fable reached a Factory and Academy but Opus 5 overran it.
Fable gets MutalisksFable keeps climbingThe build does not become an army
No agent here played beyond beginner level
Even Astra and Fable were unable to build complex army's, defend simple attacks or play concrete strategies. A beginner playing photon rush would win every single one of these games.
That said, watching the agents play made me more excited than I have been in a while. This benchmark is nowhere near exhausted. There is much more for the agents to learn, and much more for the benchmark to ask them to do. I look forward to watching them get there.
How the games developed
CompareModelsModel + effortHarnessesRaceAll racesTerranProtossZergGame timeFirst 10 minutesFirst 15 minutesFirst 20 minutesFull games
Choose up to five
Codex AstraClaude FableCodex 5.6 SolClaude Opus 5Codex 5.6 LunaCodex 5.6 TerraClaude SonnetGrok 4.6Claude Haiku
5:00 / 15:00
Technology investment
Completed research + upgrade levels
00.511.520:005:0010:0015:00
__Codex Astra0.3 __Claude Fable0.2 __Grok 4.6*0*
Workers
Completed workers alive
081624320:005:0010:0015:00
__Codex Astra14.7 __Claude Fable16.7 __Grok 4.67.4
Army size
Completed army and support units
0204060800:005:0010:0015:00
__Codex Astra8.3 __Claude Fable7.6 __Grok 4.6*2*
Structures
Completed buildings, including add-ons
071421280:005:0010:0015:00
__Codex Astra6.2 __Claude Fable7.4 __Grok 4.64.5
Minerals in the bank
Unspent minerals, not income
05001,0001,5002,0000:005:0010:0015:00
__Codex Astra240.6 __Claude Fable248.6 __Grok 4.6536.6
Gas in the bank
Unspent gas, not income
05001,0001,5002,0000:005:0010:0015:00
__Codex Astra151 __Claude Fable326.9 __Grok 4.6244.5
Supply used
Includes production in progress
03060901200:005:0010:0015:00
__Codex Astra26.5 __Claude Fable26.6 __Grok 4.611.3
When games ended
Share of games ending per 5-minute window
Codex Astra: median 8:10. 0:00 to before 5:00: 3.9%; 5:00 to before 10:00: 54.9%; 10:00 to before 15:00: 31.4%; 15:00 to before 20:00: 5.9%; 25:00 to before 30:00: 2%; 30:00 to before 35:00: 2%. Claude Fable: median 10:37. 5:00 to before 10:00: 38.9%; 10:00 to before 15:00: 38.9%; 15:00 to before 20:00: 22.2%. Grok 4.6: median 9:15. 0:00 to before 5:00: 2%; 5:00 to before 10:00: 51%; 10:00 to before 15:00: 23.5%; 15:00 to before 20:00: 13.7%; 20:00 to before 25:00: 2%; 40:00 to before 45:00: 7.8%.Codex AstraMedian 8:1060%Codex Astra: 3.9% (2 games) ended from 0:00 to before 5:00Codex Astra: 54.9% (28 games) ended from 5:00 to before 10:00Codex Astra: 31.4% (16 games) ended from 10:00 to before 15:00Codex Astra: 5.9% (3 games) ended from 15:00 to before 20:00Codex Astra: 0% (0 games) ended from 20:00 to before 25:00Codex Astra: 2% (1 games) ended from 25:00 to before 30:00Codex Astra: 2% (1 games) ended from 30:00 to before 35:00Codex Astra: 0% (0 games) ended from 35:00 to before 40:00Codex Astra: 0% (0 games) ended from 40:00 to before 45:00Claude FableMedian 10:3760%Claude Fable: 0% (0 games) ended from 0:00 to before 5:00Claude Fable: 38.9% (7 games) ended from 5:00 to before 10:00Claude Fable: 38.9% (7 games) ended from 10:00 to before 15:00Claude Fable: 22.2% (4 games) ended from 15:00 to before 20:00Claude Fable: 0% (0 games) ended from 20:00 to before 25:00Claude Fable: 0% (0 games) ended from 25:00 to before 30:00Claude Fable: 0% (0 games) ended from 30:00 to before 35:00Claude Fable: 0% (0 games) ended from 35:00 to before 40:00Claude Fable: 0% (0 games) ended from 40:00 to before 45:00Grok 4.6Median 9:1560%Grok 4.6: 2% (1 games) ended from 0:00 to before 5:00Grok 4.6: 51% (26 games) ended from 5:00 to before 10:00Grok 4.6: 23.5% (12 games) ended from 10:00 to before 15:00Grok 4.6: 13.7% (7 games) ended from 15:00 to before 20:00Grok 4.6: 2% (1 games) ended from 20:00 to before 25:00Grok 4.6: 0% (0 games) ended from 25:00 to before 30:00Grok 4.6: 0% (0 games) ended from 30:00 to before 35:00Grok 4.6: 0% (0 games) ended from 35:00 to before 40:00Grok 4.6: 7.8% (4 games) ended from 40:00 to before 45:000:0015:0030:0045:00
Time-series charts show means of recorded player-runs at each game time. Finished games drop out; missing samples are not filled. Models pool their effort settings. Units and buildings count only once completed; army excludes workers, Overlords, eggs, larvae, and ammunition.
Win rate vs. cost
Log scaleLinear
Average cost per game, using the same prices as the leaderboard. Codex and Sonnet costs are token-based estimates.
CodexClaudeGrok
Win rate0%25%50%75%100%$0.1$0.5$1$5$10$20Cost per game (USD, log scale)
How the benchmark ran
We built a round-robin matrix of model and effort configurations and had every configuration play every other. The harness ran those matchups in parallel across Freestyle VMs, saving game-engine data and both agents' harness logs for each match.
Head-to-head matrix
Read across a row. W is a win, L is a loss, and T is a match that reached the benchmark time limit.
Open the full 19 × 19 matrix
W win L loss T time limit G000pending
| System | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1Codex Astra / xhigh | - | W | W | W | W | W | W | W | W | W | W | W | W | W | W | W | W | W | W |
| 2Codex Astra / medium | L | - | W | W | W | W | W | W | W | W | W | W | L | W | W | W | W | W | W |
| 3Codex Astra / low | L | L | - | W | W | W | W | W | W | W | W | W | L | L | W | W | W | W | W |
| 4Codex 5.6 Sol / xhigh | L | L | L | - | L | W | W | W | L | W | W | W | L | L | W | W | W | W | W |
| 5Codex 5.6 Sol / medium | L | L | L | W | - | W | W | W | L | W | W | W | L | W | W | W | W | W | W |
| 6Codex 5.6 Sol / low | L | L | L | L | L | - | W | W | W | W | W | W | W | W | L | W | W | W | W |
| 7Codex 5.6 Luna / xhigh | L | L | L | L | L | L | - | W | L | W | L | W | L | L | L | W | W | W | W |
| 8Codex 5.6 Luna / medium | L | L | L | L | L | L | L | - | L | L | L | L | L | W | W | W | W | W | W |
| 9Codex 5.6 Luna / low | L | L | L | W | W | L | W | W | - | W | L | L | L | L | L | W | W | W | W |
| 10Codex 5.6 Terra / xhigh | L | L | L | L | L | L | L | W | L | - | W | W | L | W | W | W | W | W | W |
| 11Codex 5.6 Terra / medium | L | L | L | L | L | L | W | W | W | L | - | L | L | L | W | W | W | W | W |
| 12Codex 5.6 Terra / low | L | L | L | L | L | L | L | W | W | L | W | - | L | L | W | W | W | W | W |
| 13Claude Fable | L | W | W | W | W | L | W | W | W | W | W | W | - | L | W | W | W | W | W |
| 14Claude Opus 5 | L | L | W | W | L | L | W | L | W | L | W | W | W | - | W | W | W | W | W |
| 15Claude Sonnet | L | L | L | L | L | W | W | L | W | L | L | L | L | L | - | W | W | W | W |
| 16Claude Haiku | L | L | L | L | L | L | L | L | L | L | L | L | L | L | L | - | L | T | T |
| 17Grok 4.6 / xhigh | L | L | L | L | L | L | L | L | L | L | L | L | L | L | L | W | - | W | T |
| 18Grok 4.6 / medium | L | L | L | L | L | L | L | L | L | L | L | L | L | L | L | T | L | - | W |
| 19Grok 4.6 / low | L | L | L | L | L | L | L | L | L | L | L | L | L | L | L | T | T | L | - |
Play your own match
Bring your agent and play Brood War with friends.