archive by month
Skip to content

AIIDE 2022 - what bots wrote data?

A brief note.

On a quick pass through, bot learning files look about the same as last year. The big exception is that Stardust now learns. Its data files look like timings or counts of a small number of events that the bot may want to adapt to. I’ll look more closely later.

Bots that did not compete last year:

PylonPuller wrote files that look similar to those of Halo by Hao Pan (the same author).

Styx did not write learning files.

CUNYBot wrote CSV files with strategy name, map name, and an opaque list of numbers.

AIIDE 2022 - the learning curves

I only see a few points to note in this year’s win percentage over time graph.

Graph of AIIDE 2022 win rates over the course of the tournament.

Most bots don’t appear to have gained in win rate after round 50 or so (50 games against each opponent). It’s not surprising. If a bot’s learning model is a k-armed bandit with a modest k, which is common, then the learning algorithm will have saturated by then. The curves up to that point are dominated by statistical noise and the struggle to adapt to opponents whose learning skills are at a similar level.

There are signs that #1 BananaBrain learned relative to #2 Stardust and came out ahead because of it. The wiggles in the graph are not entirely clear, though.

UAlbertaBot was able to learn a little bit beyond round 100. I suspect it learned more slowly because it plays random and has to learn separately for each race.

#4 Steamhammer was the champion learner. It passed #5 PurpleWave in round 149 and continued to improve very gradually. Steamhammer learns slowly but has a high ceiling because of its giant library of openings, and it thrives in long tournaments. Last year’s tournament was 149 rounds: If this year’s had been the same length, Steamhammer would have squeaked ahead in the very last round and its longer-term success would not have been clear.

AIIDE 2021 - what UAlbertaBot learned

I haven’t found time to investigate the second instance of “we both lost”. After this post, I’m nearly done with summarizing and aligning the bot learning files. The only bot I haven’t gotten to is FreshMeat, which has a unique learning system, not similar to any other bot’s. FreshMeat’s code is remarkably low-level, and deciphering the learning algorithm and the meaning of the learning files will take time.

In any case, here is UAlbertaBot’s learned data. UAlbertaBot keeps counts of wins and losses per strategy, not full history files, so its data can be laid out in a single table.

openingtotal#1
stardus
#2
bananab
#3
dragon
#4
steamha
#5
mcrave
#6
willyt
#7
microwa
#8
daqin
#9
freshme
total-  26%2-155  1%8-147  5%27-130  17%13-139  9%98-57  63%48-105  31%67-88  43%32-124  21%68-81  46%
4RaxMarines58-93 38%0-15 0%0-11 0%3-15 17%1-17 6%40-2 95%2-9 18%0-5 0%0-10 0%12-9 57%
MarineRush18-97 16%0-15 0%1-15 6%0-6 0%0-11 0%2-3 40%0-8 0%13-25 34%0-10 0%2-4 33%
TankPush12-102 11%0-15 0%0-11 0%0-6 0%0-11 0%1-2 33%5-25 17%0-5 0%3-23 12%3-4 43%
VultureRush15-90 14%0-14 0%0-10 0%5-19 21%0-11 0%0-1 0%0-8 0%1-9 10%0-10 0%9-8 53%
DTRush41-85 33%2-18 10%0-11 0%10-26 28%0-8 0%0-2 0%0-3 0%-0-4 0%29-13 69%
DragoonRush10-62 14%0-10 0%0-11 0%0-6 0%1-12 8%0-2 0%0-3 0%-7-14 33%2-4 33%
ZealotRush104-150 41%0-10 0%4-28 12%0-6 0%10-16 38%24-24 50%19-25 43%35-15 70%12-21 36%0-5 0%
2HatchHydra6-72 8%0-15 0%0-10 0%6-20 23%0-12 0%-0-2 0%0-3 0%0-4 0%0-6 0%
3HatchMuta1-61 2%0-15 0%0-10 0%0-6 0%0-12 0%-0-2 0%0-3 0%0-4 0%1-9 10%
3HatchScourge0-56 0%0-14 0%0-9 0%0-6 0%0-12 0%-0-2 0%0-3 0%0-4 0%0-6 0%
ZerglingRush98-158 38%0-14 0%3-21 12%3-14 18%1-17 6%31-21 60%22-18 55%18-20 47%10-20 33%10-13 43%

Looking down the total column on the left, there is one big surprise. UAlbertaBot has a primary strategy for each race it may roll, and switches away only if the primary strategy turns out poorly. In past years when I analyzed UAlbertaBot’s data (2018, 2019, and 2020), UAlbertaBot’s primary strategy with every race was also its best strategy overall when it rolled that race. This year, the primary terran strategy MarineRush was no longer best; it was far exceeded by 4RaxMarines, with better results against 5 opponents and equal zero against 2 more. 4RaxMarines does not mean build four barracks to train marines, it means build a barracks at supply 4: It is a fast rush. Here is the build order from the config file.

"Terran_4RaxMarines" : { "Race" : "Terran", "OpeningBuildOrder" : ["Barracks", "SCV", "SCV", "Marine", "Supply Depot", "Marine", "SCV", "Marine", "SCV", "Marine", "SCV", "Marine", "Barracks", "Marine", "Marine", "Marine"]}

I guess opponents were less prepared for the fast marine rush. McRave in particular was unable to cope. I looked through BASIL’s build order page and did not see it; I guess no bot plays 4 rax regularly. The version of UAlbertaBot on BASIL is different from the one in the tournament. The BASIL UAlbertaBot does play the slower marine rush, so its opponents have gotten used to it.

