archive by month
Skip to content

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.

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?


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.


No Trackbacks


McRave on :

Really cool analysis, it demonstrates the accuracy of strategy detection and the outcome of a game based on that detection (sometimes inversely related!). Would love to see this for any bots that have this level of data logging.

McRave on :

Also worth noting, the openers I detect in the FFE build (Nexus, Gate, Forge) are what building we detected they placed first. I believe BananaBrain is strictly Forge first, but I could be wrong. This means my Nexus first detection could be wrong.

Johan de Jong on :

BananaBrain's FFE builds are indeed always forge first. And since the forge is always placed in front of the nexus, I would expect that the first thing that McRave would see is the forge.
Anyway, I still need to find out why BananaBrain misrecognises McRave's overpool as 9 pool sometimes. I do not believe I have seen that occuring very often with other Zerg bots.

Jay Scott on :

Thanks! And how do you like it now that I’ve added more coloring?

McRave on :

Now that is much nicer! Really cool data analysis stuff here.

Add Comment

E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.

Form options

Submitted comments will be subject to moderation before being displayed.