I got distracted, but I’m back. These tables aren’t what McRave learned exactly, they are what it recorded in its Info files, more like a summary of how McRave played given what it had learned. History files like these are rich with information and I wanted to extract more from them, but this will do for now.
The “opening” tables give McRave’s strategy as it represents it, build-opener-transition (see last post). The “enemy” tables represent the recognized enemy strategy in the same format. I like that the strategies of both sides are represented the same way, it’s elegant. The hierarchical representation has advantages for reacting to enemy strategies: McRave may be able to react to an aspect of its enemy’s plan, or to an enemy strategy that it only partially recognized.
Here’s a sample line from the file ZvZ Microwave Info.txt
, the first game of 150, to give a taste of how much information there is.
Won,Destination,28:43,HatchPool,9Pool,LingRush,PoolLair,9Pool,1HatchMuta,4:07,2:45,3:31,1,Zerg_Larva,92,Zerg_Zergling,105,Zerg_Drone,18,Zerg_Overlord,73,Zerg_Mutalisk,36,Zerg_Scourge,30,Zerg_Larva,114,Zerg_Zergling,102,Zerg_Drone,12,Zerg_Overlord,34,Zerg_Mutalisk,14,Zerg_Scourge,4,Zerg_Cocoon,11,Zerg_Devourer
#1 stardust
opening | games | wins | first | last |
PoolHatch,Overpool,2HatchMuta | 150 | 2% | 0 | 149 |
1 openings | 150 | 2% | | |
enemy | games | wins |
1GateCore,2Zealot,4Gate | 14 | 7% |
2Gate,Main,4Gate | 135 | 1% |
2Gate,Main,DT | 1 | 0% |
3 openings | 150 | 2% |
I think Stardust does not make dark templar, so the one DT game may be a strategy inference miss. It’s interesting that most of McRave’s wins came when Stardust was recognized as opening with gate-cybercore instead of with two gates.
#2 purplewave
opening | games | wins | first | last |
PoolHatch,Overpool,2HatchMuta | 149 | 5% | 0 | 149 |
PoolHatch,Overpool,3HatchSpeedling | 1 | 0% | 45 | 45 |
2 openings | 150 | 5% | | |
enemy | games | wins |
2Gate,Main,4Gate | 144 | 6% |
2Gate,Main,Corsair | 3 | 0% |
2Gate,Main,ZealotRush | 3 | 0% |
3 openings | 150 | 5% |
PurpleWave chose to play similarly to Stardust, not quite as successfully.
#3 bananabrain
opening | games | wins | first | last |
PoolHatch,Overpool,2HatchMuta | 131 | 45% | 1 | 149 |
PoolHatch,Overpool,2HatchSpeedling | 10 | 50% | 0 | 147 |
PoolHatch,Overpool,3HatchSpeedling | 9 | 44% | 24 | 131 |
3 openings | 150 | 45% | | |
enemy | games | wins |
1GateCore,2Zealot,Corsair | 20 | 75% |
1GateCore,2Zealot,DT | 8 | 62% |
2Gate,Main,4Gate | 1 | 0% |
2Gate,Main,Corsair | 38 | 11% |
2Gate,Main,DT | 4 | 25% |
2Gate,Proxy,ZealotRush | 10 | 50% |
FFE,Forge,5GateGoon | 17 | 47% |
FFE,Forge,NeoBisu | 24 | 62% |
FFE,Forge,Speedlot | 13 | 54% |
FFE,Forge,Unknown | 2 | 0% |
FFE,Forge,ZealotArchon | 1 | 100% |
FFE,Gateway,Speedlot | 1 | 0% |
FFE,Nexus,5GateGoon | 4 | 25% |
FFE,Nexus,NeoBisu | 7 | 86% |
14 openings | 150 | 45% |
McRave’s plans were about equally successful, but it chose to go with mutalisks much more often than zerglings. I think that’s strategically correct, because BananaBrain is susceptible to the occasional ling bust but will play safely if zerg repeats it too often. Otherwise, BananaBrain is unpredictable as always. As I understand it, McRave does not try to directly predict the enemy strategy but only reacts to what it scouts, so unpredictability can confuse UCB but nothing worse.
#4 dragon
opening | games | wins | first | last |
HatchPool,12Hatch,2HatchMuta | 60 | 18% | 0 | 148 |
HatchPool,12Hatch,2HatchSpeedling | 3 | 0% | 24 | 129 |
PoolHatch,12Pool,2HatchMuta | 19 | 0% | 3 | 149 |
PoolHatch,Overpool,2HatchMuta | 67 | 28% | 1 | 147 |
PoolHatch,Overpool,2HatchSpeedling | 1 | 100% | 47 | 47 |
5 openings | 150 | 21% | | |
enemy | games | wins |
2Rax,Expand,Unknown | 2 | 0% |
2Rax,Main,1FactTanks | 2 | 0% |
2Rax,Main,Academy | 3 | 0% |
2Rax,Main,Unknown | 27 | 22% |
2Rax,Proxy,1FactTanks | 1 | 0% |
2Rax,Proxy,Unknown | 2 | 0% |
RaxCC,1RaxFE,1FactTanks | 10 | 10% |
RaxCC,1RaxFE,5FactGoliath | 45 | 18% |
RaxCC,1RaxFE,Unknown | 12 | 58% |
RaxFact,Unknown,5FactGoliath | 14 | 36% |
RaxFact,Unknown,Unknown | 2 | 50% |
Unknown,Unknown,2Fact | 6 | 17% |
Unknown,Unknown,Unknown | 23 | 4% |
Unknown,Unknown,WorkerRush | 1 | 100% |
14 openings | 150 | 21% |
Dragon is the first opponent to push McRave into exploring most of its available strategies. Notice McRave only played PoolHatch,Overpool,2HatchSpeedling once (about a third of the way through the tournament) even though it won, and even though PoolHatch and Overpool was its preferred stem. It shows a strong preference for mutalisk play.
#6 microwave
opening | games | wins | first | last |
PoolHatch,12Pool,2HatchMuta | 19 | 63% | 1 | 127 |
PoolHatch,12Pool,2HatchSpeedling | 14 | 57% | 21 | 118 |
PoolLair,9Pool,1HatchMuta | 114 | 84% | 0 | 146 |
3 openings | 147 | 79% | | |
enemy | games | wins |
HatchPool,12Pool,1HatchLurker | 1 | 100% |
HatchPool,12Pool,2HatchLing | 6 | 100% |
HatchPool,12Pool,3HatchMuta | 6 | 67% |
HatchPool,12Pool,Unknown | 13 | 77% |
HatchPool,4Pool,LingRush | 2 | 50% |
HatchPool,9Pool,LingRush | 28 | 57% |
HatchPool,9Pool,Unknown | 1 | 0% |
HatchPool,Unknown,2HatchLing | 21 | 86% |
HatchPool,Unknown,3HatchLing | 1 | 100% |
HatchPool,Unknown,Unknown | 6 | 100% |
PoolHatch,12Pool,2HatchLing | 2 | 100% |
PoolHatch,12Pool,3HatchMuta | 1 | 0% |
PoolHatch,12Pool,Unknown | 12 | 100% |
PoolHatch,4Pool,LingRush | 2 | 100% |
PoolHatch,9Pool,2HatchLing | 1 | 100% |
PoolHatch,9Pool,LingRush | 2 | 100% |
PoolHatch,Unknown,2HatchLing | 3 | 100% |
PoolHatch,Unknown,Unknown | 4 | 75% |
PoolLair,9Pool,1HatchMuta | 3 | 100% |
PoolLair,9Pool,Unknown | 3 | 100% |
PoolLair,Unknown,Unknown | 1 | 100% |
Unknown,12Pool,3HatchLing | 1 | 100% |
Unknown,12Pool,3HatchMuta | 4 | 50% |
Unknown,12Pool,Unknown | 9 | 67% |
Unknown,4Pool,LingRush | 1 | 100% |
Unknown,9Pool,LingRush | 3 | 67% |
Unknown,9Pool,Unknown | 4 | 75% |
Unknown,Unknown,1HatchHydra | 1 | 100% |
Unknown,Unknown,3HatchMuta | 1 | 100% |
Unknown,Unknown,Unknown | 4 | 100% |
30 openings | 147 | 79% |
McRave’s play was similar against Microwave and Steamhammer: It chose the same builds in roughly similar proportions, and it found the opponent’s strategies to be highly diverse and difficult to recognize (notice all the Unknown values).
#7 steamhammer
opening | games | wins | first | last |
PoolHatch,12Pool,2HatchMuta | 33 | 48% | 2 | 149 |
PoolHatch,12Pool,2HatchSpeedling | 22 | 55% | 1 | 144 |
PoolLair,9Pool,1HatchMuta | 95 | 61% | 0 | 148 |
3 openings | 150 | 57% | | |
enemy | games | wins |
HatchPool,12Pool,1HatchHydra | 1 | 0% |
HatchPool,12Pool,1HatchLurker | 2 | 100% |
HatchPool,12Pool,1HatchMuta | 1 | 100% |
HatchPool,12Pool,2HatchLing | 4 | 100% |
HatchPool,12Pool,3HatchMuta | 2 | 50% |
HatchPool,12Pool,Unknown | 8 | 25% |
HatchPool,9Pool,2HatchLing | 6 | 17% |
HatchPool,9Pool,3HatchMuta | 2 | 0% |
HatchPool,9Pool,LingRush | 12 | 33% |
HatchPool,9Pool,Unknown | 8 | 75% |
HatchPool,Unknown,1HatchHydra | 2 | 100% |
HatchPool,Unknown,2HatchLing | 8 | 88% |
HatchPool,Unknown,2HatchMuta | 1 | 100% |
HatchPool,Unknown,Unknown | 4 | 100% |
PoolHatch,12Pool,1HatchLurker | 1 | 100% |
PoolHatch,12Pool,2HatchLing | 1 | 100% |
PoolHatch,12Pool,Unknown | 5 | 80% |
PoolHatch,9Pool,2HatchLing | 2 | 50% |
PoolHatch,9Pool,LingRush | 7 | 86% |
PoolHatch,9Pool,Unknown | 1 | 0% |
PoolHatch,Unknown,2HatchLing | 1 | 100% |
PoolHatch,Unknown,Unknown | 2 | 0% |
PoolLair,12Pool,1HatchMuta | 6 | 50% |
PoolLair,9Pool,1HatchMuta | 10 | 50% |
PoolLair,9Pool,Unknown | 1 | 100% |
PoolLair,Unknown,1HatchMuta | 7 | 14% |
PoolLair,Unknown,Unknown | 3 | 100% |
Unknown,12Pool,1HatchHydra | 5 | 40% |
Unknown,12Pool,3HatchMuta | 2 | 50% |
Unknown,12Pool,Unknown | 8 | 75% |
Unknown,9Pool,1HatchHydra | 2 | 50% |
Unknown,9Pool,LingRush | 1 | 100% |
Unknown,Unknown,1HatchHydra | 3 | 100% |
Unknown,Unknown,3HatchMuta | 3 | 67% |
Unknown,Unknown,Unknown | 18 | 44% |
35 openings | 150 | 57% |
#8 daqin
opening | games | wins | first | last |
PoolHatch,Overpool,2HatchMuta | 150 | 65% | 0 | 149 |
1 openings | 150 | 65% | | |
enemy | games | wins |
FFE,Forge,5GateGoon | 5 | 80% |
FFE,Forge,Speedlot | 121 | 59% |
FFE,Forge,ZealotArchon | 2 | 100% |
FFE,Gateway,Speedlot | 1 | 100% |
FFE,Nexus,Speedlot | 21 | 90% |
5 openings | 150 | 65% |
McRave never varied against DaQin. Why is that? It doesn’t seem to be due to elitism (that is, always choosing a plan that has shown itself “elite” aka good enough), because McRave tried two plans versus UAlbertaBot and both had a higher win rate.
#9 zzzkbot
opening | games | wins | first | last |
PoolHatch,12Pool,2HatchMuta | 16 | 62% | 1 | 127 |
PoolHatch,12Pool,2HatchSpeedling | 10 | 50% | 40 | 105 |
PoolLair,9Pool,1HatchMuta | 124 | 88% | 0 | 149 |
3 openings | 150 | 83% | | |
enemy | games | wins |
HatchPool,4Pool,LingRush | 2 | 100% |
HatchPool,9Pool,LingRush | 5 | 80% |
HatchPool,Unknown,2HatchHydra | 2 | 100% |
HatchPool,Unknown,2HatchMuta | 1 | 100% |
PoolHatch,9Pool,LingRush | 1 | 0% |
PoolHatch,Unknown,Unknown | 2 | 100% |
Unknown,4Pool,LingRush | 35 | 86% |
Unknown,9Pool,LingRush | 68 | 87% |
Unknown,9Pool,Unknown | 9 | 67% |
Unknown,Unknown,1HatchHydra | 3 | 100% |
Unknown,Unknown,Unknown | 22 | 68% |
11 openings | 150 | 83% |
#10 ualbertabot
opening | games | wins | first | last |
PoolHatch,Overpool,2HatchMuta | 99 | 80% | 0 | 149 |
PoolHatch,Overpool,2HatchSpeedling | 51 | 98% | 3 | 147 |
2 openings | 150 | 86% | | |
enemy | games | wins |
1GateCore,0Zealot,4Gate | 30 | 93% |
1GateCore,0Zealot,DT | 10 | 100% |
1GateCore,Unknown,DT | 6 | 100% |
2Gate,Main,ZealotRush | 16 | 100% |
2Rax,Main,MarineRush | 9 | 89% |
2Rax,Main,Unknown | 22 | 41% |
HatchPool,Unknown,1HatchHydra | 6 | 100% |
HatchPool,Unknown,2HatchHydra | 4 | 100% |
HatchPool,Unknown,2HatchLing | 8 | 100% |
HatchPool,Unknown,2HatchMuta | 4 | 100% |
HatchPool,Unknown,Unknown | 4 | 100% |
PoolHatch,Unknown,Unknown | 1 | 100% |
RaxCC,8Rax,Unknown | 8 | 38% |
RaxFact,Unknown,Unknown | 6 | 100% |
Unknown,4Pool,LingRush | 9 | 100% |
Unknown,9Pool,LingRush | 1 | 100% |
Unknown,Unknown,1HatchHydra | 1 | 100% |
Unknown,Unknown,Unknown | 5 | 100% |
18 openings | 150 | 86% |
#11 willyt
opening | games | wins | first | last |
HatchPool,12Hatch,2HatchMuta | 102 | 67% | 0 | 149 |
PoolHatch,12Pool,2HatchMuta | 6 | 0% | 6 | 142 |
PoolHatch,Overpool,2HatchMuta | 41 | 63% | 3 | 146 |
PoolHatch,Overpool,2HatchSpeedling | 1 | 0% | 4 | 4 |
4 openings | 150 | 63% | | |
enemy | games | wins |
2Rax,Main,1FactTanks | 1 | 0% |
2Rax,Main,Academy | 3 | 100% |
2Rax,Main,MarineRush | 2 | 50% |
RaxCC,1RaxFE,1FactTanks | 93 | 49% |
RaxCC,1RaxFE,5FactGoliath | 1 | 0% |
RaxCC,1RaxFE,Unknown | 7 | 86% |
RaxCC,Unknown,Unknown | 20 | 100% |
Unknown,Unknown,2Fact | 3 | 33% |
Unknown,Unknown,Unknown | 20 | 85% |
9 openings | 150 | 63% |
#12 ecgberht
opening | games | wins | first | last |
HatchPool,12Hatch,2HatchMuta | 83 | 87% | 0 | 149 |
HatchPool,12Hatch,2HatchSpeedling | 29 | 79% | 12 | 142 |
PoolHatch,12Pool,2HatchMuta | 6 | 0% | 11 | 133 |
PoolHatch,12Pool,2HatchSpeedling | 3 | 100% | 30 | 32 |
PoolHatch,Overpool,2HatchMuta | 16 | 50% | 1 | 113 |
PoolHatch,Overpool,2HatchSpeedling | 13 | 100% | 27 | 101 |
6 openings | 150 | 79% | | |
enemy | games | wins |
2Rax,Expand,Unknown | 18 | 83% |
2Rax,Main,Academy | 1 | 0% |
2Rax,Main,MarineRush | 1 | 0% |
2Rax,Main,Unknown | 19 | 47% |
2Rax,Proxy,Unknown | 7 | 86% |
RaxCC,1RaxFE,1FactTanks | 1 | 100% |
RaxCC,1RaxFE,Unknown | 39 | 85% |
RaxCC,8Rax,Unknown | 20 | 90% |
RaxCC,Unknown,Unknown | 21 | 81% |
RaxFact,Unknown,2Fact | 1 | 100% |
RaxFact,Unknown,2PortWraith | 10 | 100% |
RaxFact,Unknown,Unknown | 7 | 100% |
Unknown,Unknown,Unknown | 5 | 40% |
13 openings | 150 | 79% |
Ecgberht is a tricky opponent. I think McRave tried every plan that was enabled—mostly with success, to be sure.
#13 eggbot
opening | games | wins | first | last |
PoolHatch,Overpool,2HatchMuta | 10 | 100% | 18 | 148 |
PoolHatch,Overpool,2HatchSpeedling | 140 | 99% | 0 | 149 |
2 openings | 150 | 99% | | |
enemy | games | wins |
2Gate,Proxy,ZealotRush | 19 | 89% |
CannonRush,Unknown,Unknown | 16 | 100% |
Unknown,Unknown,Unknown | 115 | 100% |
3 openings | 150 | 99% |
Comments
Paul Goodman on :
Pretty sure 7% of 14 games comes out to just one game, right?
Jay Scott on :
McRave on :
I had 1 plan enabled from the start for ZvP, 2 plans enabled for ZvZ and 3 plans enabled for ZvT (I accidentally enabled Overpool). The rest of the plans are reactions where we record the new plan rather than initial plan. When my bot reacts and changes it's build/opener/transition, it changes the start of game selection so that learning will account for the actual plan rather than intended plan. I allow reactions up to a certain point depending on the build, where once you've gone down that path it's too late to react.
An example of this is BananaBrain opening with a proxy 2Gate, I change my strategy to a 2HatchLing flood that ignores the Zealots and runs past them to his main. We see an exact match of 10 detections of it and 10 reactions to change to 2HatchLing.
Jay Scott on :