The 3HatchScourge build was useless. The build was specially designed to give UAlbertaBot a chance against XIMP, and apparently has no other value. Curiously, 3HatchMuta was nearly as helpless, with only 1 win, against FreshMeat. That win was the only win as zerg against FreshMeat, though, so chalk up one advantage.

AIIDE 2021 - Microwave versus DaQin

Two posts again today. Blue is good for Microwave, red is good for DaQin.

microwave strategies versus daqin strategies

overall4GateGoonForgeExpand5GateGoonForgeExpandSpeedlots
overall128/157 82%0/1 0%3/3 100%125/153 82%
1HatchMuta_Sparkle27/33 82%--27/33 82%
3HatchHydra0/1 0%--0/1 0%
3HatchLurker0/1 0%--0/1 0%
3HatchMuta95/106 90%-2/2 100%93/104 89%
3HatchMutaExpo0/1 0%--0/1 0%
4HatchPoolHydra1/1 100%--1/1 100%
5HatchPoolHydra1/2 50%0/1 0%-1/1 100%
6Pool0/1 0%--0/1 0%
6PoolSpeed0/1 0%--0/1 0%
9PoolHatchGasSpeed7D1/3 33%--1/3 33%
9PoolHatchGasSpeed8D3/6 50%-1/1 100%2/5 40%
9PoolSpeedLing0/1 0%--0/1 0%

DaQin barely varied its play, so again, nothing to see here.

microwave as seen by daqin

microwave played#daqin recognized
1HatchMuta_Sparkle3322 Not fast rush | 7 Heavy rush | 4 Proxy
3HatchHydra11 Not fast rush
3HatchLurker11 Heavy rush
3HatchMuta10684 Not fast rush | 16 Heavy rush | 4 Proxy | 2 Unknown
3HatchMutaExpo11 Not fast rush
4HatchPoolHydra11 Hydra bust
5HatchPoolHydra22 Not fast rush
6Pool11 Fast rush
6PoolSpeed11 Fast rush
9PoolHatchGasSpeed7D32 Heavy rush | 1 Not fast rush
9PoolHatchGasSpeed8D63 Fast rush | 2 Heavy rush | 1 Unknown
9PoolSpeedLing11 Heavy rush

9 pool is again sometimes a fast rush and sometimes something incompatible. And there are some stray proxies again. That is probably a bug inherited from Steamhammer (and long since fixed there).

daqin as seen by microwave

daqin played#microwave recognized
4GateGoon11 Unknown
ForgeExpand5GateGoon32 Turtle | 1 Unknown
ForgeExpandSpeedlots15387 Turtle | 43 SafeExpand | 16 Unknown | 4 NakedExpand | 3 HeavyRush

AIIDE 2021 - McRave versus DaQin

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

mcrave strategies versus daqin strategies

overallForgeExpand5GateGoonForgeExpandSpeedlots
overall122/157 78%3/3 100%119/154 77%
HatchPool,12Hatch,2HatchMuta102/123 83%3/3 100%99/120 82%
PoolHatch,9Pool,2HatchMuta1/3 33%-1/3 33%
PoolHatch,9Pool,3HatchMuta1/2 50%-1/2 50%
PoolHatch,9Pool,6HatchHydra0/2 0%-0/2 0%
PoolHatch,Overpool,2HatchMuta18/23 78%-18/23 78%
PoolHatch,Overpool,3HatchMuta0/3 0%-0/3 0%
PoolHatch,Overpool,6HatchHydra0/1 0%-0/1 0%

Move along, nothing to see here folks.

mcrave as seen by daqin

mcrave played#daqin recognized
HatchPool,12Hatch,2HatchMuta12393 Not fast rush | 18 Unknown | 12 Heavy rush
PoolHatch,9Pool,2HatchMuta31 Not fast rush | 1 Unknown | 1 Fast rush
PoolHatch,9Pool,3HatchMuta22 Fast rush
PoolHatch,9Pool,6HatchHydra21 Unknown | 1 Not fast rush
PoolHatch,Overpool,2HatchMuta2322 Not fast rush | 1 Heavy rush
PoolHatch,Overpool,3HatchMuta32 Not fast rush | 1 Heavy rush
PoolHatch,Overpool,6HatchHydra11 Not fast rush

Apparently 9 pool is sometimes a fast rush and sometimes a not fast rush.

daqin as seen by mcrave

daqin played#mcrave recognized
ForgeExpand5GateGoon33 FFE,Forge,5GateGoon
ForgeExpandSpeedlots15488 FFE,Forge,Speedlot | 24 FFE,Forge,5GateGoon | 23 FFE,Gateway,Speedlot | 7 FFE,Forge,ZealotArchon | 6 FFE,Nexus,Speedlot | 2 FFE,Nexus,5GateGoon | 2 FFE,Forge,Unknown | 2 FFE,Gateway,5GateGoon

There are those dragoons again, even when DaQin believes it is making zealots. I imagine that something in McRave’s recognizer is approximate. It only matters if McRave reacts to its own wrong recognition, though.

AIIDE 2021 - Dragon versus DaQin

Two posts today, because they’re short. Blue is good for Dragon, red is good for DaQin.

dragon strategies versus daqin strategies

