archive by month
Skip to content

AIIDE 2023 - Steamhammer is submitted

Steamhammer is submitted for AIIDE 2023. You bring the futile hopes, I’ll bring the lurker spines.

It was kind of a scramble this year, though. Yesterday when I did what was supposed to be the final round of major tests, I turned up 3 critical bugs, 2 in new features and 1 left over from who knows when, hidden from view because the opponent model learned to avoid playing into it. As I stayed up late last night frantically debugging, a cricket got into the house—into the same room—and started talking loudly with its friends outside. Not entirely relaxing! But I got up early in the morning and finished fixing everything, and ran more tests, and packed it up, and ran the did-I-pack-it-up-correctly checks and tests, and now it’s on its way.

Last year, Steamhammer scored about 8% against BananaBrain, which finished first. BananaBrain has improved since then, but I expect to score substantially higher against it this year. Well, I could have missed further bugs, but there was no sign of it in what I had time for. My very last test game was against BananaBrain. It was hard-fought and went to late game, and zerg lost narrowly. Steamhammer managed to parasite every shuttle, and plague a lot of armies.

Next: Fixing the blog comments is my first priority. Then I’ll release Steamhammer and write up its changes.

BananaBrain-Steamhammer game

To fill the dead air while I try to fix the absurdly undiagnosable comment bug, here’s a game I was pleased with.

Steamhammer - BananaBrain on Python was played not long ago. (Here’s the replay.) BananaBrain held the initiative for most of the game, and broke into the zerg natural at one point, but never destroyed a completed zerg base. The game has plague, parasite, and broodling.

Steamhammer’s favorite strategy is to overrun you in the late game. Even strong opponents lose if they let the strategy play out.

AIIDE 2022 - what BananaBrain learned


BananaBrain added more fields to its game records this year. I had to update my parsing code. I haven’t investigated what the new data is.


#2 stardust

openinggameswinsfirstlast
10/12gate7958%14221
10/12gatedt838%19153
12nexus20%1095
2gatedtexpo540%736
2gatereaver333%1133
3gaterobo20%9144
3gatespeedzeal540%038
4gategoon5060%3163
9/9gate1747%20172
9/9proxygate2050%18187
nzcore20%17145
zcore20%16146
zcorez540%439
zzcore2250%1394
14 openings22252%
enemygameswins
1gatecore1020%
2gate1164%
2gatefast933%
4gategoon17852%
unknown1471%
5 openings22252%


Last year, BananaBrain resorted to proxy gates against Stardust, and even that did not help much. This year it preferred the same build that Stardust likes, and apparently it was able to fight it straight up.


#3 dragon

openinggameswinsfirstlast
10/12gate11882%7221
28nexus250%132133
32nexus944%0109
9/9gate9276%3130
9/9proxygate10%131131
5 openings22277%
enemygameswins
1fac10269%
2rax10%
fastexpand2100%
unknown11785%
4 openings22277%


BananaBrain was able to tell what Dragon was doing less than half the time. It didn’t seem to matter much, because the answer was usually two gates.


#4 steamhammer

openinggameswinsfirstlast
10/12gate7589%147221
1basespeedzeal10%8383
2basespeedzeal4791%3682
5gategoon367%136138
9/9gate786%2733
9/9proxygate4691%90135
bisu475%2326
sairdt888%139146
sairgoon2391%022
sairreaver683%8489
stove250%3435
11 openings22289%
enemygameswins
10hatch5494%
12hatch10383%
12pool3100%
4/5pool9100%
9pool18100%
9poolspeed5100%
overpool2396%
unknown757%
8 openings22289%


Steamhammer was opposite Dragon in this way: BananaBrain was almost always able to diagnose its opening build, but in the rare when it could not it had some trouble. The impression is that BananaBrain’s reactions were successful but also necessary. Maybe Steamhammer needs to learn how to block its ramp with a drone....


#5 purplewave

openinggameswinsfirstlast
10/12gate10%22
10/12gatedt10%2626
12nexus10%3636
2gatedtexpo12372%8177
2gatereaver250%3738
3gaterobo10%2727
3gatespeedzeal250%01
4gategoon2673%13221
9/9gate757%2979
9/9proxygate250%2425
nzcore10%3939
zcore10%2828
zcorez4871%33209
zzcore667%340
14 openings22269%
enemygameswins
1gatecore12275%
2gate650%
2gatefast333%
4gategoon8268%
unknown911%
5 openings22269%


Dark templar wars!


#6 mcrave

openinggameswinsfirstlast
10/12gate16599%57221
1basespeedzeal888%07
2basespeedzeal10%2121
4gate2archon888%1320
5gategoon367%5456
9/9gate580%812
9/9proxygate10%5151
bisu250%5253
neobisu580%4650
sairdt786%2531
sairgoon367%2224
sairreaver1385%3244
stove10%4545
13 openings22293%
enemygameswins
10hatch10%
12hatch10894%
9pool1100%
overpool11194%
unknown1100%
5 openings22293%


The 10hatch and 9pool are probably misrecognized. It looks like BananaBrain ran over mutalisk specialist McRave with zealots.


#7 microwave

openinggameswinsfirstlast
9/9gate21692%6221
stove683%05
2 openings22291%
enemygameswins
10hatch13100%
12hatch3797%
12pool2990%
4/5pool1100%
9pool4994%
9poolspeed20100%
overpool3370%
unknown4095%
8 openings22291%


The stove is fun, but why is it active for the tournament? It was played against Steamhammer, McRave, and Microwave, and brought down the average every time.


#8 ualbertabot

openinggameswinsfirstlast
PvU_9/9gate475%912
PvU_9/9proxygate10%00
PvU_ffe20898%13220
PvU_zzcore888%18
4 openings22197%
enemygameswins
12hatch3797%
1gatecore3197%
2fac38100%
2gatefast2796%
2rax20100%
4/5pool3187%
4gategoon16100%
9pool1100%
proxyrax20100%
9 openings22197%

#9 pylonpuller

openinggameswinsfirstlast
12nexus2190%020
3gaterobo12890%22149
4gategoon10%2121
9/9gate2291%150171
zcore5098%172221
5 openings22291%
enemygameswins
1gatecore8095%
2gate1974%
2gatefast5389%
cannonrush21100%
cannonturtle2793%
ffe3100%
proxygate14100%
unknown560%
8 openings22291%

#10 styx

openinggameswinsfirstlast
sairgoon22293%0221
1 opening22293%
enemygameswins
12hatch19593%
unknown2793%
2 openings22293%


I’m guessing that if the first opening tried is highly successful, then BananaBrain doesn’t consider anything else.


#11 cunybot

openinggameswinsfirstlast
neobisu221100%0220
1 opening221100%
enemygameswins
10hatch5100%
12hatch64100%
12pool38100%
4/5pool58100%
9pool28100%
overpool1100%
unknown27100%
7 openings221100%

new bots Terminus and Brainiac

Terminus is BananaBrain playing terran, and Brainiac is BananaBrain playing random. (Crona is BananaBrain playing zerg and has been around for a while. BananaBrain is of course BananaBrain playing protoss.)

Terran is the new race. In the games I watched, I saw it open with in-base BBS and proxy BBS (which it plays rigidly with no tech), Gundam rush, a different two-factory attack, bunker expand, factory expand, and wall its natural and defend with tanks. It’s a wide variety, and I doubt I saw everything. It knows something about tank lines, though its TvT skills did not seem polished. It knows how to scout with a floating building. It can play with barracks units or factory units, or both at once. It can make wraiths and vessels. It knows how to lay a dense carpet of mines in front of its base—sometimes too close in front. It’s not effective mine placement against a skilled opponent. It does not seem to go for the hyperactive vulture style popularized by Iron. Not as impressive a terran as Hao Pan or Krasi0, but strong skills overall.

This game versus Pathos was entertaining. Terminus tried to expand and failed.

It looks like another tough opponent. Way to go! As I write, Brainiac is ranked lower than its component races, but that is because it is too new. Its rating has not stabilized.

Steamhammer will be back. Give me time.

AIIDE 2021 - BananaBrain versus DaQin

Not an exciting pairing. Blue is good for BananaBrain, red is good for DaQin.

bananabrain strategies versus daqin strategies

overall2GateDT3GateDT4GateGoon
overall141/157 90%3/3 100%134/150 89%4/4 100%
2gatedt8/10 80%-5/7 71%3/3 100%
2gatedtexpo0/1 0%-0/1 0%-
2gatereaver131/142 92%3/3 100%127/138 92%1/1 100%
9/9gate2/3 67%-2/3 67%-
zcore0/1 0%-0/1 0%-

bananabrain as seen by daqin

bananabrain played#daqin recognized
2gatedt1010 Fast rush
2gatedtexpo11 DarkTemplar rush
2gatereaver142140 DarkTemplar rush | 1 Proxy | 1 Not fast rush
9/9gate33 Fast rush
zcore11 DarkTemplar rush

daqin as seen by bananabrain

