I wrote a script to analyze BananaBrain’s game history files, which record its experience with each opponent. For now, I had the script summarize the strategies played and the enemy strategies recognized. The history files also record the map and a value that represents the game duration. History files are rich with information, and there are many ways to summarize it. It would be interesting to see how strategy usage and win rate vary by map, among other possibilities.
The same script should work with minor changes to summarize Microwave’s history files.
BananaBrain had prepared history files for the opponents #1 Locutus, #2 PurpleWave, #5 Steamhammer, #6 ZZZKBot, #7 Microwave, and #8 Iron. Data from the prepared history files was not copied into the write
directory. That is different from how Steamhammer and Locutus keep their game records, and it has the nice effect that the tables show exactly what happened in the tournament, from BananaBrain’s point of view.
For each opponent, the left table is BananaBrain’s choice. The right table is BananaBrain’s idea of what the opponent did. All the win rates are from BananaBrain’s point of view, so that, for example, when Locutus played P_1gatecore
, BananaBrain won 5% of the time. Of course, the opponent’s view of its own strategy is likely to be more fine-grained than BananaBrain’s. To take the extreme case, Steamhammer played 30 different openings against BananaBrain, and BananaBrain recognized them in 8 categories.
#1 locutus
opening | games | wins |
PvP_10/12gate | 6 | 17% |
PvP_12nexus | 11 | 36% |
PvP_2gatedt | 10 | 0% |
PvP_2gatedtexpo | 9 | 0% |
PvP_3gaterobo | 5 | 0% |
PvP_3gatespeedzeal | 8 | 25% |
PvP_4gategoon | 6 | 0% |
PvP_9/9gate | 12 | 8% |
PvP_9/9proxygate | 9 | 0% |
PvP_nzcore | 8 | 12% |
PvP_zcore | 4 | 0% |
PvP_zcorez | 6 | 0% |
PvP_zzcore | 6 | 17% |
13 openings | 100 | 10% |
enemy | games | wins |
P_1gatecore | 20 | 5% |
P_cannonrush | 29 | 7% |
P_fastexpand | 1 | 0% |
P_ffe | 19 | 21% |
P_unknown | 31 | 10% |
5 openings | 100 | 10% |
As you might expect against Locutus, the best choice was a fast expansion.
Is the single game of enemy P_fastexpand
a misrecognition? I suspect that Locutus played otherwise, and BananaBrain didn’t see everything and wasn’t able to draw the right conclusion. Or maybe it’s a bug somewhere. PurpleWave and McRave also show a single P_fastexpand
game.
#2 purplewave
opening | games | wins |
PvP_10/12gate | 23 | 70% |
PvP_12nexus | 2 | 0% |
PvP_2gatedt | 6 | 17% |
PvP_2gatedtexpo | 3 | 33% |
PvP_3gaterobo | 2 | 0% |
PvP_3gatespeedzeal | 1 | 0% |
PvP_4gategoon | 8 | 38% |
PvP_9/9gate | 26 | 88% |
PvP_9/9proxygate | 13 | 62% |
PvP_nzcore | 3 | 0% |
PvP_zcore | 4 | 25% |
PvP_zcorez | 5 | 40% |
PvP_zzcore | 4 | 25% |
13 openings | 100 | 56% |
enemy | games | wins |
P_1gatecore | 54 | 56% |
P_2gate | 25 | 60% |
P_2gatefast | 6 | 33% |
P_fastexpand | 1 | 0% |
P_ffe | 2 | 50% |
P_unknown | 12 | 67% |
6 openings | 100 | 56% |
Against PurpleWave, different zealot rushes worked best. Maybe it is because zealot rushes depend for their success more on execution than on the enemy’s strategic reaction. PurpleWave is particularly good at reacting to the enemy strategy, and BananaBrain is good at execution.
#4 daqin
opening | games | wins |
PvP_10/12gate | 8 | 62% |
PvP_12nexus | 6 | 33% |
PvP_2gatedt | 6 | 17% |
PvP_2gatedtexpo | 12 | 83% |
PvP_3gaterobo | 7 | 14% |
PvP_3gatespeedzeal | 6 | 33% |
PvP_4gategoon | 5 | 0% |
PvP_9/9gate | 14 | 93% |
PvP_9/9proxygate | 9 | 67% |
PvP_nzcore | 7 | 43% |
PvP_zcore | 6 | 33% |
PvP_zcorez | 7 | 43% |
PvP_zzcore | 7 | 43% |
13 openings | 100 | 51% |
enemy | games | wins |
P_1gatecore | 82 | 50% |
P_unknown | 18 | 56% |
2 openings | 100 | 51% |
BananaBrain made quite a variety of tries, and was most successful with... zealot rush and dark templars, which are kind of different. BananaBrain’s varied opening choice is a strength.
#5 steamhammer
opening | games | wins |
PvZ_10/12gate | 15 | 100% |
PvZ_1basespeedzeal | 8 | 88% |
PvZ_2basespeedzeal | 11 | 82% |
PvZ_4gate2archon | 7 | 57% |
PvZ_5gategoon | 7 | 86% |
PvZ_9/9gate | 12 | 92% |
PvZ_9/9proxygate | 15 | 100% |
PvZ_bisu | 4 | 75% |
PvZ_neobisu | 2 | 50% |
PvZ_sairdt | 7 | 100% |
PvZ_sairgoon | 2 | 0% |
PvZ_stove | 10 | 70% |
12 openings | 100 | 85% |
enemy | games | wins |
Z_10hatch | 38 | 76% |
Z_12hatch | 31 | 84% |
Z_12pool | 11 | 91% |
Z_4/5pool | 3 | 100% |
Z_9pool | 1 | 100% |
Z_9poolspeed | 4 | 100% |
Z_overpool | 2 | 100% |
Z_unknown | 10 | 100% |
8 openings | 100 | 85% |
2 gate zealot openings work well against Steamhammer—but only when played by PurpleWave or BananaBrain. Steamhammer can usually defend versus a lesser protoss.
#6 zzzkbot
opening | games | wins |
PvZ_10/12gate | 17 | 100% |
PvZ_1basespeedzeal | 11 | 91% |
PvZ_2basespeedzeal | 4 | 25% |
PvZ_4gate2archon | 4 | 50% |
PvZ_5gategoon | 6 | 67% |
PvZ_9/9gate | 15 | 100% |
PvZ_9/9proxygate | 3 | 67% |
PvZ_bisu | 5 | 60% |
PvZ_neobisu | 4 | 25% |
PvZ_sairdt | 12 | 100% |
PvZ_sairgoon | 6 | 50% |
PvZ_stove | 13 | 100% |
12 openings | 100 | 83% |
enemy | games | wins |
Z_4/5pool | 33 | 85% |
Z_9pool | 17 | 100% |
Z_9poolspeed | 2 | 100% |
Z_overpool | 23 | 65% |
Z_unknown | 25 | 84% |
5 openings | 100 | 83% |
I like that BananaBrain varies its opening choice even when several openings win 100%. (Steamhammer does too; if more than one opening has scored 100% so far, Steamhammer chooses randomly among them.) Playing a strong opening gives the opponent one problem to solve (“how do I survive this?”). Unpredictably playing one of several strong openings sets the opponent two problems (“what is this fiend doing, and then how do I live through it?”) which must both be solved, more than twice as difficult.
#7 microwave
opening | games | wins |
PvZ_10/12gate | 20 | 90% |
PvZ_1basespeedzeal | 11 | 73% |
PvZ_2basespeedzeal | 3 | 33% |
PvZ_4gate2archon | 6 | 50% |
PvZ_5gategoon | 8 | 75% |
PvZ_9/9gate | 17 | 88% |
PvZ_9/9proxygate | 8 | 75% |
PvZ_bisu | 10 | 60% |
PvZ_neobisu | 3 | 33% |
PvZ_sairdt | 4 | 50% |
PvZ_sairgoon | 2 | 0% |
PvZ_stove | 8 | 62% |
12 openings | 100 | 71% |
enemy | games | wins |
Z_10hatch | 8 | 88% |
Z_12hatch | 38 | 55% |
Z_12pool | 2 | 100% |
Z_4/5pool | 28 | 71% |
Z_9pool | 9 | 67% |
Z_9poolspeed | 7 | 100% |
Z_overpool | 3 | 100% |
Z_unknown | 5 | 100% |
8 openings | 100 | 71% |
#8 iron
opening | games | wins |
PvT_10/12gate | 6 | 67% |
PvT_10/15gate | 3 | 0% |
PvT_12nexus | 4 | 25% |
PvT_1gatedtexpo | 25 | 84% |
PvT_2gatedt | 10 | 60% |
PvT_9/9gate | 10 | 60% |
PvT_9/9proxygate | 4 | 75% |
PvT_bulldog | 1 | 0% |
PvT_dtdrop | 14 | 64% |
PvT_nzcore | 5 | 40% |
PvT_proxydt | 2 | 0% |
PvT_stove | 4 | 25% |
PvT_zcore | 5 | 40% |
PvT_zzcore | 7 | 43% |
14 openings | 100 | 58% |
enemy | games | wins |
T_1fac | 30 | 63% |
T_2fac | 1 | 0% |
T_fastexpand | 29 | 48% |
T_unknown | 40 | 62% |
4 openings | 100 | 58% |
Bulldog! That involves protoss dropping zealots, typically on cliff tanks, with a simultaneous attack by ground. When successful, a bulldog can abruptly break a terran defense that is sound against any purely ground attack. I don’t think I’ve seen BananaBrain play that; I should watch more games versus terran. Can anybody point out an example?
#9 xiaoyi
opening | games | wins |
PvT_10/12gate | 10 | 90% |
PvT_10/15gate | 7 | 43% |
PvT_12nexus | 5 | 20% |
PvT_1gatedtexpo | 11 | 100% |
PvT_2gatedt | 7 | 57% |
PvT_9/9gate | 6 | 33% |
PvT_9/9proxygate | 6 | 17% |
PvT_bulldog | 5 | 0% |
PvT_dtdrop | 9 | 89% |
PvT_nzcore | 6 | 17% |
PvT_proxydt | 7 | 71% |
PvT_stove | 8 | 75% |
PvT_zcore | 6 | 33% |
PvT_zzcore | 7 | 57% |
14 openings | 100 | 57% |
enemy | games | wins |
T_1fac | 37 | 57% |
T_fastexpand | 20 | 65% |
T_unknown | 43 | 53% |
3 openings | 100 | 57% |
The Stove worked against XiaoYi? Again, XiaoYi shows weakness against tricks. The Stove involves making scouts to harass while teching to dark templar. It should not be hard for a good terran to defend against; notice that Iron dealt with it well enough.
#10 mcrave
opening | games | wins |
PvP_10/12gate | 7 | 71% |
PvP_12nexus | 6 | 50% |
PvP_2gatedt | 6 | 67% |
PvP_2gatedtexpo | 8 | 50% |
PvP_3gaterobo | 9 | 78% |
PvP_3gatespeedzeal | 8 | 62% |
PvP_4gategoon | 7 | 57% |
PvP_9/9gate | 8 | 75% |
PvP_9/9proxygate | 6 | 33% |
PvP_nzcore | 10 | 90% |
PvP_zcore | 7 | 57% |
PvP_zcorez | 10 | 90% |
PvP_zzcore | 8 | 88% |
13 openings | 100 | 69% |
enemy | games | wins |
P_1gatecore | 34 | 74% |
P_2gate | 26 | 65% |
P_2gatefast | 29 | 69% |
P_fastexpand | 1 | 0% |
P_proxygate | 4 | 100% |
P_unknown | 6 | 50% |
6 openings | 100 | 69% |
It looks like most openings performed similarly against McRave, and BananaBrain struggled to identify what worked. I imagine a fierce learning battle, both trying to keep one step ahead.
#11 ualbertabot
opening | games | wins |
PvU_10/12gate | 17 | 94% |
PvU_9/9gate | 17 | 100% |
PvU_9/9proxygate | 13 | 85% |
PvU_flex | 12 | 67% |
PvU_nzcore | 11 | 64% |
PvU_zcore | 16 | 88% |
PvU_zzcore | 13 | 77% |
7 openings | 99 | 84% |
enemy | games | wins |
P_1gatecore | 8 | 100% |
P_2gate | 6 | 83% |
P_2gatefast | 21 | 71% |
P_unknown | 3 | 33% |
T_1fac | 5 | 100% |
T_2fac | 7 | 100% |
T_2rax | 10 | 90% |
T_fastexpand | 3 | 100% |
T_unknown | 5 | 100% |
Z_10hatch | 2 | 100% |
Z_12hatch | 8 | 100% |
Z_4/5pool | 17 | 71% |
Z_unknown | 4 | 75% |
13 openings | 99 | 84% |
#12 aitp
opening | games | wins |
PvT_10/12gate | 7 | 100% |
PvT_10/15gate | 8 | 100% |
PvT_12nexus | 6 | 100% |
PvT_1gatedtexpo | 8 | 100% |
PvT_2gatedt | 7 | 100% |
PvT_9/9gate | 6 | 100% |
PvT_9/9proxygate | 7 | 100% |
PvT_bulldog | 9 | 100% |
PvT_dtdrop | 7 | 100% |
PvT_nzcore | 7 | 100% |
PvT_proxydt | 7 | 100% |
PvT_stove | 9 | 100% |
PvT_zcore | 6 | 100% |
PvT_zzcore | 6 | 100% |
14 openings | 100 | 100% |
enemy | games | wins |
T_1fac | 4 | 100% |
T_2fac | 12 | 100% |
T_fastexpand | 24 | 100% |
T_unknown | 60 | 100% |
4 openings | 100 | 100% |
#13 bunkerboxer
opening | games | wins |
PvT_10/12gate | 7 | 100% |
PvT_10/15gate | 7 | 100% |
PvT_12nexus | 7 | 100% |
PvT_1gatedtexpo | 7 | 100% |
PvT_2gatedt | 7 | 100% |
PvT_9/9gate | 6 | 100% |
PvT_9/9proxygate | 7 | 100% |
PvT_bulldog | 8 | 100% |
PvT_dtdrop | 7 | 100% |
PvT_nzcore | 6 | 100% |
PvT_proxydt | 8 | 100% |
PvT_stove | 8 | 100% |
PvT_zcore | 7 | 100% |
PvT_zzcore | 8 | 100% |
14 openings | 100 | 100% |
enemy | games | wins |
T_unknown | 100 | 100% |
1 openings | 100 | 100% |
BananaBrain apparently does not have a bunker rush recognizer.