overall12NexusCarriers3GateDT4GateGoonDTDrop
overall74/157 47%52/127 41%5/9 56%16/20 80%1/1 100%
1rax fe55/98 56%42/81 52%-13/17 76%-
2rax bio1/6 17%1/6 17%---
2rax mech4/11 36%2/9 22%1/1 100%-1/1 100%
bio4/13 31%1/10 10%3/3 100%--
dirty worker rush0/5 0%0/5 0%---
mass vulture10/20 50%6/12 50%1/5 20%3/3 100%-
siege expand0/4 0%0/4 0%---

The bots seem to have found the saddle point of the strategy game: DaQin’s carriers were from OK to great against everything, and Dragon’s “1 rax fe” was also as good as it got against everything.

dragon as seen by daqin

dragon played#daqin recognized
1rax fe9832 Safe expand | 27 Unknown | 17 Proxy | 13 Naked expand | 9 Not fast rush
2rax bio63 Unknown | 2 Safe expand | 1 Naked expand
2rax mech117 Safe expand | 2 Not fast rush | 1 Proxy | 1 Naked expand
bio136 Safe expand | 3 Naked expand | 2 Unknown | 2 Proxy
dirty worker rush55 Worker rush
mass vulture2017 Factory | 2 Proxy | 1 Not fast rush
siege expand43 Unknown | 1 Not fast rush

Recognition was good against the worker rush and the vultures, but it looks scattered otherwise. Where did those supposed proxies come from?

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 - what DaQin learned


#1 stardust

openinggameswinsfirstlast
2GateDT13610%2156
3GateDT60%082
4GateGoon150%1135
3 openings1578%
enemygameswins
DarkTemplar rush738%
Fast rush220%
Not fast rush5413%
Proxy20%
Unknown60%
5 openings1578%


Results against #1 Stardust and #2 BananaBrain say that dark templars remain dangerous against strong opponents. Which is not a surprise; pros beat each other with DTs too.


#2 bananabrain

openinggameswinsfirstlast
2GateDT30%814
3GateDT15011%0156
4GateGoon40%139
3 openings15710%
enemygameswins
DarkTemplar rush1429%
Fast rush1323%
Not fast rush10%
Proxy10%
4 openings15710%



#3 dragon

openinggameswinsfirstlast
12NexusCarriers12759%0156
3GateDT944%229
4GateGoon2020%17148
DTDrop10%33
4 openings15753%
enemygameswins
Factory1753%
Naked expand1878%
Not fast rush1331%
Proxy2218%
Safe expand4747%
Unknown3571%
Worker rush5100%
7 openings15753%



#4 steamhammer

openinggameswinsfirstlast
ForgeExpand5GateGoon15774%0157
ForgeExpandSpeedlots10%33
2 openings15873%
enemygameswins
Fast rush4100%
Heavy rush2685%
Hydra bust2100%
Not fast rush12069%
Unknown683%
5 openings15873%


Apparently DaQin’s exploration parameter is set so that it doesn’t feel the need to explore if it has 74% wins. Is it true?


#5 mcrave

openinggameswinsfirstlast
ForgeExpand5GateGoon30%05
ForgeExpandSpeedlots15423%1156
2 openings15722%
enemygameswins
Fast rush367%
Heavy rush1421%
Not fast rush12021%
Unknown2025%
4 openings15722%


No, the note under Steamhammer is not true. DaQin doesn’t seem to explore much against zerg no matter what. In fact, looking more widely, DaQin explored its opening choices widely only against WillyT. Against others it mostly stuck to one primary choice. That is probably not good.


#6 willyt

openinggameswinsfirstlast
12NexusCarriers3256%096
3GateDT7468%3110
4GateGoon1225%41154
DTDrop3967%48156
4 openings15762%
enemygameswins
Heavy rush2157%
Naked expand250%
Not fast rush1963%
Proxy10%
Safe expand7457%
Unknown4075%
6 openings15762%



#7 microwave

openinggameswinsfirstlast
4GateGoon1100%1010
ForgeExpand5GateGoon30%04
ForgeExpandSpeedlots15318%1156
3 openings15718%
enemygameswins
Fast rush580%
Heavy rush2928%
Hydra bust10%
Not fast rush11115%
Proxy80%
Unknown30%
6 openings15718%



#9 freshmeat

openinggameswinsfirstlast
4GateGoon2100%89139
ForgeExpand5GateGoon15229%0156
ForgeExpandSpeedlots30%826
3 openings15729%
enemygameswins
Fast rush12100%
Heavy rush1856%
Hydra bust1100%
Not fast rush11917%
Proxy20%
Unknown560%
6 openings15729%



#10 ualbertabot

openinggameswinsfirstlast
3GateDT4693%0156
4GateGoon40%59111
ForgeExpand5GateGoon10776%3154
3 openings15779%
enemygameswins
DarkTemplar rush1974%
Factory17100%
Fast rush6970%
Heavy rush8100%
Hydra bust2100%
Not fast rush2986%
Proxy650%
Unknown7100%
8 openings15779%

AIIDE 2021 - Microwave versus Dragon

I found another game that both bots recorded as a loss. The cause is different. While I try to figure it out, here is business as usual:

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

microwave strategies versus dragon strategies