daqin played#bananabrain recognized
2GateDT32 1gatecore | 1 unknown
3GateDT15066 1gatecore | 65 4gategoon | 18 unknown | 1 ffe
4GateGoon43 4gategoon | 1 1gatecore

AIIDE 2021 - Microwave versus BananaBrain

Blue is good for Microwave, red is good for BananaBrain.

microwave strategies versus bananabrain strategies

overall10/12gate1basespeedzeal2basespeedzeal4gate2archon5gategoon9/9gate9/9proxygatebisuneobisusairdtsairgoonsairreaverstove
overall21/157 13%3/86 3%1/1 100%1/2 50%1/2 50%5/30 17%3/15 20%1/2 50%1/2 50%1/2 50%1/5 20%1/5 20%1/2 50%1/3 33%
11Gas10PoolLurker0/3 0%0/2 0%---0/1 0%--------
11HatchTurtleHydra0/1 0%0/1 0%------------
11HatchTurtleMuta0/1 0%0/1 0%------------
12Hatch0/1 0%0/1 0%------------
12HatchTurtle0/3 0%0/1 0%----0/2 0%-------
12PoolMain3/15 20%1/10 10%---2/4 50%-0/1 0%------
12PoolMuta0/1 0%-----0/1 0%-------
2HatchMuta0/2 0%0/1 0%---0/1 0%--------
2HatchMuta_Sparkle0/1 0%0/1 0%------------
3HatchHydra1/7 14%0/3 0%---0/3 0%-----1/1 100%--
3HatchLingBust0/4 0%0/2 0%----0/1 0%----0/1 0%--
3HatchLurker0/1 0%----0/1 0%--------
3HatchMuta0/2 0%0/2 0%------------
3HatchPoolHydra0/3 0%0/1 0%---0/1 0%-----0/1 0%--
4HatchBeforeGas0/1 0%----0/1 0%--------
4HatchPool0/1 0%----0/1 0%--------
4HatchPoolHydra0/3 0%0/2 0%---0/1 0%--------
4PoolHard0/7 0%0/3 0%---0/1 0%0/1 0%---0/1 0%--0/1 0%
4PoolSoft0/1 0%----0/1 0%--------
6Pool0/1 0%0/1 0%------------
7Pool0/2 0%0/2 0%------------
7PoolHydraRush7D0/2 0%0/1 0%--------0/1 0%---
8Pool0/2 0%0/1 0%---0/1 0%--------
9Hatch9Pool9Gas0/2 0%0/2 0%------------
9HatchTurtleHydra0/1 0%--------0/1 0%----
9Pool0/1 0%----0/1 0%--------
9PoolGasHatchSpeed8D16/57 28%2/24 8%1/1 100%1/2 50%1/2 50%3/9 33%3/8 38%-1/2 50%1/1 100%1/3 33%0/2 0%1/1 100%1/2 50%
9PoolHatchGasSpeed8D1/11 9%0/7 0%---0/1 0%0/2 0%1/1 100%------
9PoolSpeed0/1 0%----0/1 0%--------
9PoolSpeedLing0/8 0%0/7 0%---0/1 0%--------
Overpool0/1 0%0/1 0%------------
OverpoolTurtle0/1 0%0/1 0%------------
ZvP_10Hatch9Pool0/1 0%-----------0/1 0%-
ZvP_2HatchHydra0/1 0%0/1 0%------------
ZvP_9Hatch9Pool0/1 0%0/1 0%------------
ZvZ_Overgas11Pool0/1 0%0/1 0%------------
ZvZ_Overgas9Pool0/1 0%0/1 0%------------
ZvZ_Overpool9Gas0/3 0%0/3 0%------------
ZvZ_OverpoolTurtle0/1 0%0/1 0%------------

That 9PoolGasHatchSpeed8D (a variant of the Styx build) must be behind many of the NakedExpand wins. Well, we already knew that, because it is behind most of the wins altogether. The interesting discovery is that it had some success against a wide range of BananaBrain openings.

The overall impression from this table is that both bots were feeling around in the dark. And we know how they work, so we know it’s true!

microwave as seen by bananabrain

microwave played#bananabrain recognized
11Gas10PoolLurker33 12pool
11HatchTurtleHydra11 12hatch
11HatchTurtleMuta11 12hatch
12Hatch11 12hatch
12HatchTurtle33 12hatch
12PoolMain159 12pool | 4 unknown | 2 10hatch
12PoolMuta11 12pool
2HatchMuta22 12hatch
2HatchMuta_Sparkle11 12hatch
3HatchHydra77 12hatch
3HatchLingBust44 12hatch
3HatchLurker11 12hatch
3HatchMuta22 12hatch
3HatchPoolHydra33 12hatch
4HatchBeforeGas11 12hatch
4HatchPool11 12hatch
4HatchPoolHydra32 12hatch | 1 unknown
4PoolHard77 4/5pool
4PoolSoft11 4/5pool
6Pool11 4/5pool
7Pool22 4/5pool
7PoolHydraRush7D22 4/5pool
8Pool22 9pool
9Hatch9Pool9Gas22 10hatch
9HatchTurtleHydra11 10hatch
9Pool11 9pool
9PoolGasHatchSpeed8D5749 9pool | 8 overpool
9PoolHatchGasSpeed8D116 9pool | 3 overpool | 2 unknown
9PoolSpeed11 9poolspeed
9PoolSpeedLing85 9poolspeed | 3 overpool
Overpool11 overpool
OverpoolTurtle11 overpool
ZvP_10Hatch9Pool11 10hatch
ZvP_2HatchHydra11 12hatch
ZvP_9Hatch9Pool11 10hatch
ZvZ_Overgas11Pool11 10hatch
ZvZ_Overgas9Pool11 unknown
ZvZ_Overpool9Gas33 overpool
ZvZ_OverpoolTurtle11 overpool

BananaBrain’s recognition is generally close enough. 11 hatch can be treated like 12 hatch, though it is sometimes possible to exploit the slight slowness of 12 hatch. Treating 7 pool like 5 pool is probably close enough for bot play. The only harmful mistake was in recognizing overpool when facing the aggressive 9PoolGasHatchSpeed8D.

bananabrain as seen by microwave

bananabrain played#microwave recognized
10/12gate8661 HeavyRush | 16 Unknown | 8 NakedExpand | 1 SafeExpand
1basespeedzeal11 Unknown
2basespeedzeal21 NakedExpand | 1 Turtle
4gate2archon21 Turtle | 1 NakedExpand
5gategoon3015 SafeExpand | 7 NakedExpand | 5 Turtle | 2 HeavyRush | 1 Unknown
9/9gate159 HeavyRush | 4 Unknown | 2 NakedExpand
9/9proxygate21 Unknown | 1 HeavyRush
bisu21 SafeExpand | 1 Turtle
neobisu21 NakedExpand | 1 SafeExpand
sairdt53 HeavyRush | 2 Unknown
sairgoon54 SafeExpand | 1 NakedExpand
sairreaver21 Turtle | 1 NakedExpand
stove31 Unknown | 1 HeavyRush | 1 NakedExpand

Here we see where BananaBrain’s NakedExpand losses came from: It didn’t simply play 12 nexus or whatever, but expanded behind the cover of pressure from some other build. Could it be that Microwave often didn’t scout the nexus unless it had defeated the pressure? Looking at this, it seems more like a BananaBrain weakness—eagerness to expand at a given time whether it is safe or not—than a Microwave strength. But then again, Microwave scored well against NakedExpand for almost every opponent that played it.

AIIDE 2021 - BananaBrain versus WillyT

Not much to see here, because the pairing was one-sided. But there are still a few points to note. In the tables, blue is good for BananaBrain, red is good for WillyT.

bananabrain strategies versus willyt strategies

overall1 rush2 fe bio-mech3 fe mech4 tonk
overall146/157 93%43/46 93%71/79 90%17/17 100%15/15 100%
10/12gate41/44 93%7/10 70%19/19 100%10/10 100%5/5 100%
12nexus5/6 83%1/1 100%1/2 50%1/1 100%2/2 100%
2gatedt0/1 0%-0/1 0%--
32nexus21/24 88%17/17 100%2/5 40%-2/2 100%
9/9proxygate76/77 99%18/18 100%46/47 98%6/6 100%6/6 100%
dtdrop1/2 50%-1/2 50%--
stove2/3 67%-2/3 67%--

It’s striking how quickly BananaBrain gave up on a build; it only had to fail once in six games. The reason is of course that the other builds were doing better than that. Now we see the relative success of WillyT’s build 2 bio-mech: It provided all of the wins in the builds that BananaBrain gave up on, and a few other wins as well. Otherwise, only WillyT’s rush was able to score a few wins, and then only against BananaBrain’s zealot play.

willyt as seen by bananabrain

willyt played#bananabrain recognized
1 rush4639 2rax | 7 unknown
2 fe bio-mech7940 fastexpand | 25 unknown | 14 2rax
3 fe mech1712 fastexpand | 2 unknown | 2 1fac | 1 2rax
4 tonk1510 1fac | 4 unknown | 1 2rax

