{"article":{"slug":"brood-war-bench","title":"Brood War Bench","subtitle":null,"summary":"Ben Swerdlow benchmarks Codex, Claude, and Grok agents across 171 StarCraft: Brood War matches—leaderboards, APM, cost per game, and analysis showing none played beyond beginner while Codex Astra led.","content_type":"article","language":"en","canonical_url":"https://bw.swerdlow.dev/report","author":{"name":"Ben Swerdlow","url":"https://twitter.com/benswerd","person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"Ben Swerdlow","url":null,"listing_slug":null,"listing":null},"topics":[{"name":"AI","slug":"ai","url":"https://listedarticles.com/topics/ai"},{"name":"Benchmarks","slug":"benchmarks","url":"https://listedarticles.com/topics/benchmarks"},{"name":"AI Agents","slug":"ai-agents","url":"https://listedarticles.com/topics/ai-agents"},{"name":"Games","slug":"games","url":"https://listedarticles.com/topics/games"}],"about_listings":[{"slug":"freestyle","name":"Freestyle","listing_type":"company","url":"https://listedstartups.com/companies/freestyle"}],"cover_image_url":null,"license":"all-rights-reserved","word_count":2151,"reading_minutes":9,"published_at":"2026-09-19T00:00:00.000Z","added_at":"2026-09-19T21:09:46.410Z","updated_at":"2026-09-19T21:09:46.410Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":false},"profile_url":"https://listedarticles.com/articles/brood-war-bench","markdown_url":"https://listedarticles.com/articles/brood-war-bench.md","example":false,"citation":"Ben Swerdlow, Ben Swerdlow. \"Brood War Bench.\" 19 Sept 2026. https://bw.swerdlow.dev/report (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://bw.swerdlow.dev/report"},"body_markdown":"# Brood War Bench\n\nBy [Ben Swerdlow](<https://twitter.com/benswerd>)\n\nWhich model wins at Brood War?\n\n## Key takeaways\n\n  * None of the models played beyond a beginner level.\n  * Codex Astra is the clear leader beating all other models consistently.\n  * Grok models are not smart enough to play Brood War yet.\n  * 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.\n\nPowered By [Freestyle](<https://www.freestyle.sh/>)\n\n## Leaderboard\n\nRank| System| Wins| Losses| APM| Cost / game| Win rate  \n---|---|---|---|---|---|---  \n🥇| **Codex Astra / xhigh**|  18| 0| 12.6| $10.54| **100.0%**  \n🥈| **Codex Astra / medium**|  16| 2| 17.2| $15.11| **88.9%**  \n🥉| **Claude Fable**|  15| 3| 12.6| $12.24| **83.3%**  \n4| **Codex Astra / low**|  14| 4| 25.7| $21.07| **77.8%**  \n5| **Codex 5.6 Sol / medium**|  13| 5| 10.1| $5.12| **72.2%**  \n6| **Codex 5.6 Sol / low**|  12| 6| 18.1| $9.23| **66.7%**  \n7| **Claude Opus 5**|  12| 6| 10.5| $20.78| **66.7%**  \n8| **Codex 5.6 Sol / xhigh**|  11| 7| 8.0| $3.23| **61.1%**  \n9| **Codex 5.6 Luna / low**|  9| 9| 23.8| $0.42| **50.0%**  \n10| **Codex 5.6 Terra / xhigh**|  9| 9| 15.8| $2.10| **50.0%**  \n11| **Codex 5.6 Terra / medium**|  8| 10| 10.5| $3.15| **44.4%**  \n12| **Codex 5.6 Terra / low**|  8| 10| 48.3| $4.65| **44.4%**  \n13| **Codex 5.6 Luna / xhigh**|  7| 11| 5.2| $0.16| **38.9%**  \n14| **Claude Sonnet**|  7| 11| 6.2| $8.98| **38.9%**  \n15| **Codex 5.6 Luna / medium**|  6| 12| 14.8| $0.30| **33.3%**  \n16| **Grok 4.6 / xhigh**|  2| 15| 2.8| $0.66| **11.1%**  \n17| **Grok 4.6 / medium**|  1| 16| 3.2| $0.79| **5.6%**  \n18| **Claude Haiku**|  0| 16| 0.3| $0.34| **0.0%**  \n19| **Grok 4.6 / low**|  0| 16| 4.2| $1.26| **0.0%**  \n  \nShow all\n\nBrood 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.\n\n## What I observed\n\n01\n\n### Codex found cheese before it found macro\n\nCodex'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.\n\nThe 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.\n\nI 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.\n\nThis 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.\n\nThe 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.\n\nSix Probes cross the mapA Probe first, then Zealots in dripsThe last Command Center runs\n\n02\n\n### Grok spent the game between actions\n\nGrok 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.\n\nThe 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.\n\nForty-three minutes, no army\n\n03\n\n### Fable earnestly tried to play the game\n\nI 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.\n\nIn 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.\n\nFable gets MutalisksFable keeps climbingThe build does not become an army\n\n### No agent here played beyond beginner level\n\nEven 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.\n\nThat 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.\n\n## How the games developed\n\nCompareModelsModel + effortHarnessesRaceAll racesTerranProtossZergGame timeFirst 10 minutesFirst 15 minutesFirst 20 minutesFull games\n\nChoose up to five\n\nCodex AstraClaude FableCodex 5.6 SolClaude Opus 5Codex 5.6 LunaCodex 5.6 TerraClaude SonnetGrok 4.6Claude Haiku\n\n**5:00** / 15:00\n\n### Technology investment\n\nCompleted research + upgrade levels\n\n00.511.520:005:0010:0015:00\n\n __Codex Astra**0.3** __Claude Fable**0.2** __Grok 4.6**0**\n\n### Workers\n\nCompleted workers alive\n\n081624320:005:0010:0015:00\n\n __Codex Astra**14.7** __Claude Fable**16.7** __Grok 4.6**7.4**\n\n### Army size\n\nCompleted army and support units\n\n0204060800:005:0010:0015:00\n\n __Codex Astra**8.3** __Claude Fable**7.6** __Grok 4.6**2**\n\n### Structures\n\nCompleted buildings, including add-ons\n\n071421280:005:0010:0015:00\n\n __Codex Astra**6.2** __Claude Fable**7.4** __Grok 4.6**4.5**\n\n### Minerals in the bank\n\nUnspent minerals, not income\n\n05001,0001,5002,0000:005:0010:0015:00\n\n __Codex Astra**240.6** __Claude Fable**248.6** __Grok 4.6**536.6**\n\n### Gas in the bank\n\nUnspent gas, not income\n\n05001,0001,5002,0000:005:0010:0015:00\n\n __Codex Astra**151** __Claude Fable**326.9** __Grok 4.6**244.5**\n\n### Supply used\n\nIncludes production in progress\n\n03060901200:005:0010:0015:00\n\n __Codex Astra**26.5** __Claude Fable**26.6** __Grok 4.6**11.3**\n\n### When games ended\n\nShare of games ending per 5-minute window\n\nCodex 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\n\nTime-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.\n\n## Win rate vs. cost\n\nLog scaleLinear\n\nAverage cost per game, using the same prices as the leaderboard. Codex and Sonnet costs are token-based estimates.\n\nCodexClaudeGrok\n\nWin rate0%25%50%75%100%$0.1$0.5$1$5$10$20Cost per game (USD, log scale)\n\n## How the benchmark ran\n\nWe 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.\n\n## Head-to-head matrix\n\nRead across a row. W is a win, L is a loss, and T is a match that reached the benchmark time limit.\n\nOpen the full 19 × 19 matrix\n\nW win L loss T time limit G000pending\n\nSystem| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19  \n---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---  \n1**Codex Astra / xhigh**|  -| W| W| W| W| W| W| W| W| W| W| W| W| W| W| W| W| W| W  \n2**Codex Astra / medium**|  L| -| W| W| W| W| W| W| W| W| W| W| L| W| W| W| W| W| W  \n3**Codex Astra / low**|  L| L| -| W| W| W| W| W| W| W| W| W| L| L| W| W| W| W| W  \n4**Codex 5.6 Sol / xhigh**|  L| L| L| -| L| W| W| W| L| W| W| W| L| L| W| W| W| W| W  \n5**Codex 5.6 Sol / medium**|  L| L| L| W| -| W| W| W| L| W| W| W| L| W| W| W| W| W| W  \n6**Codex 5.6 Sol / low**|  L| L| L| L| L| -| W| W| W| W| W| W| W| W| L| W| W| W| W  \n7**Codex 5.6 Luna / xhigh**|  L| L| L| L| L| L| -| W| L| W| L| W| L| L| L| W| W| W| W  \n8**Codex 5.6 Luna / medium**|  L| L| L| L| L| L| L| -| L| L| L| L| L| W| W| W| W| W| W  \n9**Codex 5.6 Luna / low**|  L| L| L| W| W| L| W| W| -| W| L| L| L| L| L| W| W| W| W  \n10**Codex 5.6 Terra / xhigh**|  L| L| L| L| L| L| L| W| L| -| W| W| L| W| W| W| W| W| W  \n11**Codex 5.6 Terra / medium**|  L| L| L| L| L| L| W| W| W| L| -| L| L| L| W| W| W| W| W  \n12**Codex 5.6 Terra / low**|  L| L| L| L| L| L| L| W| W| L| W| -| L| L| W| W| W| W| W  \n13**Claude Fable**|  L| W| W| W| W| L| W| W| W| W| W| W| -| L| W| W| W| W| W  \n14**Claude Opus 5**|  L| L| W| W| L| L| W| L| W| L| W| W| W| -| W| W| W| W| W  \n15**Claude Sonnet**|  L| L| L| L| L| W| W| L| W| L| L| L| L| L| -| W| W| W| W  \n16**Claude Haiku**|  L| L| L| L| L| L| L| L| L| L| L| L| L| L| L| -| L| T| T  \n17**Grok 4.6 / xhigh**|  L| L| L| L| L| L| L| L| L| L| L| L| L| L| L| W| -| W| T  \n18**Grok 4.6 / medium**|  L| L| L| L| L| L| L| L| L| L| L| L| L| L| L| T| L| -| W  \n19**Grok 4.6 / low**|  L| L| L| L| L| L| L| L| L| L| L| L| L| L| L| T| T| L| -  \n  \n## Play your own match\n\nBring your agent and play Brood War with friends.\n\n[Play Brood War](</>)","body_html":"<h1 id=\"brood-war-bench\">Brood War Bench</h1>\n<p>By <a href=\"https://twitter.com/benswerd\" rel=\"nofollow ugc noopener\">Ben Swerdlow</a></p>\n<p>Which model wins at Brood War?</p>\n<h2 id=\"key-takeaways\">Key takeaways</h2>\n<ul><li>None of the models played beyond a beginner level.</li><li>Codex Astra is the clear leader beating all other models consistently.</li><li>Grok models are not smart enough to play Brood War yet.</li><li>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.</li></ul>\n<p>Powered By <a href=\"https://www.freestyle.sh/\" rel=\"nofollow ugc noopener\">Freestyle</a></p>\n<h2 id=\"leaderboard\">Leaderboard</h2>\n<div class=\"table-wrap\"><table><thead><tr><th>Rank</th><th>System</th><th>Wins</th><th>Losses</th><th>APM</th><th>Cost / game</th><th>Win rate</th></tr></thead><tbody><tr><td>🥇</td><td><strong>Codex Astra / xhigh</strong></td><td>18</td><td>0</td><td>12.6</td><td>$10.54</td><td><strong>100.0%</strong></td></tr><tr><td>🥈</td><td><strong>Codex Astra / medium</strong></td><td>16</td><td>2</td><td>17.2</td><td>$15.11</td><td><strong>88.9%</strong></td></tr><tr><td>🥉</td><td><strong>Claude Fable</strong></td><td>15</td><td>3</td><td>12.6</td><td>$12.24</td><td><strong>83.3%</strong></td></tr><tr><td>4</td><td><strong>Codex Astra / low</strong></td><td>14</td><td>4</td><td>25.7</td><td>$21.07</td><td><strong>77.8%</strong></td></tr><tr><td>5</td><td><strong>Codex 5.6 Sol / medium</strong></td><td>13</td><td>5</td><td>10.1</td><td>$5.12</td><td><strong>72.2%</strong></td></tr><tr><td>6</td><td><strong>Codex 5.6 Sol / low</strong></td><td>12</td><td>6</td><td>18.1</td><td>$9.23</td><td><strong>66.7%</strong></td></tr><tr><td>7</td><td><strong>Claude Opus 5</strong></td><td>12</td><td>6</td><td>10.5</td><td>$20.78</td><td><strong>66.7%</strong></td></tr><tr><td>8</td><td><strong>Codex 5.6 Sol / xhigh</strong></td><td>11</td><td>7</td><td>8.0</td><td>$3.23</td><td><strong>61.1%</strong></td></tr><tr><td>9</td><td><strong>Codex 5.6 Luna / low</strong></td><td>9</td><td>9</td><td>23.8</td><td>$0.42</td><td><strong>50.0%</strong></td></tr><tr><td>10</td><td><strong>Codex 5.6 Terra / xhigh</strong></td><td>9</td><td>9</td><td>15.8</td><td>$2.10</td><td><strong>50.0%</strong></td></tr><tr><td>11</td><td><strong>Codex 5.6 Terra / medium</strong></td><td>8</td><td>10</td><td>10.5</td><td>$3.15</td><td><strong>44.4%</strong></td></tr><tr><td>12</td><td><strong>Codex 5.6 Terra / low</strong></td><td>8</td><td>10</td><td>48.3</td><td>$4.65</td><td><strong>44.4%</strong></td></tr><tr><td>13</td><td><strong>Codex 5.6 Luna / xhigh</strong></td><td>7</td><td>11</td><td>5.2</td><td>$0.16</td><td><strong>38.9%</strong></td></tr><tr><td>14</td><td><strong>Claude Sonnet</strong></td><td>7</td><td>11</td><td>6.2</td><td>$8.98</td><td><strong>38.9%</strong></td></tr><tr><td>15</td><td><strong>Codex 5.6 Luna / medium</strong></td><td>6</td><td>12</td><td>14.8</td><td>$0.30</td><td><strong>33.3%</strong></td></tr><tr><td>16</td><td><strong>Grok 4.6 / xhigh</strong></td><td>2</td><td>15</td><td>2.8</td><td>$0.66</td><td><strong>11.1%</strong></td></tr><tr><td>17</td><td><strong>Grok 4.6 / medium</strong></td><td>1</td><td>16</td><td>3.2</td><td>$0.79</td><td><strong>5.6%</strong></td></tr><tr><td>18</td><td><strong>Claude Haiku</strong></td><td>0</td><td>16</td><td>0.3</td><td>$0.34</td><td><strong>0.0%</strong></td></tr><tr><td>19</td><td><strong>Grok 4.6 / low</strong></td><td>0</td><td>16</td><td>4.2</td><td>$1.26</td><td><strong>0.0%</strong></td></tr></tbody></table></div>\n<p>Show all</p>\n<p>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&#39;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.</p>\n<h2 id=\"what-i-observed\">What I observed</h2>\n<p>01</p>\n<h3 id=\"codex-found-cheese-before-it-found-macro\">Codex found cheese before it found macro</h3>\n<p>Codex&#39;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.</p>\n<p>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.</p>\n<p>I also noticed Codex often created separate subagents to manage the economy, army production, and army control. They didn&#39;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.</p>\n<p>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.</p>\n<p>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.</p>\n<p>Six Probes cross the mapA Probe first, then Zealots in dripsThe last Command Center runs</p>\n<p>02</p>\n<h3 id=\"grok-spent-the-game-between-actions\">Grok spent the game between actions</h3>\n<p>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.</p>\n<p>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.</p>\n<p>Forty-three minutes, no army</p>\n<p>03</p>\n<h3 id=\"fable-earnestly-tried-to-play-the-game\">Fable earnestly tried to play the game</h3>\n<p>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.</p>\n<p>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.</p>\n<p>Fable gets MutalisksFable keeps climbingThe build does not become an army</p>\n<h3 id=\"no-agent-here-played-beyond-beginner-level\">No agent here played beyond beginner level</h3>\n<p>Even Astra and Fable were unable to build complex army&#39;s, defend simple attacks or play concrete strategies. A beginner playing photon rush would win every single one of these games.</p>\n<p>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.</p>\n<h2 id=\"how-the-games-developed\">How the games developed</h2>\n<p>CompareModelsModel + effortHarnessesRaceAll racesTerranProtossZergGame timeFirst 10 minutesFirst 15 minutesFirst 20 minutesFull games</p>\n<p>Choose up to five</p>\n<p>Codex AstraClaude FableCodex 5.6 SolClaude Opus 5Codex 5.6 LunaCodex 5.6 TerraClaude SonnetGrok 4.6Claude Haiku</p>\n<p><strong>5:00</strong> / 15:00</p>\n<h3 id=\"technology-investment\">Technology investment</h3>\n<p>Completed research + upgrade levels</p>\n<p>00.511.520:005:0010:0015:00</p>\n<p> __Codex Astra<strong>0.3</strong> __Claude Fable<strong>0.2</strong> __Grok 4.6*<em>0*</em></p>\n<h3 id=\"workers\">Workers</h3>\n<p>Completed workers alive</p>\n<p>081624320:005:0010:0015:00</p>\n<p> __Codex Astra<strong>14.7</strong> __Claude Fable<strong>16.7</strong> __Grok 4.6<strong>7.4</strong></p>\n<h3 id=\"army-size\">Army size</h3>\n<p>Completed army and support units</p>\n<p>0204060800:005:0010:0015:00</p>\n<p> __Codex Astra<strong>8.3</strong> __Claude Fable<strong>7.6</strong> __Grok 4.6*<em>2*</em></p>\n<h3 id=\"structures\">Structures</h3>\n<p>Completed buildings, including add-ons</p>\n<p>071421280:005:0010:0015:00</p>\n<p> __Codex Astra<strong>6.2</strong> __Claude Fable<strong>7.4</strong> __Grok 4.6<strong>4.5</strong></p>\n<h3 id=\"minerals-in-the-bank\">Minerals in the bank</h3>\n<p>Unspent minerals, not income</p>\n<p>05001,0001,5002,0000:005:0010:0015:00</p>\n<p> __Codex Astra<strong>240.6</strong> __Claude Fable<strong>248.6</strong> __Grok 4.6<strong>536.6</strong></p>\n<h3 id=\"gas-in-the-bank\">Gas in the bank</h3>\n<p>Unspent gas, not income</p>\n<p>05001,0001,5002,0000:005:0010:0015:00</p>\n<p> __Codex Astra<strong>151</strong> __Claude Fable<strong>326.9</strong> __Grok 4.6<strong>244.5</strong></p>\n<h3 id=\"supply-used\">Supply used</h3>\n<p>Includes production in progress</p>\n<p>03060901200:005:0010:0015:00</p>\n<p> __Codex Astra<strong>26.5</strong> __Claude Fable<strong>26.6</strong> __Grok 4.6<strong>11.3</strong></p>\n<h3 id=\"when-games-ended\">When games ended</h3>\n<p>Share of games ending per 5-minute window</p>\n<p>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</p>\n<p>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.</p>\n<h2 id=\"win-rate-vs-cost\">Win rate vs. cost</h2>\n<p>Log scaleLinear</p>\n<p>Average cost per game, using the same prices as the leaderboard. Codex and Sonnet costs are token-based estimates.</p>\n<p>CodexClaudeGrok</p>\n<p>Win rate0%25%50%75%100%$0.1$0.5$1$5$10$20Cost per game (USD, log scale)</p>\n<h2 id=\"how-the-benchmark-ran\">How the benchmark ran</h2>\n<p>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&#39; harness logs for each match.</p>\n<h2 id=\"head-to-head-matrix\">Head-to-head matrix</h2>\n<p>Read across a row. W is a win, L is a loss, and T is a match that reached the benchmark time limit.</p>\n<p>Open the full 19 × 19 matrix</p>\n<p>W win L loss T time limit G000pending</p>\n<div class=\"table-wrap\"><table><thead><tr><th>System</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th><th>12</th><th>13</th><th>14</th><th>15</th><th>16</th><th>17</th><th>18</th><th>19</th></tr></thead><tbody><tr><td>1<strong>Codex Astra / xhigh</strong></td><td>-</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>2<strong>Codex Astra / medium</strong></td><td>L</td><td>-</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>3<strong>Codex Astra / low</strong></td><td>L</td><td>L</td><td>-</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>L</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>4<strong>Codex 5.6 Sol / xhigh</strong></td><td>L</td><td>L</td><td>L</td><td>-</td><td>L</td><td>W</td><td>W</td><td>W</td><td>L</td><td>W</td><td>W</td><td>W</td><td>L</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>5<strong>Codex 5.6 Sol / medium</strong></td><td>L</td><td>L</td><td>L</td><td>W</td><td>-</td><td>W</td><td>W</td><td>W</td><td>L</td><td>W</td><td>W</td><td>W</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>6<strong>Codex 5.6 Sol / low</strong></td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>-</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>7<strong>Codex 5.6 Luna / xhigh</strong></td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>-</td><td>W</td><td>L</td><td>W</td><td>L</td><td>W</td><td>L</td><td>L</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>8<strong>Codex 5.6 Luna / medium</strong></td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>-</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>9<strong>Codex 5.6 Luna / low</strong></td><td>L</td><td>L</td><td>L</td><td>W</td><td>W</td><td>L</td><td>W</td><td>W</td><td>-</td><td>W</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>10<strong>Codex 5.6 Terra / xhigh</strong></td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>W</td><td>L</td><td>-</td><td>W</td><td>W</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>11<strong>Codex 5.6 Terra / medium</strong></td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>W</td><td>W</td><td>W</td><td>L</td><td>-</td><td>L</td><td>L</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>12<strong>Codex 5.6 Terra / low</strong></td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>W</td><td>W</td><td>L</td><td>W</td><td>-</td><td>L</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>13<strong>Claude Fable</strong></td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td><td>-</td><td>L</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>14<strong>Claude Opus 5</strong></td><td>L</td><td>L</td><td>W</td><td>W</td><td>L</td><td>L</td><td>W</td><td>L</td><td>W</td><td>L</td><td>W</td><td>W</td><td>W</td><td>-</td><td>W</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>15<strong>Claude Sonnet</strong></td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>W</td><td>W</td><td>L</td><td>W</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>-</td><td>W</td><td>W</td><td>W</td><td>W</td></tr><tr><td>16<strong>Claude Haiku</strong></td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>-</td><td>L</td><td>T</td><td>T</td></tr><tr><td>17<strong>Grok 4.6 / xhigh</strong></td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>W</td><td>-</td><td>W</td><td>T</td></tr><tr><td>18<strong>Grok 4.6 / medium</strong></td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>T</td><td>L</td><td>-</td><td>W</td></tr><tr><td>19<strong>Grok 4.6 / low</strong></td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>L</td><td>T</td><td>T</td><td>L</td><td>-</td></tr></tbody></table></div>\n<h2 id=\"play-your-own-match\">Play your own match</h2>\n<p>Bring your agent and play Brood War with friends.</p>\n<p><a href=\"/\">Play Brood War</a></p>","headings":[{"level":1,"text":"Brood War Bench","id":"brood-war-bench"},{"level":2,"text":"Key takeaways","id":"key-takeaways"},{"level":2,"text":"Leaderboard","id":"leaderboard"},{"level":2,"text":"What I observed","id":"what-i-observed"},{"level":3,"text":"Codex found cheese before it found macro","id":"codex-found-cheese-before-it-found-macro"},{"level":3,"text":"Grok spent the game between actions","id":"grok-spent-the-game-between-actions"},{"level":3,"text":"Fable earnestly tried to play the game","id":"fable-earnestly-tried-to-play-the-game"},{"level":3,"text":"No agent here played beyond beginner level","id":"no-agent-here-played-beyond-beginner-level"},{"level":2,"text":"How the games developed","id":"how-the-games-developed"},{"level":3,"text":"Technology investment","id":"technology-investment"},{"level":3,"text":"Workers","id":"workers"},{"level":3,"text":"Army size","id":"army-size"},{"level":3,"text":"Structures","id":"structures"},{"level":3,"text":"Minerals in the bank","id":"minerals-in-the-bank"},{"level":3,"text":"Gas in the bank","id":"gas-in-the-bank"},{"level":3,"text":"Supply used","id":"supply-used"},{"level":3,"text":"When games ended","id":"when-games-ended"},{"level":2,"text":"Win rate vs. cost","id":"win-rate-vs-cost"},{"level":2,"text":"How the benchmark ran","id":"how-the-benchmark-ran"},{"level":2,"text":"Head-to-head matrix","id":"head-to-head-matrix"},{"level":2,"text":"Play your own match","id":"play-your-own-match"}]}}