overall1rax fe2rax bio2rax mechbiodirty worker rushmass vulturesiege expand
overall55/157 35%8/24 33%11/28 39%17/66 26%10/26 38%2/2 100%3/5 60%4/6 67%
10Hatch9Pool9gas0/1 0%-0/1 0%-----
11Gas10PoolMuta6/10 60%-1/1 100%0/1 0%4/6 67%-1/2 50%-
11HatchTurtleHydra0/1 0%--0/1 0%----
12HatchTurtle1/2 50%-0/1 0%----1/1 100%
12PoolMuta0/1 0%---0/1 0%---
1HatchMuta_Sparkle1/3 33%0/1 0%0/1 0%1/1 100%----
2HatchLurker0/1 0%0/1 0%------
2HatchMuta2/6 33%0/1 0%-2/5 40%----
3HatchHydra0/2 0%--0/2 0%----
3HatchLingBust0/1 0%--0/1 0%----
3HatchLurker8/17 47%1/6 17%2/4 50%3/4 75%2/2 100%--0/1 0%
3HatchMuta0/2 0%---0/2 0%---
3HatchMutaExpo0/1 0%-0/1 0%-----
4PoolHard0/4 0%-0/1 0%0/3 0%----
4PoolSoft3/25 12%0/3 0%1/3 33%1/12 8%0/5 0%1/1 100%-0/1 0%
5HatchPool6/10 60%2/2 100%2/3 67%-0/3 0%1/1 100%-1/1 100%
5HatchPoolHydra15/22 68%5/5 100%3/7 43%2/4 50%3/3 100%-1/2 50%1/1 100%
7Pool0/1 0%-0/1 0%-----
7PoolHydraRush7D0/1 0%--0/1 0%----
9Pool0/3 0%--0/3 0%----
9PoolHatch0/1 0%0/1 0%------
9PoolHatchGasSpeed8D0/1 0%-0/1 0%-----
9PoolLurker0/2 0%0/1 0%-0/1 0%----
9PoolSpeed11/26 42%0/1 0%1/1 100%8/21 38%1/2 50%--1/1 100%
9PoolSpeedLing1/8 12%0/2 0%1/2 50%0/3 0%0/1 0%---
ZvZ_Overgas11Pool0/1 0%--0/1 0%----
ZvZ_Overgas9Pool0/1 0%--0/1 0%----
ZvZ_Overpool9Gas1/3 33%--0/1 0%0/1 0%-1/1 100%-

Microwave beat the worker rush with both 4PoolSoft and 5HatchPool (5 hatcheries before pool), which implies that it has a special reaction to the worker rush.

The fullest cells are 9PoolSpeed versus “2rax mech”, with 21 games, and 4PoolSoft versus the same with 12 games. No other cell has more than 7 games. This is despite the fact that Dragon barely played 3 of its 7 openings. When the bots have this many plans available, it is statistically impossible for a bot to discover purely from experience against one opponent how its choices interact with its opponent’s choices. Microwave’s answer to that is the same as Steamhammer’s: Simplify its understanding of the opponent’s opening to a small number of vaguely specified plans like HeavyRush. I don’t think that answer will scale to a high level of play. I think bots need either prior knowledge of how opening plans interact, or else the ability to reason about how plans interact, perhaps with a search algorithm. One way to produce the prior knowledge would be to run the imaginary search algorithm offline.

dragon as seen by microwave

dragon played#microwave recognized
1rax fe2417 Factory | 6 SafeExpand | 1 Unknown
2rax bio2817 Unknown | 6 SafeExpand | 3 HeavyRush | 2 Factory
2rax mech6619 SafeExpand | 19 Factory | 16 Unknown | 7 HeavyRush | 5 Turtle
bio2610 SafeExpand | 9 Factory | 4 Turtle | 3 Unknown
dirty worker rush22 WorkerRush
mass vulture55 Factory
siege expand65 Factory | 1 SafeExpand

Microwave sees the enemy builds largely as either factory first or expansion first.

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 - what Microwave learned

Microwave’s history files include large doses of training data prepared before the tournament. I snipped that data out, so the tables here include only tournament games and the 7 post-tournament games that are excluded from the official results.


#1 stardust

openinggameswinsfirstlast
10Hatch9Pool9gas20%95115
10HatchMain9Pool9Gas10%8585
10HatchTurtleHydra10%5050
11Gas10PoolLurker10%6060
11HatchTurtleHydra50%4153
11HatchTurtleLurker20%70122
11HatchTurtleMuta20%3076
12Hatch20%72105
12HatchMain20%8889
12HatchTurtle10%00
12Pool10%145145
12PoolMain10%127127
12PoolMuta10%108108
1HatchMuta_Sparkle20%54155
2HatchHydra10%9898
2HatchLurker20%1023
2HatchMuta20%4381
2HatchMuta_Sparkle30%1996
3Hatch20%13132
3HatchExpo10%136136
3HatchHydra20%59114
3HatchHydraBust20%4041
3HatchHydraExpo10%2424
3HatchLingBust40%46151
3HatchMuta10%88
3HatchMutaExpo70%25137
3HatchMuta_Sparkle10%1212
3HatchPool20%1562
3HatchPoolHydra40%65113
3HatchPoolHydraExpo20%4775
4HatchBeforeGas50%16130
4HatchPool10%129129
4HatchPoolHydra10%149149
4PoolHard30%38124
4PoolSoft60%2121
5HatchPoolHydra50%6117
5Pool50%18138
5PoolSpeed10%103103
6Pool10%128128
6PoolSpeed20%7999
7PoolHydraLingRush7D10%2929
7PoolHydraRush7D20%56152
8Pool30%48110
9Hatch9Pool9Gas30%1751
9HatchMain8Pool8Gas20%69140
9Pool20%7492
9PoolExpo10%123123
9PoolGasHatchSpeed7D10%7171
9PoolGasHatchSpeed8D60%590
9PoolHatch30%7119
9PoolHatchGasSpeed7D10%33
9PoolHatchGasSpeed8D20%106142
9PoolLurker30%34120
9PoolSpeed30%11147
9PoolSpeedLing40%36154
9PoolSunken10%118118
OverpoolSpeed60%9146
OverpoolSunken10%148148
OverpoolTurtle40%45135
ZvP_10Hatch9Pool20%4478
ZvP_11Hatch10Pool40%14150
ZvP_2HatchHydra10%156156
ZvP_9Hatch9Pool40%100144
ZvZ_Overgas9Pool20%1139
ZvZ_Overpool11Gas10%5353
ZvZ_Overpool9Gas20%2657
ZvZ_OverpoolTurtle10%109109
67 openings1570%
enemygameswins
HeavyRush230%
NakedExpand130%
Unknown1210%
3 openings1570%