BananaBrain seems to have diagnosed builds mostly correctly, when it was able to at all. WillyT’s build 2 seemed to be better at denying scouting. There is no sign that reading the opponent’s build helped BananaBrain play better; it’s the opposite if anything. But with the results so lopsided, we shouldn’t expect much of a sign anyway.

AIIDE 2021 - McRave versus BananaBrain

McRave and BananaBrain both recorded all 157 of their mutual games. I chose to put McRave down the left side of the strategy cross, because its longer strategy names make the table hard to read otherwise. I also trimmed off the “PvZ_” and “Z_” prefixes from BananaBrain’s strategy names for compactness.

Blue is good for McRave, red is good for BananaBrain.

mcrave strategies versus bananabrain strategies

overall10/12gate1basespeedzeal2basespeedzeal4gate2archon5gategoon9/9gate9/9proxygatebisuneobisusairdtsairgoonsairreaverstove
overall28/157 18%8/54 15%1/3 33%1/5 20%1/1 100%1/1 100%1/1 100%2/8 25%1/5 20%1/4 25%1/3 33%2/12 17%1/1 100%7/59 12%
HatchPool,12Hatch,2HatchMuta16/86 19%3/28 11%1/1 100%1/3 33%1/1 100%1/1 100%1/1 100%0/1 0%-1/4 25%0/2 0%2/10 20%1/1 100%4/33 12%
HatchPool,12Hatch,2HatchSpeedling0/1 0%------0/1 0%------
HatchPool,9Pool,2HatchSpeedling2/2 100%------2/2 100%------
PoolHatch,9Pool,2HatchMuta3/15 20%0/2 0%------0/3 0%----3/10 30%
PoolHatch,9Pool,2HatchSpeedling0/3 0%------0/3 0%------
PoolHatch,9Pool,3HatchMuta4/19 21%4/13 31%-0/1 0%----0/1 0%----0/4 0%
PoolHatch,9Pool,6HatchHydra0/2 0%----------0/1 0%-0/1 0%
PoolHatch,Overpool,2HatchMuta0/4 0%0/2 0%0/1 0%--------0/1 0%--
PoolHatch,Overpool,2HatchSpeedling0/1 0%------0/1 0%------
PoolHatch,Overpool,3HatchMuta3/14 21%1/9 11%0/1 0%-----1/1 100%-1/1 100%--0/2 0%
PoolHatch,Overpool,6HatchHydra0/10 0%--0/1 0%---------0/9 0%

There we have the explanation for the 2 lonely HatchPool,9Pool,2HatchSpeedling games: The strategy was a successful reaction to proxy gates. I read it as meaning that the build is 9 hatch, 9 pool, and gas soon for the zergling speed upgrade.

BananaBrain split its effort between 10-12 gate and the Stove (a scout into dark templar build), very different builds. McRave answered both mostly with 12 hatch into 2 hatch muta. A hydralisk opening would have been a more natural way to counter both, but play what you’re good at.

mcrave as seen by bananabrain

mcrave played#bananabrain recognized
HatchPool,12Hatch,2HatchMuta8684 12hatch | 2 unknown
HatchPool,12Hatch,2HatchSpeedling11 unknown
HatchPool,9Pool,2HatchSpeedling22 12pool
PoolHatch,9Pool,2HatchMuta158 9pool | 7 overpool
PoolHatch,9Pool,2HatchSpeedling32 overpool | 1 9pool
PoolHatch,9Pool,3HatchMuta1913 9pool | 6 overpool
PoolHatch,9Pool,6HatchHydra21 overpool | 1 9pool
PoolHatch,Overpool,2HatchMuta44 overpool
PoolHatch,Overpool,2HatchSpeedling11 overpool
PoolHatch,Overpool,3HatchMuta1414 overpool
PoolHatch,Overpool,6HatchHydra1010 overpool

BananaBrain was accurate in recognizing 12 hatch and overpool, but had trouble with 9 pool. It did not try to narrow the build down any further than that.

bananabrain as seen by mcrave

bananabrain played#mcrave recognized
10/12gate5431 2Gate,10/12,Corsair | 8 2Gate,10/12,DT | 4 2Gate,10/12,ZealotRush | 3 2Gate,10/17,Corsair | 2 2Gate,Unknown,Corsair | 2 2Gate,9/9,DT | 2 2Gate,9/9,Corsair | 1 2Gate,10/17,4Gate | 1 2Gate,10/17,DT
1basespeedzeal32 1GateCore,2Zealot,DT | 1 1GateCore,2Zealot,Corsair
2basespeedzeal53 FFE,Forge,Speedlot | 1 FFE,Nexus,Speedlot | 1 FFE,Nexus,5GateGoon
4gate2archon11 FFE,Forge,5GateGoon
5gategoon11 FFE,Nexus,5GateGoon
9/9gate11 2Gate,9/9,Corsair
9/9proxygate87 2Gate,Proxy,ZealotRush | 1 2Gate,9/9,Unknown
bisu52 FFE,Forge,Unknown | 2 FFE,Forge,5GateGoon | 1 FFE,Nexus,Unknown
neobisu44 FFE,Forge,Speedlot
sairdt33 1GateCore,2Zealot,Corsair
sairgoon126 FFE,Forge,5GateGoon | 2 FFE,Nexus,5GateGoon | 2 FFE,Forge,Unknown | 1 FFE,Gateway,5GateGoon | 1 FFE,Gateway,Unknown
sairreaver11 FFE,Forge,Unknown
stove5927 1GateCore,2Zealot,Corsair | 10 1GateCore,Unknown,Corsair | 6 1GateCore,Unknown,DT | 6 1GateCore,2Zealot,DT | 3 2Gate,10/12,DT | 3 2Gate,10/12,ZealotRush | 2 2Gate,10/17,4Gate | 1 2Gate,10/17,DT | 1 2Gate,10/12,4Gate

In 1-base protoss plays, McRave tried to distinguish when the gates were made, and often got it right but had some trouble. It seems like something you can’t do perfectly, even if you combine direct scouting of the gates with inferences based on the enemy army. Recognizing the enemy build precisely doesn’t seem possible in general, though you can usually get close.

AIIDE 2021 - BananaBrain versus Dragon

BananaBrain and Dragon both recorded their own opening builds for all 157 games played, so I can align their learning files and see how their strategies matched up against each other. BananaBrain also recorded its representation of what the opponent played, so I can compare its idea of Dragon’s build with Dragon’s own idea. I first did this last year. Dragon is carried over from last year unchanged, while BananaBrain is much stronger now.

The win rates and coloring are from the point of view of BananaBrain. Blue is good for BananaBrain and red is good for Dragon.

bananabrain strategies versus dragon strategies

overall1rax fe2rax bio2rax mechbiodirty worker rushmass vulturesiege expand
overall117/157 75%8/8 100%19/30 63%8/8 100%12/13 92%8/8 100%27/36 75%35/54 65%
PvT_10/12gate34/48 71%1/1 100%9/17 53%1/1 100%2/2 100%2/2 100%3/5 60%16/20 80%
PvT_1gatedtexpo0/1 0%-0/1 0%-----
PvT_28nexus3/6 50%-1/2 50%---1/1 100%1/3 33%
PvT_2gaterngexpo2/4 50%-0/1 0%---1/1 100%1/2 50%
PvT_32nexus0/1 0%------0/1 0%
PvT_9/9gate78/96 81%7/7 100%9/9 100%7/7 100%10/11 91%6/6 100%22/29 76%17/27 63%
PvT_9/9proxygate0/1 0%------0/1 0%

dragon as seen by bananabrain

dragon played#bananabrain recognized
1rax fe87 T_unknown | 1 T_fastexpand
2rax bio3030 T_unknown
2rax mech88 T_unknown
bio1313 T_unknown
dirty worker rush88 T_unknown
mass vulture3621 T_1fac | 14 T_unknown | 1 T_2fac
siege expand5438 T_1fac | 16 T_unknown

Last year this table showed that BananaBrain was weak at recognizing Dragon’s builds, with a lot of unknowns. There are more recognized builds this year, but BananaBrain plays differently so I’m not sure whether BananaBrain has improved at recognition. What is clear is that everything is blue. Recognizing some builds does not seem to have helped BananaBrain; it did well no matter what.

AIIDE 2021 - what BananaBrain learned

Here’s my summary of BananaBrain’s learning files. BananaBrain records both its own strategy and the recognized enemy strategy for every game.

#1 stardust

