I’m taking the bots in finishing order; McRave is next. Last year I analyzed McRave’s three-part strategy representation and learning algorithm. These apparently have not changed in outline, though details may have changed. The set of available strategies has been updated. For example, 6HatchHydra
is new this year. It follows that the set of enabled strategy triples has also changed.
McRave is much stronger this year. It has become noted for dangerous mutalisk control.
#1 stardust
opening | games | wins | first | last |
HatchPool,12Hatch,2HatchMuta | 81 | 6% | 0 | 156 |
PoolHatch,9Pool,2HatchMuta | 22 | 14% | 13 | 155 |
PoolHatch,9Pool,3HatchMuta | 11 | 0% | 4 | 147 |
PoolHatch,9Pool,6HatchHydra | 9 | 0% | 9 | 143 |
PoolHatch,Overpool,2HatchMuta | 9 | 0% | 6 | 145 |
PoolHatch,Overpool,3HatchMuta | 13 | 8% | 11 | 125 |
PoolHatch,Overpool,6HatchHydra | 12 | 0% | 1 | 149 |
7 openings | 157 | 6% | | |
enemy | games | wins |
1GateCore,2Zealot,4Gate | 105 | 6% |
2Gate,10/12,4Gate | 10 | 10% |
2Gate,10/17,4Gate | 40 | 5% |
2Gate,9/9,4Gate | 1 | 0% |
2Gate,Unknown,4Gate | 1 | 0% |
5 openings | 157 | 6% |
9 pool into 2 hatch muta worked best, with 3 wins out of 22. That is not intuitive. The more natural 12 hatch into 2 hatch muta was tried more but was less successful. Did Stardust react inefficiently to the 9 pool? McRave appears to correctly understand that Stardust ends up with 4 gates despite taking different routes to get there. That’s kind of impressive.
Last year McRave scored 3 out of 150 against Stardust. This year it scored 8 out of 150 against a stronger Stardust—which seems to have updates specifically to defeat McRave, since McRave was the only bot to upset it in CoG 2021. Good progress!
#2 bananabrain
opening | games | wins | first | last |
HatchPool,12Hatch,2HatchMuta | 86 | 19% | 0 | 156 |
HatchPool,12Hatch,2HatchSpeedling | 1 | 0% | 26 | 26 |
HatchPool,9Pool,2HatchSpeedling | 2 | 100% | 30 | 100 |
PoolHatch,9Pool,2HatchMuta | 15 | 20% | 18 | 144 |
PoolHatch,9Pool,2HatchSpeedling | 3 | 0% | 24 | 29 |
PoolHatch,9Pool,3HatchMuta | 19 | 21% | 4 | 124 |
PoolHatch,9Pool,6HatchHydra | 2 | 0% | 12 | 129 |
PoolHatch,Overpool,2HatchMuta | 4 | 0% | 9 | 96 |
PoolHatch,Overpool,2HatchSpeedling | 1 | 0% | 25 | 25 |
PoolHatch,Overpool,3HatchMuta | 14 | 21% | 16 | 114 |
PoolHatch,Overpool,6HatchHydra | 10 | 0% | 1 | 146 |
11 openings | 157 | 18% | | |
enemy | games | wins |
1GateCore,2Zealot,Corsair | 31 | 13% |
1GateCore,2Zealot,DT | 8 | 12% |
1GateCore,Unknown,Corsair | 10 | 10% |
1GateCore,Unknown,DT | 6 | 0% |
2Gate,10/12,4Gate | 1 | 0% |
2Gate,10/12,Corsair | 31 | 16% |
2Gate,10/12,DT | 11 | 27% |
2Gate,10/12,ZealotRush | 7 | 0% |
2Gate,10/17,4Gate | 3 | 67% |
2Gate,10/17,Corsair | 3 | 0% |
2Gate,10/17,DT | 2 | 50% |
2Gate,9/9,Corsair | 3 | 33% |
2Gate,9/9,DT | 2 | 0% |
2Gate,9/9,Unknown | 1 | 0% |
2Gate,Proxy,ZealotRush | 7 | 29% |
2Gate,Unknown,Corsair | 2 | 0% |
FFE,Forge,5GateGoon | 9 | 22% |
FFE,Forge,Speedlot | 7 | 29% |
FFE,Forge,Unknown | 5 | 20% |
FFE,Gateway,5GateGoon | 1 | 100% |
FFE,Gateway,Unknown | 1 | 0% |
FFE,Nexus,5GateGoon | 4 | 25% |
FFE,Nexus,Speedlot | 1 | 0% |
FFE,Nexus,Unknown | 1 | 100% |
24 openings | 157 | 18% |
McRave’s wins over BananaBrain are dominated by games where BananaBrain timed out. In game 2754, BananaBrained timed out with 320 frames over 55ms, when McRave had 318 frames over 55ms—close call! McRave had more timeouts than any other bot, but only 3 losses to BananaBrain by timeout. BananaBrain’s timeouts seem to be concentrated on Dragon and McRave, and to a lesser extent on Steamhammer.
If HatchPool,9Pool,2HatchSpeedling
was tried twice and won twice, why wasn’t it tried more often? The first try was on game 30 of 0-156. I imagine that it was a reactive build, not enabled as an initial choice but switched to under given circumstances. I didn’t read the source to verify that.
The enemy table shows a complex set of strategies by BananaBrain.
#3 dragon
opening | games | wins | first | last |
HatchPool,12Hatch,2HatchMuta | 66 | 32% | 0 | 156 |
HatchPool,12Hatch,2HatchSpeedling | 1 | 0% | 61 | 61 |
PoolHatch,12Pool,2HatchMuta | 9 | 11% | 27 | 150 |
PoolHatch,12Pool,3HatchMuta | 37 | 41% | 1 | 129 |
PoolHatch,Overpool,2HatchMuta | 27 | 33% | 3 | 127 |
PoolHatch,Overpool,2HatchSpeedling | 2 | 100% | 21 | 99 |
PoolHatch,Overpool,3HatchMuta | 15 | 27% | 25 | 148 |
7 openings | 157 | 33% | | |
enemy | games | wins |
2Rax,Expand,Unknown | 1 | 100% |
2Rax,Main,1FactTanks | 1 | 0% |
2Rax,Main,Unknown | 8 | 25% |
2Rax,Proxy,Unknown | 1 | 0% |
RaxCC,1RaxFE,1FactTanks | 3 | 33% |
RaxCC,1RaxFE,5FactGoliath | 25 | 12% |
RaxCC,1RaxFE,Unknown | 11 | 27% |
RaxFact,Unknown,2PortWraith | 1 | 100% |
RaxFact,Unknown,5FactGoliath | 13 | 23% |
RaxFact,Unknown,Unknown | 2 | 50% |
Unknown,Unknown,Unknown | 89 | 39% |
Unknown,Unknown,WorkerRush | 2 | 100% |
12 openings | 157 | 33% |
Over half of McRave’s losses to Dragon were by timeout. I think Dragon is an especially easy bot to time out against, because its strong macro and big battles with light units put heavy demands on the opponent.
The enemy table shows 89 games with Unknown,Unknown,Unknown
. Apparently Dragon often denied scouting. Presumably the scouting overlord was afraid to approach due to marines, and any scouting drone was turned away. Also, I wonder about 2Rax,Proxy,Unknown
. Did Dragon really proxy once, or was it a misrecognition? On Python, bases can be close by air. If McRave measures proxy distance by air distance, it might take a barracks in the enemy main for a proxy.
#4 steamhammer
opening | games | wins | first | last |
PoolHatch,12Pool,2HatchMuta | 21 | 33% | 3 | 142 |
PoolHatch,12Pool,2HatchSpeedling | 12 | 17% | 1 | 136 |
PoolLair,9Pool,1HatchMuta | 125 | 51% | 0 | 157 |
3 openings | 158 | 46% | | |
enemy | games | wins |
HatchPool,10Hatch,1HatchMuta | 2 | 100% |
HatchPool,10Hatch,2HatchSpeedling | 16 | 81% |
HatchPool,10Hatch,3HatchMuta | 1 | 0% |
HatchPool,10Hatch,Unknown | 8 | 50% |
HatchPool,9Pool,3HatchMuta | 1 | 0% |
HatchPool,9Pool,Unknown | 6 | 67% |
HatchPool,Unknown,Unknown | 1 | 100% |
PoolHatch,12Pool,3HatchMuta | 1 | 100% |
PoolHatch,12Pool,Unknown | 2 | 50% |
PoolHatch,4Pool,LingRush | 8 | 88% |
PoolHatch,9Pool,2HatchSpeedling | 1 | 100% |
PoolHatch,9Pool,Unknown | 8 | 38% |
PoolHatch,Unknown,2HatchHydra | 1 | 100% |
PoolHatch,Unknown,3HatchMuta | 2 | 100% |
PoolHatch,Unknown,Unknown | 4 | 75% |
PoolLair,9Pool,1HatchMuta | 2 | 100% |
PoolLair,Unknown,1HatchMuta | 4 | 25% |
Unknown,Unknown,1HatchHydra | 1 | 100% |
Unknown,Unknown,1HatchLurker | 2 | 100% |
Unknown,Unknown,1HatchMuta | 51 | 27% |
Unknown,Unknown,3HatchMuta | 2 | 0% |
Unknown,Unknown,Unknown | 34 | 29% |
22 openings | 158 | 46% |
McRave chose from the same fixed set of 3 strategies against all the zergs. Only the 1 hatch mutalisks were able to hold their own with Steamhammer.
#6 willyt
opening | games | wins | first | last |
HatchPool,12Hatch,2HatchMuta | 89 | 33% | 0 | 156 |
PoolHatch,12Pool,3HatchMuta | 55 | 35% | 1 | 155 |
PoolHatch,Overpool,2HatchMuta | 13 | 0% | 2 | 151 |
3 openings | 157 | 31% | | |
enemy | games | wins |
RaxCC,1RaxFE,1FactTanks | 20 | 0% |
RaxCC,1RaxFE,5FactGoliath | 38 | 26% |
RaxCC,1RaxFE,Unknown | 30 | 33% |
RaxFact,Unknown,5FactGoliath | 2 | 0% |
Unknown,Unknown,Unknown | 67 | 42% |
5 openings | 157 | 31% |
Hurrying the mutas too much did not help against WillyT. The enemy table shows that WillyT sometimes countered with goliaths. Does McRave later make a hydra switch to fight the goliaths? WillyT sometimes goes for goliaths with 2 tanks, and it’s sensible to fight back with hydralisks. I didn’t see a hydra switch in the games I watched.
I noticed that McRave doesn’t clear the terran scout from its main until mutas come out. WillyT gets to know the exact timing for its turrets with no need to spend a scan.
#7 microwave
opening | games | wins | first | last |
PoolHatch,12Pool,2HatchMuta | 49 | 65% | 3 | 156 |
PoolHatch,12Pool,2HatchSpeedling | 15 | 33% | 1 | 147 |
PoolLair,9Pool,1HatchMuta | 93 | 62% | 0 | 149 |
3 openings | 157 | 61% | | |
enemy | games | wins |
HatchPool,10Hatch,+1Ling | 1 | 0% |
HatchPool,10Hatch,1HatchMuta | 1 | 0% |
HatchPool,10Hatch,2HatchHydra | 1 | 100% |
HatchPool,10Hatch,2HatchSpeedling | 41 | 46% |
HatchPool,10Hatch,3HatchMuta | 11 | 82% |
HatchPool,10Hatch,Unknown | 18 | 67% |
HatchPool,9Pool,+1Ling | 1 | 0% |
HatchPool,9Pool,2HatchSpeedling | 2 | 100% |
HatchPool,9Pool,3HatchMuta | 2 | 50% |
HatchPool,9Pool,Unknown | 2 | 100% |
HatchPool,Unknown,2HatchSpeedling | 2 | 50% |
PoolHatch,12Pool,+1Ling | 1 | 100% |
PoolHatch,12Pool,1HatchHydra | 1 | 100% |
PoolHatch,12Pool,2HatchSpeedling | 1 | 100% |
PoolHatch,12Pool,3HatchHydra | 1 | 100% |
PoolHatch,12Pool,3HatchMuta | 9 | 22% |
PoolHatch,12Pool,Unknown | 5 | 80% |
PoolHatch,4Pool,LingRush | 14 | 79% |
PoolHatch,9Pool,+1Ling | 1 | 0% |
PoolHatch,9Pool,1HatchMuta | 1 | 0% |
PoolHatch,9Pool,2HatchSpeedling | 1 | 100% |
PoolHatch,9Pool,3HatchMuta | 3 | 67% |
PoolHatch,9Pool,Unknown | 2 | 50% |
PoolHatch,Unknown,2HatchHydra | 1 | 100% |
PoolHatch,Unknown,Unknown | 3 | 100% |
Unknown,9Pool,+1Ling | 2 | 50% |
Unknown,9Pool,1HatchHydra | 1 | 100% |
Unknown,Unknown,+1Ling | 3 | 0% |
Unknown,Unknown,1HatchLurker | 1 | 100% |
Unknown,Unknown,1HatchMuta | 1 | 100% |
Unknown,Unknown,3HatchHydra | 2 | 50% |
Unknown,Unknown,3HatchMuta | 10 | 60% |
Unknown,Unknown,Unknown | 11 | 73% |
33 openings | 157 | 61% |
#8 daqin
opening | games | wins | first | last |
HatchPool,12Hatch,2HatchMuta | 123 | 83% | 0 | 156 |
PoolHatch,9Pool,2HatchMuta | 3 | 33% | 12 | 138 |
PoolHatch,9Pool,3HatchMuta | 2 | 50% | 11 | 20 |
PoolHatch,9Pool,6HatchHydra | 2 | 0% | 58 | 98 |
PoolHatch,Overpool,2HatchMuta | 23 | 78% | 83 | 155 |
PoolHatch,Overpool,3HatchMuta | 3 | 0% | 37 | 105 |
PoolHatch,Overpool,6HatchHydra | 1 | 0% | 1 | 1 |
7 openings | 157 | 78% | | |
enemy | games | wins |
FFE,Forge,5GateGoon | 27 | 96% |
FFE,Forge,Speedlot | 88 | 74% |
FFE,Forge,Unknown | 2 | 100% |
FFE,Forge,ZealotArchon | 7 | 100% |
FFE,Gateway,5GateGoon | 2 | 50% |
FFE,Gateway,Speedlot | 23 | 74% |
FFE,Nexus,5GateGoon | 2 | 100% |
FFE,Nexus,Speedlot | 6 | 33% |
8 openings | 157 | 78% |
The mutalisks did in DaQin. DaQin’s slow start puts 12 hatch ahead of other choices; DaQin makes cannons before nexus regardless of what the opponent does. DaQin defends its natural entrance with cannons, but not its nexus, so the mutalisks have a free hand and DaQin finds itself short of probes.
#9 freshmeat
opening | games | wins | first | last |
PoolHatch,12Pool,2HatchMuta | 40 | 65% | 3 | 152 |
PoolHatch,12Pool,2HatchSpeedling | 19 | 47% | 1 | 135 |
PoolLair,9Pool,1HatchMuta | 98 | 69% | 0 | 156 |
3 openings | 157 | 66% | | |
enemy | games | wins |
HatchPool,10Hatch,2HatchSpeedling | 26 | 62% |
HatchPool,10Hatch,3HatchMuta | 13 | 38% |
HatchPool,10Hatch,Unknown | 10 | 60% |
HatchPool,9Pool,2HatchSpeedling | 7 | 29% |
HatchPool,9Pool,Unknown | 2 | 50% |
HatchPool,Unknown,3HatchMuta | 1 | 100% |
HatchPool,Unknown,Unknown | 1 | 100% |
PoolHatch,4Pool,LingRush | 24 | 79% |
PoolHatch,9Pool,2HatchSpeedling | 4 | 50% |
PoolHatch,9Pool,Unknown | 2 | 100% |
PoolHatch,Unknown,2HatchSpeedling | 4 | 75% |
PoolHatch,Unknown,3HatchMuta | 1 | 100% |
PoolLair,Unknown,Unknown | 1 | 100% |
Unknown,9Pool,Unknown | 4 | 100% |
Unknown,Unknown,+1Ling | 2 | 100% |
Unknown,Unknown,1HatchHydra | 2 | 100% |
Unknown,Unknown,1HatchMuta | 2 | 100% |
Unknown,Unknown,3HatchMuta | 11 | 64% |
Unknown,Unknown,3HatchSpeedling | 1 | 0% |
Unknown,Unknown,Unknown | 39 | 67% |
20 openings | 157 | 66% |
#10 ualbertabot
opening | games | wins | first | last |
PoolHatch,12Pool,2HatchMuta | 1 | 0% | 98 | 98 |
PoolHatch,Overpool,2HatchMuta | 85 | 42% | 0 | 156 |
PoolHatch,Overpool,2HatchSpeedling | 71 | 31% | 4 | 154 |
3 openings | 157 | 37% | | |
enemy | games | wins |
1GateCore,0Zealot,4Gate | 2 | 100% |
1GateCore,0Zealot,DT | 1 | 100% |
2Gate,10/12,ZealotRush | 10 | 90% |
2Gate,9/9,Unknown | 2 | 0% |
2Gate,9/9,ZealotRush | 36 | 42% |
2Rax,Main,MarineRush | 25 | 0% |
2Rax,Main,Unknown | 6 | 33% |
PoolHatch,4Pool,LingRush | 52 | 40% |
RaxCC,8Rax,Unknown | 10 | 0% |
RaxFact,Unknown,2Fact | 1 | 100% |
RaxFact,Unknown,Unknown | 1 | 0% |
Unknown,Unknown,Unknown | 11 | 64% |
12 openings | 157 | 37% |
McRave met UAlbertaBot with the same strategies as last year (except for one stray PoolHatch,12Pool,2HatchMuta
this year). The same strategies by name, that is. The actual play was different and performed far worse against UAlbertaBot’s pressure builds. I looked at some games. When McRave respected its enemy and defended itself, it generally won. Sometimes it seemed to arrogantly conclude “Pff, you’re not worth spending a sunken on” and got overrun. As far as I could tell from watching games, it wasn’t a scouting miss—though it’s easy to overlook things in watching games. It had the feel of a bug.
Comments