Microwave has many strategies. I counted 79, compared to 73 last year (my first impression was that there were many more this year, but it was not true). Like Steamhammer, when losing badly it flails, trying anything.


#2 bananabrain

openinggameswinsfirstlast
11Gas10PoolLurker30%45133
11HatchTurtleHydra10%8585
11HatchTurtleMuta10%8989
12Hatch10%120120
12HatchTurtle30%6772
12PoolMain1520%39145
12PoolMuta10%8181
2HatchMuta20%52122
2HatchMuta_Sparkle10%8383
3HatchHydra714%30100
3HatchLingBust40%12137
3HatchLurker10%4444
3HatchMuta20%91111
3HatchPoolHydra30%27148
4HatchBeforeGas10%4848
4HatchPool10%5858
4HatchPoolHydra30%46134
4PoolHard70%0141
4PoolSoft10%7777
6Pool10%3737
7Pool20%32128
7PoolHydraRush7D20%2152
8Pool20%56121
9Hatch9Pool9Gas20%101125
9HatchTurtleHydra10%2121
9Pool10%4141
9PoolGasHatchSpeed8D5728%1154
9PoolHatchGasSpeed8D119%13147
9PoolSpeed10%6161
9PoolSpeedLing80%36156
Overpool10%8686
OverpoolTurtle10%155155
ZvP_10Hatch9Pool10%55
ZvP_2HatchHydra10%112112
ZvP_9Hatch9Pool10%9898
ZvZ_Overgas11Pool10%119119
ZvZ_Overgas9Pool10%106106
ZvZ_Overpool9Gas30%66151
ZvZ_OverpoolTurtle10%146146
39 openings15713%
enemygameswins
HeavyRush774%
NakedExpand2348%
SafeExpand225%
Turtle911%
Unknown2619%
5 openings15713%


See NakedExpand in the enemy table: Microwave was able to punish BananaBrain when BananaBrain made nexus before cannons. It’s a theme. I think it indicates general aggressiveness or rushiness in the early game. I get 6:52 for Microwave’s median game length when defeating BananaBrain.


#3 dragon

openinggameswinsfirstlast
10Hatch9Pool9gas10%8787
11Gas10PoolMuta1060%62156
11HatchTurtleHydra10%5959
12HatchTurtle250%9293
12PoolMuta10%142142
1HatchMuta_Sparkle333%30103
2HatchLurker10%9898
2HatchMuta633%7107
3HatchHydra20%2024
3HatchLingBust10%4141
3HatchLurker1747%76110
3HatchMuta20%134135
3HatchMutaExpo10%8484
4PoolHard40%063
4PoolSoft2512%1136
5HatchPool1060%114132
5HatchPoolHydra2268%5154
7Pool10%3434
7PoolHydraRush7D10%6464
9Pool30%973
9PoolHatch10%105105
9PoolHatchGasSpeed8D10%3232
9PoolLurker20%72113
9PoolSpeed2642%3101
9PoolSpeedLing812%53131
ZvZ_Overgas11Pool10%2121
ZvZ_Overgas9Pool10%5454
ZvZ_Overpool9Gas333%12127
28 openings15735%
enemygameswins
Factory5733%
HeavyRush1010%
SafeExpand4236%
Turtle933%
Unknown3741%
WorkerRush2100%
6 openings15735%


Microwave had 3 builds that scored above 50%, and others that were close, but experimented too much. It would have scored much higher if it had exploited more and explored less. I think the lesson is that the learning algorithm’s exploration parameter should be set depending on the opponent’s expected strength. If you’re expecting to score 35% and you find a choice that scores 60%, reduce your exploration and exploit the winner unless and until the opponent adapts. If you have more than one high-scoring build (and they’re not too much alike), switch between them and your opponent will have more trouble adapting. If you’re expecting to score 70%, keep exploring if your best choice is only 60%.


#4 steamhammer

openinggameswinsfirstlast
11HatchTurtleLurker10%9191
12Hatch10%105105
12HatchTurtle743%148156
12Pool10%1919
2HatchLurker10%138138
3HatchExpo933%96136
3HatchHydraExpo20%88126
3HatchLingBust633%83128
3HatchMuta_Sparkle333%142144
3HatchPool10%3838
3HatchPoolExpo10%8282
4PoolHard911%18137
4PoolSoft617%085
5HatchPool10%4343
5HatchPoolHydra10%11
5Pool119%6119
5PoolSpeed10%5252
6Pool10%101101
7PoolHydraRush7D10%111111
8Pool10%7979
9PoolExpo20%68106
9PoolGasHatchSpeed8D10%4141
9PoolHatch425%34125
9PoolHydra10%7878
9PoolLurker10%1414
9PoolSpeed2133%4134
9PoolSpeedLing2748%48157
9PoolSunkHatch10%9292
9PoolSunken10%147147
OverpoolSpeed10%2020
ZvP_11Hatch10Pool10%22
ZvP_2HatchHydra10%121121
ZvZ_Overgas11Pool2540%25135
ZvZ_Overpool11Gas50%9141
ZvZ_Overpool9Gas10%2121
35 openings15827%
enemygameswins
HeavyRush13422%
NakedExpand683%
Turtle825%
Unknown1060%
4 openings15827%