openinggameswinsfirstlast
PvP_10/12gate50%9121
PvP_12nexus50%10119
PvP_2gatedt50%3120
PvP_2gatedtexpo1619%0125
PvP_2gatereaver50%1118
PvP_3gaterobo50%13123
PvP_3gatespeedzeal50%5116
PvP_4gategoon2425%12126
PvP_9/9gate50%6122
PvP_9/9proxygate3829%8156
PvP_nzcore1315%4149
PvP_zcore50%7117
PvP_zcorez911%11144
PvP_zzcore1724%2127
14 openings15717%
enemygameswins
P_1gatecore650%
P_2gate2619%
P_2gatefast1331%
P_4gategoon10714%
P_cannonturtle10%
P_unknown40%
6 openings15717%


The most successful: Double proxy gates. Stardust plays the same every game, except for reactions to its opponent, so it’s interesting that BananaBrain diagnosed so many different openings. I suspect that they were all, or nearly all, 4 gate goon, and BananaBrain was not always able to scout long enough to see it. I think the variety is what you get when BananaBrain sees only part of the build.


#3 dragon

openinggameswinsfirstlast
PvT_10/12gate4871%0156
PvT_1gatedtexpo10%1616
PvT_28nexus650%13119
PvT_2gaterngexpo450%1091
PvT_32nexus10%8989
PvT_9/9gate9681%2118
PvT_9/9proxygate10%9292
7 openings15775%
enemygameswins
T_1fac5966%
T_2fac1100%
T_fastexpand1100%
T_unknown9679%
4 openings15775%


The best builds were zealot builds. BananaBrain seems to be especially successful with early zealot pressure.


#4 steamhammer

openinggameswinsfirstlast
PvZ_10/12gate367%57
PvZ_1basespeedzeal2186%37157
PvZ_2basespeedzeal978%21149
PvZ_4gate2archon10%3131
PvZ_5gategoon250%2930
PvZ_9/9gate9288%61156
PvZ_9/9proxygate10%5757
PvZ_bisu580%3236
PvZ_neobisu1283%819
PvZ_sairdt367%146148
PvZ_sairgoon10%2020
PvZ_sairreaver367%5860
PvZ_stove580%04
13 openings15883%
enemygameswins
Z_10hatch3284%
Z_12hatch5775%
Z_12hatchmain1100%
Z_12pool2100%
Z_4/5pool1100%
Z_9pool2396%
Z_9poolspeed888%
Z_overpool1984%
Z_unknown1580%
9 openings15883%


Again, zealot builds. Steamhammer tried a wide variety of counters, of which 12 hatch worked best. BananaBrain records only the earliest steps of zerg openings, so what BananaBrain calls Z_12hatch could have a range of followups.


#5 mcrave

openinggameswinsfirstlast
PvZ_10/12gate5485%17119
PvZ_1basespeedzeal367%5860
PvZ_2basespeedzeal580%15
PvZ_4gate2archon10%6161
PvZ_5gategoon10%6666
PvZ_9/9gate10%66
PvZ_9/9proxygate875%24100
PvZ_bisu580%5357
PvZ_neobisu475%6265
PvZ_sairdt367%1416
PvZ_sairgoon1283%7105
PvZ_sairreaver10%00
PvZ_stove5988%31156
13 openings15782%
enemygameswins
Z_12hatch8481%
Z_12pool20%
Z_9pool2378%
Z_overpool4589%
Z_unknown3100%
5 openings15782%


Most things worked against McRave, but especially tech openings. The earliest steps of McRave’s openings are stereotyped, so BananaBrain recognized few choices.


#6 willyt

openinggameswinsfirstlast
PvT_10/12gate4493%750
PvT_12nexus683%05
PvT_2gatedt10%66
PvT_32nexus2488%5174
PvT_9/9proxygate7799%80156
PvT_dtdrop250%7879
PvT_stove367%7577
7 openings15793%
enemygameswins
T_1fac12100%
T_2rax5595%
T_fastexpand5288%
T_unknown3895%
4 openings15793%


The proxy gates won 76 times out of 77. Ouch.


#7 microwave

openinggameswinsfirstlast
PvZ_10/12gate8697%31156
PvZ_1basespeedzeal10%2323
PvZ_2basespeedzeal250%1920
PvZ_4gate2archon250%2425
PvZ_5gategoon3083%3979
PvZ_9/9gate1580%982
PvZ_9/9proxygate250%6364
PvZ_bisu250%78
PvZ_neobisu250%2122
PvZ_sairdt580%04
PvZ_sairgoon580%2630
PvZ_sairreaver250%56
PvZ_stove367%1618
13 openings15787%
enemygameswins
Z_10hatch8100%
Z_12hatch3197%
Z_12pool1385%
Z_4/5pool13100%
Z_9pool5879%
Z_9poolspeed6100%
Z_overpool2075%
Z_unknown888%
8 openings15787%


Zealots were best again, though dragoons were good too. I wonder why the economic 10/12 gates were more successful than the fast 9/9 gates? It suggests that Microwave may overdefend, fearing fast zealots, and not have a strong enough economy to hold off efficient zealots instead. Or the followup after the zealots; BananaBrain likes to expand quickly.


#8 daqin

openinggameswinsfirstlast
PvP_2gatedt1080%037
PvP_2gatedtexpo10%66
PvP_2gatereaver14292%7156
PvP_9/9gate367%3133
PvP_zcore10%2626
5 openings15790%
enemygameswins
P_1gatecore6988%
P_4gategoon6891%
P_ffe1100%
P_unknown1989%
4 openings15790%


DaQin was apparently not ready for reavers. Otherwise it did not badly against a powerful opponent.


#9 freshmeat

openinggameswinsfirstlast
PvZ_4gate2archon888%2633
PvZ_9/9gate122100%35156
PvZ_neobisu1486%013
PvZ_sairgoon10%3434
PvZ_stove1283%1425
5 openings15796%
enemygameswins
Z_12hatch2785%
Z_12hatchmain2291%
Z_12pool1100%
Z_4/5pool27100%
Z_9pool11100%
Z_overpool3100%
Z_unknown66100%
7 openings15796%



#10 ualbertabot

openinggameswinsfirstlast
PvU_10/12gate475%03
PvU_9/9gate10%44
PvU_9/9proxygate580%1014
PvU_nzcore580%59
PvU_zcore14297%15156
5 openings15795%
enemygameswins
P_1gatecore19100%
P_2gate1100%
P_2gatefast2584%
P_4gategoon3100%
P_unknown6100%
T_1fac1100%
T_2fac22100%
T_2rax1694%
T_unknown11100%
Z_12hatch26100%
Z_4/5pool2387%
Z_overpool3100%
Z_unknown1100%
13 openings15795%

apparent latency compensation bug

The just played Simplicity vs BananaBrain is a fine game by Simplicity. The early defense against zealots was especially well done, and Simplicity’s tech and attack decisions were good. Recommended.

In the meantime, I’ve hit a bug that’s slowing me down. I found a reproducible case where production fails because it tries to use the same larva to produce two drones. It looks like slippage in BWAPI’s latency compensation: The production system picks a larva to produce a drone. Ask the type during the same frame after giving the morph order, and you get egg; that is latency comp at work. Ask again a couple frames later, and the egg has turned back into a larva; the production system picks it a second time, and the second morph can only fail. I think it should be easy to work around, but can it be fixed? Latency compensation is not expected to be perfect.

It makes me wonder what other slippages may be hiding under the rug.

AIIDE 2020 - BananaBrain versus Ecgberht

bananabrain strategies versus ecgberht strategies

overall14CCFullMechJoyORushMechGreedyFEProxyEightRax
overall148/150 99%31/31 100%28/28 100%28/28 100%28/28 100%33/35 94%
PvT_10/12gate10/10 100%3/3 100%-1/1 100%3/3 100%3/3 100%
PvT_10/15gate10/10 100%2/2 100%3/3 100%1/1 100%1/1 100%3/3 100%
PvT_12nexus10/10 100%3/3 100%3/3 100%2/2 100%1/1 100%1/1 100%
PvT_1gatedtexpo10/10 100%1/1 100%3/3 100%2/2 100%4/4 100%-
PvT_1gatereaver10/10 100%2/2 100%3/3 100%2/2 100%1/1 100%2/2 100%
PvT_28nexus10/10 100%3/3 100%2/2 100%1/1 100%2/2 100%2/2 100%
PvT_2gatedt11/11 100%2/2 100%4/4 100%1/1 100%2/2 100%2/2 100%
PvT_2gaterngexpo10/10 100%3/3 100%3/3 100%-1/1 100%3/3 100%
PvT_32nexus10/10 100%1/1 100%1/1 100%2/2 100%3/3 100%3/3 100%
PvT_9/9gate10/10 100%2/2 100%-3/3 100%-5/5 100%
PvT_9/9proxygate10/10 100%4/4 100%3/3 100%1/1 100%1/1 100%1/1 100%
PvT_bulldog10/10 100%1/1 100%1/1 100%5/5 100%1/1 100%2/2 100%
PvT_dtdrop10/10 100%1/1 100%-3/3 100%3/3 100%3/3 100%
PvT_proxydt7/9 78%1/1 100%1/1 100%3/3 100%2/2 100%0/2 0%
PvT_stove10/10 100%2/2 100%1/1 100%1/1 100%3/3 100%3/3 100%