Even against a higher-finishing zerg, Microwave punishes the fast expansion when it recognizes it. It’s striking. Zerg is not able to add static defense to a base before the base finishes, so this ability to restrict the oppoent’s strategy could be even more powerful in ZvZ.


#5 mcrave

openinggameswinsfirstlast
10HatchMain9Pool9Gas20%24124
10HatchTurtleHydra425%2767
12Hatch10%109109
12HatchMain10%44
12PoolMain20%277
12PoolMuta10%88
2HatchHydra10%128128
2HatchLurkerAllIn10%9090
2HatchMuta10%1717
3Hatch838%81101
3HatchMuta10%7676
3HatchPoolHydraExpo20%7188
4HatchBeforeGas10%8484
4HatchPoolHydra10%126126
4PoolHard520%9135
4PoolSoft540%6156
5Pool10%1919
6Pool20%16125
8Pool30%018
8PoolHydraRush8D10%4949
9HatchTurtleHydra10%5757
9Pool838%12122
9PoolExpo633%96117
9PoolGasHatchSpeed7D10%1414
9PoolHatch10%142142
9PoolSpeed1136%1123
Overpool10%7373
OverpoolLurker10%6363
ZvP_10Hatch9Pool4951%38155
ZvP_11Hatch10Pool10%9191
ZvP_9Hatch9Pool3165%10153
ZvZ_Overpool9Gas20%37
32 openings15739%
enemygameswins
FastRush40%
HeavyRush14040%
Turtle714%
Unknown667%
4 openings15739%



#6 willyt

openinggameswinsfirstlast
10Hatch9Pool9gas333%36149
10HatchMain9Pool9Gas333%126146
12HatchMain20%31108
12HatchTurtle10%105105
12Pool1250%78139
12PoolMuta520%35141
2HatchHydra20%77101
2HatchLurker825%3150
3HatchExpo333%115145
3HatchHydraBust10%6969
3HatchLingBust650%95156
3HatchMuta1136%057
3HatchMutaExpo20%54125
3HatchPool10%1212
3HatchPoolHydraExpo333%3347
4PoolSoft2236%59154
5HatchPool10%5656
7PoolHydraRush7D10%117117
8PoolHydraRush8D10%7373
9Hatch9Pool9Gas729%263
9HatchMain8Pool8Gas10%106106
9Pool633%139
9PoolExpo1250%7153
9PoolGasHatchSpeed7D450%7181
9PoolGasHatchSpeed8D250%6282
9PoolHatchGasSpeed7D10%2929
9PoolHydra10%9191
9PoolLurker729%43142
9PoolSpeed450%1458
9PoolSpeedLing10%103103
9PoolSunkHatch10%5151
9PoolSunken1242%2294
OverpoolLurker10%3232
OverpoolSpeed10%5555
OverpoolSunken10%7272
ZvP_10Hatch9Pool10%129129
ZvP_9Hatch9Pool333%4161
ZvZ_Overgas9Pool10%6666
ZvZ_Overpool11Gas10%5252
ZvZ_Overpool9Gas10%8888
40 openings15732%
enemygameswins
Factory5326%
HeavyRush2214%
NakedExpand16100%
Proxy10%
SafeExpand1118%
Unknown5430%
6 openings15732%


And against terran, too. Against Microwave, if expanding early, apparently terran and protoss should add defenses at the natural first.


#8 daqin

openinggameswinsfirstlast
1HatchMuta_Sparkle3382%45153
3HatchHydra10%136136
3HatchLurker10%3838
3HatchMuta10690%0156
3HatchMutaExpo10%108108
4HatchPoolHydra1100%2525
5HatchPoolHydra250%10132
6Pool10%9292
6PoolSpeed10%110110
9PoolHatchGasSpeed7D333%646
9PoolHatchGasSpeed8D650%265
9PoolSpeedLing10%4444
12 openings15782%
enemygameswins
HeavyRush3100%
NakedExpand475%
SafeExpand4372%
Turtle8988%
Unknown1872%
5 openings15782%


The first opponent that Microwave outscored, and it was a runaway. Steamhammer struggled versus DaQin, but the other zergs were fine. Later I’ll examine why to see if there are lessons for Steamhammer.


#9 freshmeat

openinggameswinsfirstlast
2HatchLurker10%2626
4PoolSoft1346%0144
9PoolHatch4486%5156
9PoolSpeedLing6589%1154
OverpoolSpeed3482%3149
5 openings15783%
enemygameswins
FastRush1587%
HeavyRush3661%
NakedExpand11100%
Turtle4185%
Unknown5491%
5 openings15783%


The strong results against NakedExpand show here too.


#10 ualbertabot

openinggameswinsfirstlast
10Hatch9Pool9gas250%87107
11Gas10PoolLurker6874%27147
12Hatch20%24140
12Pool10%1313
1HatchMuta_Sparkle10%148148
2HatchLurker10%121121
2HatchLurkerAllIn10%1414
2HatchMuta_Sparkle10%122122
3HatchHydraExpo10%3333
3HatchLurker10%2020
4PoolSoft617%018
5Pool367%135145
5PoolSpeed933%1116
9Pool10%77
9PoolExpo10%5252
9PoolGasHatchSpeed8D3358%995
9PoolHatch540%4399
9PoolSpeed10%137137
9PoolSpeedLing6100%149154
9PoolSunken333%98141
ZvP_10Hatch9Pool10%110110
ZvP_2HatchHydra10%143143
ZvZ_Overgas11Pool560%111142
ZvZ_Overpool9Gas10%55
24 openings15557%
enemygameswins
Factory1493%
FastRush3253%
HeavyRush7845%
NakedExpand8100%
Unknown2365%
5 openings15557%


Like McRave but apparently for a different reason, Microwave had unnecessary trouble with UAlbertaBot. It takes more than a simpleminded learning algorithm to adapt to a random opponent with such different rushes for each race. The ideal answer is to adapt during the game after scouting. Steamhammer’s answer is a super-turtle build that defeats all of UAlbertaBot’s rushes. But still, see that 100% next to NakedExpand?

AIIDE 2021 - McRave versus WillyT

These tables tell more about McRave than about WillyT. Blue is good for McRave, red is good for WillyT.

mcrave strategies versus willyt strategies

overall1 rush2 fe bio-mech3 fe mech4 tonk
overall48/157 31%16/41 39%9/54 17%12/47 26%11/15 73%
HatchPool,12Hatch,2HatchMuta29/89 33%10/20 50%6/32 19%10/33 30%3/4 75%
PoolHatch,12Pool,3HatchMuta19/55 35%6/18 33%3/16 19%2/12 17%8/9 89%
PoolHatch,Overpool,2HatchMuta0/13 0%0/3 0%0/6 0%0/2 0%0/2 0%

I find it strange that McRave’s overpool into 2 hatch muta failed in every case. Is it a reaction build that turned out to be a misreaction to what WillyT does? Probably not, it was tried against every WillyT opener. McRave’s other 2 builds were about equal, though the table shows that they were best in different cases. Switching between them was likely correct. The ratio that they were tried in also looks good to me: You want a ratio that leads to the final results being about equal.

WillyT would have done better without 15 tonk builds.

willyt as seen by mcrave

willyt played#mcrave recognized
1 rush4140 Unknown,Unknown,Unknown | 1 RaxCC,1RaxFE,Unknown
2 fe bio-mech5423 RaxCC,1RaxFE,Unknown | 20 RaxCC,1RaxFE,1FactTanks | 6 Unknown,Unknown,Unknown | 5 RaxCC,1RaxFE,5FactGoliath
3 fe mech4733 RaxCC,1RaxFE,5FactGoliath | 8 Unknown,Unknown,Unknown | 6 RaxCC,1RaxFE,Unknown
4 tonk1513 Unknown,Unknown,Unknown | 2 RaxFact,Unknown,5FactGoliath

Both the rush and the tonk build usually denied scouting, which seems like it should have been important because the builds call for opposite reactions. Yet McRave defeated the tanks and had less trouble with the rush than with WillyT’s expansion builds. RaxCC and 1RaxFE seem simple enough to recognize, and were. The followup seems harder to recognize, and was. I doubt that so many were actually 5FactGoliath.

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 - what WillyT learned

A middle group of bots finished close to each other, from #5 McRave at 41.70% to #8 DaQin at 39.63%. #6 WillyT is the second of the group.

WillyT’s learning files record the bot’s strategy as 01, 02, 03, or 04. Last year it only went up to 03. There may be an expectation of going up to 10 someday! Here is how I translated the strategy numbers into names, based on the numbering in the bot’s top-level README.

#namedescription
011 rush2 rax bio + SCVs
022 fe bio-mech 1 rax expand into bio-mech
033 fe mech1 rax expand into mech
044 tonkslowly make many tanks

#1 stardust

openinggameswinsfirstlast
4 tonk1563%0155
1 opening1563%


Stardust got special treatment, and it was still only good enough for 3%. The tonk build seems to have been specially devised to give a chance against Stardust. I checked on BASIL and found that the chance there was never high. But it’s over zero, that’s better than Steamhammer did!


#2 bananabrain

openinggameswinsfirstlast
1 rush467%4156
2 fe bio-mech7910%0154
3 fe mech170%3152
4 tonk150%1141
4 openings1577%


Switching between the rush and bio-mech was able to squeeze a little blood from BananaBrain. It’s interesting that mech scored lower, though the expected win rate is so low that it’s hard to be sure the difference is real. Does the build suffer from a weak timing?


#3 dragon

openinggameswinsfirstlast
1 rush300%3155
2 fe bio-mech353%0156
3 fe mech665%1153
4 tonk260%2154
4 openings1573%


The author explained in a comment that WillyT is weak at TvT because it does not understand siege lines. With only one terran opponent, it wasn’t critical. This version of Dragon always makes a slow start to the game, so any slowness in WillyT’s bio-mech build did not matter, and having tanks likely helped.


#4 steamhammer

openinggameswinsfirstlast
1 rush8649%10155
2 fe bio-mech5345%2156
3 fe mech1118%0150
4 tonk70%3147
4 openings15743%


WillyT could not outscore Steamhammer, but it made a good attempt. I find it distressing that the rush won so many games; it’s a strong rush but not that hard to hold. Again, bio-mech was better than mech. Well, that’s more expected versus zerg, but I wonder whether the reason is the same as versus BananaBrain?