We can see exactly how Ecgberht scored its total of 2 wins: It happened to play a fast proxy when BananaBrain played a slow proxy. For BananaBrain, maybe the lesson is to avoid risky openings versus much weaker opponents. As a general principle, I suggest saving risky builds for games where you have a high risk of losing with safe play—in that case, why not?

bananabrain as seen by ecgberht

bananabrain played#ecgberht recognized
PvT_10/12gate107 ZealotRush | 3 Unknown
PvT_10/15gate1010 Unknown
PvT_12nexus109 ProtossFE | 1 Unknown
PvT_1gatedtexpo1010 Unknown
PvT_1gatereaver1010 Unknown
PvT_28nexus1010 Unknown
PvT_2gatedt1111 Unknown
PvT_2gaterngexpo1010 Unknown
PvT_32nexus1010 Unknown
PvT_9/9gate107 ZealotRush | 3 Unknown
PvT_9/9proxygate108 Unknown | 2 CannonRush
PvT_bulldog1010 Unknown
PvT_dtdrop1010 Unknown
PvT_proxydt99 Unknown
PvT_stove1010 Unknown

Except for a couple cases of CannonRush, the builds that Ecgberht recognized were named correctly. I imagine that it interpreted CannonRush as “something proxied.”

ecgberht as seen by bananabrain

ecgberht played#bananabrain recognized
14CC3121 T_fastexpand | 6 T_unknown | 4 T_2rax
FullMech2821 T_unknown | 6 T_1fac | 1 T_2fac
JoyORush2823 T_2fac | 3 T_unknown | 2 T_1fac
MechGreedyFE2825 T_unknown | 3 T_2rax
ProxyEightRax3535 T_unknown

As we’ve seen before, BananaBrain has little skill in recognizing terran builds.

AIIDE 2020 - Microwave versus BananaBrain

This is the last matchup I can analyze this way without writing more parsing code. McRave did ask for more in a comment, though, so I may do that. All the matchups have featured BananaBrain.

Microwave plays a large number of strategies, so I put it on the left side. Blue is good for Microwave, red is good for BananaBrain.

microwave strategies versus bananabrain strategies

overallPvZ_10/12gatePvZ_1basespeedzealPvZ_2basespeedzealPvZ_4gate2archonPvZ_5gategoonPvZ_9/9gatePvZ_9/9proxygatePvZ_bisuPvZ_neobisuPvZ_sairdtPvZ_sairgoonPvZ_sairreaverPvZ_stove
overall58/150 39%5/17 29%3/19 16%4/11 36%4/9 44%4/7 57%5/11 45%5/12 42%4/14 29%4/10 40%5/10 50%6/11 55%4/9 44%5/10 50%
10Hatch9Pool9gas0/2 0%---0/1 0%0/1 0%--------
10HatchMain9Pool9Gas0/1 0%-------0/1 0%-----
11HatchTurtleHydra0/1 0%--------0/1 0%----
12Hatch0/1 0%0/1 0%------------
12PoolMain22/43 51%0/5 0%0/9 0%2/2 100%3/3 100%3/3 100%0/1 0%1/3 33%2/2 100%3/3 100%0/3 0%2/3 67%4/4 100%2/2 100%
12PoolMuta0/1 0%0/1 0%------------
1HatchMuta_Sparkle0/1 0%------0/1 0%------
2HatchMuta1/5 20%--1/1 100%--0/1 0%-0/1 0%---0/1 0%0/1 0%
3HatchHydraBust0/1 0%-------0/1 0%-----
3HatchHydra_BHG0/1 0%--0/1 0%----------
3HatchLingBust2/6 33%-0/1 0%0/1 0%--1/1 100%0/1 0%---1/1 100%-0/1 0%
3HatchMuta0/1 0%--------0/1 0%----
3HatchPoolHydraExpo0/1 0%0/1 0%------------
4HatchBeforeGas0/1 0%----------0/1 0%--
4HatchPoolHydra0/2 0%-0/1 0%0/1 0%----------
4PoolHard2/6 33%-1/1 100%0/1 0%--1/1 100%-0/1 0%----0/2 0%
4PoolSoft0/1 0%-0/1 0%-----------
6Pool0/1 0%-0/1 0%-----------
7Pool0/1 0%---------0/1 0%---
8Pool0/1 0%--------0/1 0%----
8PoolHydraRush8D0/1 0%0/1 0%------------
9PoolGasHatchSpeed8D12/18 67%2/2 100%2/2 100%-1/2 50%0/1 0%1/1 100%0/2 0%1/1 100%1/1 100%1/1 100%1/2 50%0/1 0%2/2 100%
9PoolHatchGasSpeed7D0/1 0%---0/1 0%---------
9PoolHatchGasSpeed8D17/32 53%3/4 75%0/1 0%1/1 100%0/1 0%0/1 0%2/4 50%4/5 80%1/5 20%0/1 0%4/4 100%2/2 100%0/2 0%0/1 0%
9PoolSpeed0/3 0%0/1 0%--0/1 0%------0/1 0%--
9PoolSpeedLing1/5 20%-----0/1 0%-0/1 0%--0/1 0%0/1 0%1/1 100%
9PoolSunkHatch0/1 0%--0/1 0%----------
Overpool0/1 0%0/1 0%------------
OverpoolSpeed0/3 0%-0/1 0%0/1 0%----0/1 0%-----
ZvP_10Hatch9Pool1/3 33%-0/1 0%0/1 0%-1/1 100%--------
ZvP_11Hatch10Pool0/1 0%--------0/1 0%----
ZvZ_Overgas9Pool0/1 0%--------0/1 0%----
ZvZ_Overpool11Gas0/2 0%-----0/1 0%---0/1 0%---

This table looks even more scattered than yesterday’s BananaBrain-Dragon table, but to me it tells a story of duelling learning algorithms. Microwave found a few builds that countered BananaBrain’s preferred play, and BananaBrain did not shift its responses far enough to entirely squelch them.

microwave as seen by bananabrain

microwave played#bananabrain recognized
10Hatch9Pool9gas22 Z_10hatch
10HatchMain9Pool9Gas11 Z_10hatch
11HatchTurtleHydra11 Z_12hatch
12Hatch11 Z_12hatch
12PoolMain4336 Z_12pool | 5 Z_10hatch | 2 Z_unknown
12PoolMuta11 Z_10hatch
1HatchMuta_Sparkle11 Z_unknown
2HatchMuta55 Z_12hatch
3HatchHydraBust11 Z_12hatch
3HatchHydra_BHG11 Z_10hatch
3HatchLingBust66 Z_12hatch
3HatchMuta11 Z_12hatch
3HatchPoolHydraExpo11 Z_12hatch
4HatchBeforeGas11 Z_12hatch
4HatchPoolHydra22 Z_12hatch
4PoolHard66 Z_4/5pool
4PoolSoft11 Z_4/5pool
6Pool11 Z_4/5pool
7Pool11 Z_9pool
8Pool11 Z_9pool
8PoolHydraRush8D11 Z_9pool
9PoolGasHatchSpeed8D1815 Z_9pool | 3 Z_overpool
9PoolHatchGasSpeed7D11 Z_9pool
9PoolHatchGasSpeed8D3229 Z_9pool | 3 Z_overpool
9PoolSpeed32 Z_9poolspeed | 1 Z_9pool
9PoolSpeedLing55 Z_9poolspeed
9PoolSunkHatch11 Z_9pool
Overpool11 Z_overpool
OverpoolSpeed33 Z_overpool
ZvP_10Hatch9Pool33 Z_10hatch
ZvP_11Hatch10Pool11 Z_12hatch
ZvZ_Overgas9Pool11 Z_12pool
ZvZ_Overpool11Gas22 Z_overpool

BananaBrain was accurate at reading Microwave’s initial build. Lumping 11 hatch with 12 hatch is fine, they’re very similar. 12 pool can be difficult to distinguish from 10 hatch, if you scout it late after the second hatchery finishes. It would be useful to better separate 9 pool from overpool, which are significantly different in effect, but it requires close attention to detail. Overall, highly accurate readings with only one wide miss, seeing the overgas 9 pool as 12 pool—and that is a ZvZ build that is extremely rare in ZvP.

It makes quite a contrast with yesterday’s BananaBrain-Dragon analysis, where BananaBrain barely recognized terran builds.

bananabrain as seen by microwave