#5 mcrave

openinggameswinsfirstlast
1 rush4161%4155
2 fe bio-mech5483%0154
3 fe mech4774%13156
4 tonk1527%5138
4 openings15769%


McRave is meticulous in defense, which shows in these numbers. But it suffered against 2-base play. I think we can infer that WillyT has good mutalisk defense.


#7 microwave

openinggameswinsfirstlast
1 rush5883%0155
2 fe bio-mech1942%7156
3 fe mech4764%8153
4 tonk3361%6151
4 openings15768%


The tonk build had success against Microwave, but was neither successful nor much played other than here and versus Stardust. I’d say the build is overspecialized, useful only in a narrow range of situations. The rush was overwhelming, though.


#8 daqin

openinggameswinsfirstlast
1 rush1414%235
2 fe bio-mech13044%4154
3 fe mech70%834
4 tonk40%018
4 openings15538%


And again, bio-mech over mech. It’s not conclusive, but I feel that something may be weak in the mech build. Maybe WillyT is just better with marines.


#9 freshmeat

openinggameswinsfirstlast
1 rush13372%4156
2 fe bio-mech1250%239
3 fe mech633%138
4 tonk650%0136
4 openings15768%


FreshMeat is newer and perhaps not ready yet to face the rush.


#10 ualbertabot

openinggameswinsfirstlast
1 rush7381%5151
2 fe bio-mech4961%0154
3 fe mech2654%3148
4 tonk729%12144
4 openings15568%


UAlbertaBot, with aggressive openers and no strong defensive skill, also fell to the rush. It got outrushed. It strikes me that WillyT scored nearly the same against #5 McRave, #7 Microwave, #9 FreshMeat, and #10 UAlbertaBot, even though the four are different in style and strength. WillyT did not crush any opponent. To me that suggests some kind of inconsistency in its play: It may have flaws that even weaker bots can exploit sometimes.

AIIDE 2021 - McRave versus Dragon

McRave recorded all 157 games versus Dragon, but Dragon recorded only 155. I was able to align the files anyway, because Dragon’s missing games were clearly due to Dragon’s 2 crashes. I manually removed the corresponding games from McRave’s records. Then there was one more fix: The game of round 97 that McRave and Dragon both recorded that they had lost. Officially, McRave had timed out and Dragon won, so I manually altered Dragon’s game record to give it the win.

Dragon doesn’t record anything but win/loss and its own strategy, so it has nothing to say about how McRave played.

mcrave strategies versus dragon strategies

overall1rax fe2rax bio2rax mechbiodirty worker rushmass vulturesiege expand
overall51/155 33%4/20 20%14/40 35%6/17 35%9/24 38%2/2 100%3/6 50%13/46 28%
HatchPool,12Hatch,2HatchMuta21/66 32%0/7 0%5/14 36%3/5 60%2/11 18%-2/2 100%9/27 33%
HatchPool,12Hatch,2HatchSpeedling0/1 0%--0/1 0%----
PoolHatch,12Pool,2HatchMuta1/9 11%0/2 0%0/2 0%1/2 50%---0/3 0%
PoolHatch,12Pool,3HatchMuta14/36 39%1/3 33%6/14 43%1/2 50%6/11 55%-0/3 0%0/3 0%
PoolHatch,Overpool,2HatchMuta9/26 35%3/4 75%1/7 14%0/4 0%1/2 50%--4/9 44%
PoolHatch,Overpool,2HatchSpeedling2/2 100%----2/2 100%--
PoolHatch,Overpool,3HatchMuta4/15 27%0/4 0%2/3 67%1/3 33%--1/1 100%0/4 0%

Another reaction build: PoolHatch,Overpool,2HatchSpeedling was a reaction to Dragon’s worker rush, and taught Dragon not to do that.

dragon as seen by mcrave

dragon played#mcrave recognized
1rax fe2012 Unknown,Unknown,Unknown | 5 RaxCC,1RaxFE,5FactGoliath | 3 RaxCC,1RaxFE,Unknown
2rax bio4031 Unknown,Unknown,Unknown | 6 2Rax,Main,Unknown | 1 2Rax,Main,1FactTanks | 1 RaxCC,1RaxFE,Unknown | 1 2Rax,Expand,Unknown
2rax mech1714 Unknown,Unknown,Unknown | 2 2Rax,Main,Unknown | 1 2Rax,Proxy,Unknown
bio2411 RaxCC,1RaxFE,5FactGoliath | 7 Unknown,Unknown,Unknown | 3 RaxCC,1RaxFE,1FactTanks | 3 RaxCC,1RaxFE,Unknown
dirty worker rush22 Unknown,Unknown,WorkerRush
mass vulture65 Unknown,Unknown,Unknown | 1 RaxFact,Unknown,2PortWraith
siege expand4618 Unknown,Unknown,Unknown | 13 RaxFact,Unknown,5FactGoliath | 9 RaxCC,1RaxFE,5FactGoliath | 4 RaxCC,1RaxFE,Unknown | 2 RaxFact,Unknown,Unknown

Not much to see here; we already knew that McRave had trouble scouting Dragon. Much of what it did recognize was correct, at least. Though what McRave saw as a proxy, Dragon called “2rax mech”. The game is game 2767 from round 61 (replay file) on Heartbreak Ridge. Nothing in it resembles a proxy; it must have been a McRave bug.

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.