bananabrain played#microwave recognized
PvZ_10/12gate1713 HeavyRush | 3 Unknown | 1 NakedExpand
PvZ_1basespeedzeal1914 Unknown | 5 HeavyRush
PvZ_2basespeedzeal114 NakedExpand | 3 Turtle | 3 SafeExpand | 1 HeavyRush
PvZ_4gate2archon94 NakedExpand | 4 SafeExpand | 1 HeavyRush
PvZ_5gategoon76 NakedExpand | 1 HeavyRush
PvZ_9/9gate119 HeavyRush | 2 Unknown
PvZ_9/9proxygate126 HeavyRush | 6 Unknown
PvZ_bisu146 SafeExpand | 4 NakedExpand | 2 Turtle | 1 HeavyRush | 1 Unknown
PvZ_neobisu104 NakedExpand | 3 SafeExpand | 2 Turtle | 1 HeavyRush
PvZ_sairdt108 Unknown | 2 HeavyRush
PvZ_sairgoon117 NakedExpand | 1 SafeExpand | 1 Turtle | 1 Unknown | 1 HeavyRush
PvZ_sairreaver94 SafeExpand | 3 NakedExpand | 2 Turtle
PvZ_stove107 Unknown | 3 HeavyRush

Microwave borrowed Steamhammer’s rather crude classification of enemy plans (which was still far in the future when Microwaved forked from Steamhammer). It was intended to be minimal, just enough to allow for basic reactions, to hold the fort until I could raise enough troops to make a sally. Microwave’s recognitions look similar to Steamhammer’s, with the right general tendency but many sloppy variations (which I think are due mostly to weak scouting, with a contribution from overlapping recognition rules).

It’s striking that some recognitions—of dubious accuracy—are dark blue in stark contrast to their neighbors. It gives me the impression that Microwave makes use of the recognized enemy plan, in some cases to good effect. It suggests that more accurate recognition, if the reactions are also good, could be a major improvement.

AIIDE 2020 - BananaBrain versus Dragon

Of the 4 bots I’m prepared to run this analysis on, this is the only pairing involving Dragon. Dragon did not record all 150 games against either McRave or Microwave. Like yesterday, all win rates and coloring are from the point of view of BananaBrain: Blue is good for BananaBrain, red is good for Dragon.

bananabrain strategies versus dragon strategies

overall1rax fe2rax bio2rax mechbiodirty worker rushmass vulturesiege expand
overall67/150 45%6/14 43%6/11 55%8/15 53%15/37 41%3/3 100%22/56 39%7/14 50%
PvT_10/12gate12/17 71%2/3 67%-2/3 67%4/4 100%-3/6 50%1/1 100%
PvT_10/15gate5/12 42%-2/2 100%1/5 20%1/3 33%-1/2 50%-
PvT_12nexus1/8 12%1/2 50%--0/1 0%-0/3 0%0/2 0%
PvT_1gatedtexpo3/7 43%1/2 50%--0/1 0%-2/4 50%-
PvT_1gatereaver0/5 0%-0/1 0%-0/2 0%-0/2 0%-
PvT_28nexus5/11 45%0/2 0%0/1 0%0/2 0%1/1 100%-4/5 80%-
PvT_2gatedt3/9 33%0/1 0%-1/1 100%0/2 0%-0/3 0%2/2 100%
PvT_2gaterngexpo2/7 29%-0/1 0%-1/1 100%1/1 100%0/4 0%-
PvT_32nexus2/8 25%---1/4 25%1/1 100%0/2 0%0/1 0%
PvT_9/9gate14/18 78%-2/3 67%-4/4 100%1/1 100%7/9 78%0/1 0%
PvT_9/9proxygate8/14 57%1/1 100%1/1 100%3/3 100%0/2 0%-2/6 33%1/1 100%
PvT_bulldog0/6 0%0/1 0%--0/3 0%-0/1 0%0/1 0%
PvT_dtdrop2/8 25%-1/1 100%-0/4 0%-1/2 50%0/1 0%
PvT_proxydt10/14 71%1/1 100%-1/1 100%3/3 100%-2/5 40%3/4 75%
PvT_stove0/6 0%0/1 0%0/1 0%-0/2 0%-0/2 0%-

Not one table cell has more than 9 games in it. Neither bot successfully predicted what the other would play, if it even tried: BananaBrain is unpredictable and Dragon changes its choice frequently when losing, and besides BananaBrain is poor at recognizing terran plans. So the strategy x strategy cross is a hash. To me the table means that, at least for this pairing, reactions during the game were more important than the initial choice of strategy. Neither side had a way to choose a counter beforehand.

bananabrain as seen by dragon

Dragon does not record a recognized opponent strategy. Its history files have only its own strategy and whether it won.

dragon as seen by bananabrain

dragon played#bananabrain recognized
1rax fe1413 T_unknown | 1 T_fastexpand
2rax bio118 T_unknown | 2 T_fastexpand | 1 T_1fac
2rax mech1514 T_unknown | 1 T_1fac
bio3735 T_unknown | 1 T_1fac | 1 T_fastexpand
dirty worker rush33 T_unknown
mass vulture5630 T_1fac | 26 T_unknown
siege expand149 T_unknown | 5 T_1fac

We knew that BananaBrain struggles to recognize terran strategies. Maybe the author has not spent effort on it because it doesn’t affect results much? In any case, given how Dragon plays, with its love of fast expansions and mixed tech, the terran builds that are recognized probably represent truths about the games. It’s not clear that they are helpful truths, though, because they say so little about what happened.

From the coloring, it looks as though there was little relationship between whether BananaBrain recognized Dragon’s build and whether BananaBrain won. That is consistent with the theory that the author decided it didn’t matter.

AIIDE 2020 - BananaBrain versus McRave

If both bots in a pairing write history files, and both record all 150 games of the tournament, then the history files can be aligned and we can compare what the bots were thinking in each game. So far, between the limitations of the data and the limitations of my script, I’m only ready to do that for a few pairings. Dragon in particular often did not record all 150 games, and I’d rather not try to align game records when there are gaps in the histories (there is enough data to do it programmatically, but it’s a pain and risks errors). Also my script depends on parsing out data into a specific format, and it is only implemented for 4 bots so far (#3 BananaBrain, #4 Dragon, #5 McRave, #6 Microwave—alphabetical order and their finishing order were the same).

Today is BananaBrain versus McRave. The first BananaBrain line in its file about McRave:

2020-10-09 20:56:04,2,(2)Destination.scx,PvZ_9/9proxygate,Z_overpool,7.6,1

The first McRave line in its history file about BananaBrain (we’re told it doesn’t use this data in games, but it’s there and we can analyze it):

Lost,Destination,7:30,2Gate,Proxy,ZealotRush,PoolHatch,Overpool,2HatchSpeedling,1:21,1:21,1:21,5,Zerg_Larva,30,Zerg_Zergling,15,Zerg_Drone,3,Zerg_Overlord,24,Protoss_Probe,16,Protoss_Zealot,1,Protoss_Corsair Lost,HeartbreakRidge,17:40,2Gate,Main,Corsair,PoolHatch,Overpool,2HatchMuta,2:01,2:01,5:10,2,Zerg_Larva,16,Zerg_Zergling,42,Zerg_Drone,10,Zerg_Overlord,28,Zerg_Mutalisk,18,Zerg_Scourge,89,Protoss_Probe,54,Protoss_Zealot,23,Protoss_Dragoon,1,Protoss_High_Templar,1,Protoss_Shuttle,33,Protoss_Corsair,5,Protoss_Dark_Templar,1,Protoss_Reaver,8,Protoss_Scarab

My script extracts key info from each line so we can compare. BananaBrain played PvZ_9/9proxygate and concluded that McRave answered with Z_overpool, while McRave played PoolHatch,Overpool,2HatchSpeedling and classified what it saw from BananaBrain as 2Gate,Proxy,ZealotRush. In this game, both sides agreed pretty well about what was going on.

bananabrain strategies versus mcrave strategies

This table shows which BananaBrain strategies were successful against which three-part McRave strategies. All the winning rates are from BananaBrain’s point of view. The intersection of the overall row and the overall column says that BananaBrain won 82 out of 150 games throughout the tournament, which can be checked against the official crosstable. The overall row tells how BananaBrain fared against each of McRave’s strategies, which can be checked against my tables of what McRave learned. The overall column tells how each BananaBrain strategy performed, which can be checked against what BananaBrain learned. (Spoiler: All the numbers match.) The center cells are the meat, and show what countered what.

overallPoolHatch,Overpool,2HatchMutaPoolHatch,Overpool,2HatchSpeedlingPoolHatch,Overpool,3HatchSpeedling
overall82/150 55%72/131 55%5/10 50%5/9 56%
PvZ_10/12gate9/13 69%4/4 100%-5/9 56%
PvZ_1basespeedzeal6/12 50%6/12 50%--
PvZ_2basespeedzeal3/9 33%3/9 33%--
PvZ_4gate2archon1/6 17%1/6 17%--
PvZ_5gategoon9/16 56%9/16 56%--
PvZ_9/9gate26/27 96%26/27 96%--
PvZ_9/9proxygate5/10 50%-5/10 50%-
PvZ_bisu1/5 20%1/5 20%--
PvZ_neobisu5/11 45%5/11 45%--
PvZ_sairdt3/10 30%3/10 30%--
PvZ_sairgoon11/17 65%11/17 65%--
PvZ_sairreaver1/5 20%1/5 20%--
PvZ_stove2/9 22%2/9 22%--

The table makes it plain that 2HatchSpeedling and 3HatchSpeedling were reactions to specific protoss builds, as the author pointed out in a comment. The counter to 10/12 gate at least seems to have been valuable, because McRave lost all 4 games where the 10/12 gate was played but not countered. The 9/9 gate crushed because no counter was played against it; the zealots are a McRave weakness.

bananabrain as seen by mcrave

But wait, there’s more. Both bots recorded not only their own strategy, but the recognized opponent strategy, so we can compare the known strategy of one bot with how the other bot recognized it. Note well: If the recognized strategy looks different than the actual strategy, it is not necessarily a mistake or a scouting miss. The bots may simply be noting different aspects of the game. Only some differences indicate mistakes.

The coloring is from the point of view of BananaBrain. For McRave, red is good and blue is bad.

bananabrain played#mcrave recognized
PvZ_10/12gate1312 2Gate,Main,Corsair | 1 2Gate,Main,DT
PvZ_1basespeedzeal128 1GateCore,2Zealot,DT | 2 2Gate,Main,DT | 1 2Gate,Main,4Gate | 1 1GateCore,2Zealot,Corsair
PvZ_2basespeedzeal98 FFE,Forge,Speedlot | 1 FFE,Gateway,Speedlot
PvZ_4gate2archon62 FFE,Forge,NeoBisu | 2 FFE,Forge,5GateGoon | 1 FFE,Forge,ZealotArchon | 1 FFE,Nexus,NeoBisu
PvZ_5gategoon1614 FFE,Forge,5GateGoon | 2 FFE,Nexus,5GateGoon
PvZ_9/9gate2726 2Gate,Main,Corsair | 1 2Gate,Main,DT
PvZ_9/9proxygate1010 2Gate,Proxy,ZealotRush
PvZ_bisu53 FFE,Forge,NeoBisu | 2 FFE,Nexus,NeoBisu
PvZ_neobisu115 FFE,Forge,NeoBisu | 4 FFE,Forge,Speedlot | 2 FFE,Nexus,NeoBisu
PvZ_sairdt1010 1GateCore,2Zealot,Corsair
PvZ_sairgoon179 FFE,Forge,NeoBisu | 2 FFE,Nexus,5GateGoon | 2 FFE,Nexus,NeoBisu | 2 FFE,Forge,Unknown | 1 FFE,Forge,Speedlot | 1 FFE,Forge,5GateGoon
PvZ_sairreaver55 FFE,Forge,NeoBisu
PvZ_stove99 1GateCore,2Zealot,Corsair

Only 2 games have an Unknown element. Without watching replays, I can’t say that any of McRave’s recognitions are wrong. Seeing PvZ_sairgoon as FFE,Forge,Speedlot could be correct if BananaBrain followed up with zealots in that one game.

I’m not sure what the difference is between FFE,Forge and FFE,Gateway and FFE,Nexus. FFE stands for forge fast expand, which means a forge and a nexus, and then you need a gateway if you’re ever going to make a mobile army, so all three buildings are required. Maybe it’s whatever building McRave saw first.

mcrave as seen by bananabrain

Again, the coloring is from the point of view of BananaBrain.

mcrave played#bananabrain recognized
PoolHatch,Overpool,2HatchMuta131101 Z_overpool | 27 Z_9pool | 3 Z_unknown
PoolHatch,Overpool,2HatchSpeedling109 Z_overpool | 1 Z_unknown
PoolHatch,Overpool,3HatchSpeedling98 Z_overpool | 1 Z_9pool

BananaBrain remembered far less detail about the game than McRave. Overpool is only an initial build order which reaches its end at 9 supply and can be followed up with any tech or unit mix whatsoever. If all you know is that the opponent will start with overpool, the only conclusions you can draw are limits on the opponent’s tech timings and economy. On the other hand, if you do know more about the opponent’s play, can you use the information productively?

more?

I could generate more tables. Various tables showing recognized strategies might make sense. If at least one bot of the pair records the map for each game, it would be easy to break down strategies by map. Is there any particular breakdown you’d like to see?

Update: I added coloring to the “as seen by” tables, to show how win rates vary depending on what the bots recognized.

AIIDE 2020 - what BananaBrain learned

#3 BananaBrain had pre-trained data, 3000 (!) games versus Stardust and 100 each against PurpleWave, Dragon, McRave, Microwave, and DaQin. Other opponents did not rate. The main tables here include only tournament games, not pre-training games. BananaBrain scored higher in training games than in tournament games against every opponent except the carryover DaQin (training 61% of 100 games, tournament 66% of 150 games, statistically close enough). It looks as though BananaBrain might have won the tournament if it had played against the same versions of opponents that it trained against. I take it as a sign that secret tournament improvements may be worth it.

A couple conclusions: 1. Enemy strategy recognition seemed to have some misfires with terran opponents. 2. BananaBrain would have scored slightly better if it had never played the Stove. It’s a for-fun build more than a for-real build—though bots are often poor at adaptation, so perhaps on BASIL it is more effective than here.


#1 stardust

openinggameswinsfirstlast
PvP_10/12gate1040%12119
PvP_12nexus20%1166
PvP_2gatedt617%28145
PvP_2gatedtexpo70%0140
PvP_2gatereaver2924%3149
PvP_3gaterobo425%50106
PvP_3gatespeedzeal30%465
PvP_4gategoon2665%31144
PvP_9/9gate40%29146
PvP_9/9proxygate1741%8142
PvP_nzcore20%268
PvP_zcore10%118118
PvP_zcorez540%42117
PvP_zzcore3453%5148
14 openings15038%
enemygameswins
P_1gatecore2335%
P_2gate475%
P_2gatefast1030%
P_4gategoon9444%
P_unknown1911%
5 openings15038%


BananaBrain was the only bot to leave a dent in Stardust. Its plan recognition was not precise enough to pin down Stardust’s 4 gate goon strategy consistently, likely because Stardust ejected the bananascout before the build was complete. Still, BananaBrain’s 4 gate goon opener defeated Stardust’s 4 gate goons 65% of the time in 26 games. BananaBrain is deliberately unpredictable, but against this opponent consistency may have been better: Stardust played without learning, so its opponents should have sought the single best opening as an answer rather than the best mix of openings. It’s possible that #3 BananaBrain could have upset Stardust if it had done that, though it would not have gained enough wins to pass #2 PurpleWave.

openinggameswinsfirstlast
PvP_10/12gate603%112934
PvP_12nexus560%42915
PvP_2gatedt11231%82978
PvP_2gatedtexpo27853%52921
PvP_2gatereaver111066%62988
PvP_3gaterobo603%22935
PvP_3gatespeedzeal11626%72916
PvP_4gategoon560%32917
PvP_9/9gate13636%122995
PvP_9/9proxygate43761%132936
PvP_nzcore560%12918
PvP_zcore10221%02989
PvP_zcorez7212%92986
PvP_zzcore34967%102999
14 openings300051%

This is the table of pre-trained games. It looks different from the tournament table; the overall score and the individual results by strategy do not match up. The training may have been against an older version of Stardust on the Starcraft AI Ladder, or it may have been against Locutus, which was wrapped around an encrypted Stardust binary on SSCAIT and played instead of Stardust if it didn’t have its encryption key.

The misleading training cannot have helped BananaBrain’s results. It did adapt, but notice that BananaBrain’s most effective counter of 4 gate goon was only played 26 times in 150 games, less often than P_2gatereaver and P_zzcore which scored highest in training.


#2 purplewave

openinggameswinsfirstlast
PvP_10/12gate714%1146
PvP_12nexus714%2125
PvP_2gatedt1136%22142
PvP_2gatedtexpo1040%36141
PvP_2gatereaver922%20144
PvP_3gaterobo1323%3148
PvP_3gatespeedzeal933%9108
PvP_4gategoon1669%4137
PvP_9/9gate922%13128
PvP_9/9proxygate922%10147
PvP_nzcore1443%7149
PvP_zcore714%29115
PvP_zcorez1242%0143
PvP_zzcore1765%5139
14 openings15037%
enemygameswins
P_1gatecore10638%
P_2gate580%
P_2gatefast367%
P_4gategoon1436%
P_ffe10%
P_unknown2124%
6 openings15037%


Again, 4 gate goon was BananaBrain’s best, though zealot-zealot-core was statistically equal. PurpleWave learns, so mixing it up was likely correct. Judging by the names, the last 4 builds here, the ones that mention “core”, are nonspecific tech builds that might aim for any tech and unit mix in the midgame. Do the names accurately describe them?

Again the training data was somewhat misleading (52% win rate in 100 training games and entirely different best counters), but BananaBrain tried its strategies in a fairly even distribution so I think it made little difference in this case. Presumably 100 games of training provide a smaller bias than 3000 games.


#4 dragon

openinggameswinsfirstlast
PvT_10/12gate1771%8145
PvT_10/15gate1242%15147
PvT_12nexus812%16132
PvT_1gatedtexpo743%36134
PvT_1gatereaver50%10118
PvT_28nexus1145%25149
PvT_2gatedt933%2128
PvT_2gaterngexpo729%32131
PvT_32nexus825%12124
PvT_9/9gate1878%7146
PvT_9/9proxygate1457%4148
PvT_bulldog60%5120
PvT_dtdrop825%0117
PvT_proxydt1471%1140
PvT_stove60%11125
15 openings15045%
enemygameswins
T_1fac3842%
T_fastexpand475%
T_unknown10844%
3 openings15045%


BananaBrain could not recognize most of Dragon’s builds. It looks like Dragon was vulnerable to mass zealots, an important weakness, and to hidden dark templar, which any terran might die to if unscouted. But what is the Stove doing there? Does it work against decent terran bots? Maybe the key is that there are few mid-rank terran bots, they are mostly in the upper and lower tiers.

67% overall win rate in training, but this time BananaBrain’s best counters matched between training and the tournament. The training helped, even though it was against a weaker version of Dragon.


#5 mcrave

openinggameswinsfirstlast
PvZ_10/12gate1369%24144
PvZ_1basespeedzeal1250%8133
PvZ_2basespeedzeal933%25148
PvZ_4gate2archon617%29132
PvZ_5gategoon1656%7129
PvZ_9/9gate2796%1145
PvZ_9/9proxygate1050%0147
PvZ_bisu520%1987
PvZ_neobisu1145%5149
PvZ_sairdt1030%4141
PvZ_sairgoon1765%3146
PvZ_sairreaver520%2691
PvZ_stove922%2140
13 openings15055%
enemygameswins
Z_9pool2882%
Z_overpool11847%
Z_unknown475%
3 openings15055%


According to McRave’s tables, McRave played overpool every game against BananaBrain. BananaBrain was able to correctly recognize that most of the time, but strangely won at a higher rate when recognition failed. Does BananaBrain perhaps have a reaction to overpool which was detrimental in this case? Or was BananaBrain perfectly right, and McRave sometimes slips up in its build order and goes 9 pool instead of overpool? I think it’s more likely that BananaBrain misrecognized it.


#6 microwave

openinggameswinsfirstlast
PvZ_10/12gate1771%6148
PvZ_1basespeedzeal1984%2141
PvZ_2basespeedzeal1164%1145
PvZ_4gate2archon956%4147
PvZ_5gategoon743%20125
PvZ_9/9gate1155%19123
PvZ_9/9proxygate1258%0130
PvZ_bisu1471%5138
PvZ_neobisu1060%11121
PvZ_sairdt1050%8146
PvZ_sairgoon1145%3149
PvZ_sairreaver956%7143
PvZ_stove1050%17136
13 openings15061%
enemygameswins
Z_10hatch1377%
Z_12hatch2085%
Z_12pool3749%
Z_4/5pool875%
Z_9pool5052%
Z_9poolspeed786%
Z_overpool1258%
Z_unknown367%
8 openings15061%


BananaBrain’s openings scored roughly similarly against Microwave, only a couple below 50% and only one above 75%. I think that argues that Microwave is well balanced in its skills.


#7 steamhammer

openinggameswinsfirstlast
PvZ_10/12gate17100%4148
PvZ_1basespeedzeal1377%8124
PvZ_2basespeedzeal1173%11130
PvZ_4gate2archon933%6140
PvZ_5gategoon944%19147
PvZ_9/9gate17100%27149
PvZ_9/9proxygate1694%5142
PvZ_bisu838%2145
PvZ_neobisu60%18129
PvZ_sairdt1493%0137
PvZ_sairgoon1164%7146
PvZ_sairreaver1040%14144
PvZ_stove956%1139
13 openings15071%
enemygameswins
Z_10hatch3453%
Z_12hatch8769%
Z_12pool1191%
Z_4/5pool2100%
Z_9pool8100%
Z_overpool3100%
Z_unknown5100%
7 openings15071%


The 2 gate zealot openings whomped Steamhammer. Steamhammer survives the zealot attack in many cases, but usually by spending more than it can afford so that it falls far behind in economy.


#8 daqin

openinggameswinsfirstlast
PvP_10/12gate1070%15140
PvP_12nexus757%49146
PvP_2gatedt1688%8147
PvP_2gatedtexpo1471%9133
PvP_2gatereaver1681%3149
PvP_3gaterobo1362%4138
PvP_3gatespeedzeal729%11121
PvP_4gategoon850%32118
PvP_9/9gate1694%16148
PvP_9/9proxygate1060%1135
PvP_nzcore1164%10139
PvP_zcore743%0130
PvP_zcorez729%2137
PvP_zzcore850%31145
14 openings15066%
enemygameswins
P_1gatecore6668%
P_4gategoon6860%
P_ffe1100%
P_unknown1580%
4 openings15066%

#9 zzzkbot

openinggameswinsfirstlast
PvZ_10/12gate12100%6133
PvZ_1basespeedzeal12100%25148
PvZ_2basespeedzeal14100%2149
PvZ_4gate2archon1191%3144
PvZ_5gategoon1283%0142
PvZ_9/9gate12100%21135
PvZ_9/9proxygate978%4146
PvZ_bisu1191%17145
PvZ_neobisu12100%10143
PvZ_sairdt12100%5147
PvZ_sairgoon12100%18136
PvZ_sairreaver1080%1132
PvZ_stove1191%12141
13 openings15094%
enemygameswins
Z_4/5pool9998%
Z_9pool4885%
Z_overpool2100%
Z_unknown1100%
4 openings15094%


ZZZKBot is the first opponent that BananaBrain outclassed. It did not much matter what protoss played.


#10 ualbertabot

openinggameswinsfirstlast
PvU_10/12gate2190%2145
PvU_9/9gate2291%4147
PvU_9/9proxygate1872%1133
PvU_ffe2391%0146
PvU_nzcore2085%10139
PvU_zcore2696%3149
PvU_zzcore2085%9148
7 openings15088%
enemygameswins
P_1gatecore2195%
P_2gate580%
P_2gatefast1794%
P_4gategoon2100%
P_unknown20%
T_2fac22100%
T_2rax1894%
T_unknown15100%
T_wallin1100%
Z_12hatch1493%
Z_4/5pool3266%
Z_unknown1100%
12 openings15088%


It’s interesting that BananaBrain recognized a terran wall in one game. UAlbertaBot does not know how to build a wall, and in fact places its early buildings near the command center. Terran is also the opponent race with the highest number of unrecognized (“unknown”) builds. BananaBrain suffered recognition trouble against Dragon too.


#11 willyt

openinggameswinsfirstlast
PvT_10/12gate12100%6148
PvT_10/15gate11100%12129
PvT_12nexus978%8146
PvT_1gatedtexpo1080%7139
PvT_1gatereaver1080%14143
PvT_28nexus862%5144
PvT_2gatedt1173%1145
PvT_2gaterngexpo978%29127
PvT_32nexus12100%0142
PvT_9/9gate12100%2149
PvT_9/9proxygate13100%3147
PvT_bulldog978%4141
PvT_dtdrop978%19108
PvT_proxydt967%25133
PvT_stove650%22131
15 openings15084%
enemygameswins
T_1fac888%
T_2rax5296%
T_fastexpand2677%
T_unknown6477%
4 openings15084%


The Stove did not work well against WillyT.


#12 ecgberht

openinggameswinsfirstlast
PvT_10/12gate10100%2127
PvT_10/15gate10100%6137
PvT_12nexus10100%24129
PvT_1gatedtexpo10100%9148
PvT_1gatereaver10100%11131
PvT_28nexus10100%15139
PvT_2gatedt11100%12142
PvT_2gaterngexpo10100%1140
PvT_32nexus10100%10125
PvT_9/9gate10100%18147
PvT_9/9proxygate10100%0145
PvT_bulldog10100%25149
PvT_dtdrop10100%8143
PvT_proxydt978%17146
PvT_stove10100%3144
15 openings15099%
enemygameswins
T_1fac8100%
T_2fac24100%
T_2rax7100%
T_fastexpand21100%
T_unknown9098%
5 openings15099%


The Stove did as well as anything against Ecgberht. But then, only one opening had any losses (it had 2 losses).


#13 eggbot

openinggameswinsfirstlast
PvP_10/12gate12100%1145
PvP_12nexus11100%16142
PvP_2gatedt12100%19148
PvP_2gatedtexpo1292%10137
PvP_2gatereaver10100%27122
PvP_3gaterobo989%12104
PvP_3gatespeedzeal12100%0146
PvP_4gategoon12100%3149
PvP_9/9gate12100%2143
PvP_9/9proxygate875%22136
PvP_nzcore989%13130
PvP_zcore11100%5147
PvP_zcorez11100%8138
PvP_zzcore989%11131
14 openings15096%
enemygameswins
P_cannonrush14796%
P_proxygate3100%
2 openings15096%