Locutus’s game records are in almost the same format as Steamhammer’s and can be summarized by the same script. I expect it will also work for DaQin and AITP.
Where Steamhammer was set to keep 100 game records per opponent, Locutus was set to keep 200. Since there were 100 rounds in the tournament, game counts over 100 mean that pre-learned data is included in the table alongside the tournament data. If Locutus was not trained on a near-final version of the opponent, then the two could be significantly different.
#2 purplewave
| opening | games | wins |
| 4GateGoon | 28 | 54% |
| 4GateGoonWithObs | 16 | 62% |
| FakeDTRush | 10 | 20% |
| ForgeExpand | 19 | 63% |
| ZealotDrop | 127 | 73% |
| 5 openings | 200 | 66% |
| plan | predicted | recognized | accuracy |
| count | games | wins | count | games | wins | good | ? |
| Dark templar | 20 | 10% | 50% | 30 | 15% | 37% | 45% | 0% |
| Fast rush | 3 | 2% | 100% | 5 | 2% | 80% | 0% | 0% |
| Heavy rush | 6 | 3% | 17% | 12 | 6% | 67% | 0% | 0% |
| Not fast rush | 171 | 86% | 69% | 153 | 76% | 71% | 81% | 0% |
| timing | # | median | early | late |
| gas steal attempt | 92 | 1:44 | 0:44 | 2:01 |
| gas steal success | 15 | - | - | - |
| enemy scout | 186 | 2:27 | 1:09 | 16:11 |
| enemy combat units | 198 | 3:29 | 2:19 | 7:26 |
| enemy air units | 55 | 6:50 | 4:50 | 20:31 |
| enemy cloaked units | 93 | 11:07 | 5:13 | 19:54 |
After seeing a few Locutus-PurpleWave games I got the impression that PurpleWave reacted adequately to Locutus’s trick strategy of cannoning the ramp and then dropping zealots. So I was surprised that Locutus considered it the best choice. But the overall win rate is high compared to the tournament results, so I suspect it is influenced by pre-learned data from games against a weaker version of PurpleWave.
#3 bananabrain
| opening | games | wins |
| 4GateGoon | 12 | 83% |
| ForgeExpand | 37 | 84% |
| ZealotDrop | 151 | 95% |
| 3 openings | 200 | 92% |
| plan | predicted | recognized | accuracy |
| count | games | wins | count | games | wins | good | ? |
| Dark templar | 5 | 2% | 80% | 28 | 14% | 100% | 40% | 0% |
| Fast rush | 6 | 3% | 100% | 12 | 6% | 83% | 0% | 0% |
| Heavy rush | 1 | 0% | 100% | 19 | 10% | 89% | 0% | 0% |
| Not fast rush | 188 | 94% | 92% | 141 | 70% | 91% | 70% | 0% |
| timing | # | median | early | late |
| gas steal attempt | 59 | 1:45 | 0:46 | 1:52 |
| gas steal success | 6 | - | - | - |
| enemy scout | 196 | 1:57 | 0:46 | 10:09 |
| enemy combat units | 200 | 3:30 | 2:18 | 7:25 |
| enemy air units | 20 | 15:41 | 13:05 | 17:35 |
| enemy cloaked units | 31 | 6:13 | 5:46 | 16:11 |
#4 daqin
| opening | games | wins |
| 4GateGoon | 11 | 64% |
| FakeDTRush | 1 | 0% |
| ForgeExpand | 1 | 0% |
| ZealotDrop | 87 | 87% |
| 4 openings | 100 | 83% |
| plan | predicted | recognized | accuracy |
| count | games | wins | count | games | wins | good | ? |
| Dark templar | 9 | 9% | 89% | 21 | 21% | 76% | 11% | 0% |
| Fast rush | 2 | 2% | 100% | 3 | 3% | 67% | 0% | 0% |
| Not fast rush | 88 | 88% | 82% | 76 | 76% | 86% | 74% | 0% |
| Unknown | 1 | 1% | 100% | | - | - | 0% | 0% |
| timing | # | median | early | late |
| gas steal attempt | 26 | 1:45 | 0:45 | 1:49 |
| gas steal success | 4 | - | - | - |
| enemy scout | 97 | 3:02 | 2:15 | 18:05 |
| enemy combat units | 100 | 3:31 | 2:19 | 5:22 |
| enemy air units | 2 | 17:47 | 16:23 | 19:10 |
| enemy cloaked units | 91 | 7:18 | 6:02 | 9:17 |
#5 steamhammer
| opening | games | wins |
| 4GateGoon | 7 | 100% |
| 9-9GateDefensive | 5 | 100% |
| CannonFirst4GateGoon | 11 | 100% |
| ForgeExpand4Gate2Archon | 11 | 73% |
| ForgeExpand5GateGoon | 155 | 95% |
| ForgeExpandSpeedlots | 1 | 100% |
| PlasmaCorsairsCarriers | 9 | 100% |
| ProxyHeavyZealotRush2 | 1 | 0% |
| 8 openings | 200 | 94% |
| plan | predicted | recognized | accuracy |
| count | games | wins | count | games | wins | good | ? |
| Fast rush | 14 | 7% | 100% | 26 | 13% | 96% | 57% | 0% |
| Heavy rush | 26 | 13% | 81% | 59 | 30% | 92% | 38% | 0% |
| Hydra bust | 4 | 2% | 100% | 23 | 12% | 87% | 50% | 0% |
| Not fast rush | 156 | 78% | 96% | 92 | 46% | 98% | 53% | 0% |
| timing | # | median | early | late |
| gas steal attempt | 0 | - | - | - |
| gas steal success | 0 | - | - | - |
| enemy scout | 188 | 2:21 | 0:51 | 18:45 |
| enemy combat units | 199 | 3:10 | 2:02 | 7:11 |
| enemy air units | 12 | 5:40 | 5:01 | 6:14 |
| enemy cloaked units | 7 | 10:02 | 5:15 | 19:39 |
The numbers in the “recognized” columns of the plan table show how widely Steamhammer cast its net for a solution to Locutus.
Locutus never tried to steal the gas of a zerg. Objectively, that makes sense. In the context of bot play, I’m not so sure; many bots of all races mess up their builds in the face of a gas steal.
#6 zzzkbot
| opening | games | wins |
| 9-9GateDefensive | 4 | 100% |
| CannonAtChokeFirst4GateGoon | 13 | 54% |
| CannonFirst4GateGoon | 178 | 99% |
| PlasmaCorsairsCarriers | 1 | 100% |
| PlasmaProxy2Gate | 4 | 100% |
| 5 openings | 200 | 96% |
| plan | predicted | recognized | accuracy |
| count | games | wins | count | games | wins | good | ? |
| Fast rush | 115 | 57% | 97% | 107 | 54% | 94% | 73% | 0% |
| Heavy rush | 78 | 39% | 96% | 66 | 33% | 100% | 54% | 0% |
| Hydra bust | 1 | 0% | 100% | 2 | 1% | 100% | 100% | 0% |
| Not fast rush | 6 | 3% | 100% | 25 | 12% | 96% | 17% | 0% |
| timing | # | median | early | late |
| gas steal attempt | 0 | - | - | - |
| gas steal success | 0 | - | - | - |
| enemy scout | 200 | 2:25 | 0:51 | 5:58 |
| enemy combat units | 196 | 2:28 | 2:03 | 7:59 |
| enemy air units | 52 | 7:53 | 5:26 | 13:43 |
| enemy cloaked units | 0 | - | - | - |
#7 microwave
| opening | games | wins |
| 9-9GateDefensive | 2 | 100% |
| ForgeExpand4Gate2Archon | 3 | 67% |
| ForgeExpand5GateGoon | 146 | 99% |
| ForgeExpandSpeedlots | 44 | 80% |
| PlasmaCorsairsCarriers | 2 | 100% |
| PlasmaProxy2Gate | 3 | 100% |
| 6 openings | 200 | 94% |
| plan | predicted | recognized | accuracy |
| count | games | wins | count | games | wins | good | ? |
| Fast rush | 50 | 25% | 82% | 41 | 20% | 98% | 32% | 0% |
| Heavy rush | 34 | 17% | 100% | 50 | 25% | 90% | 47% | 0% |
| Hydra bust | | - | - | 17 | 8% | 100% | 0% | 0% |
| Not fast rush | 115 | 57% | 98% | 91 | 46% | 95% | 57% | 0% |
| Proxy | 1 | 0% | 100% | 1 | 0% | 100% | 0% | 0% |
| timing | # | median | early | late |
| gas steal attempt | 0 | - | - | - |
| gas steal success | 0 | - | - | - |
| enemy scout | 195 | 2:30 | 1:07 | 21:14 |
| enemy combat units | 198 | 3:03 | 1:47 | 7:59 |
| enemy air units | 69 | 11:19 | 5:49 | 24:25 |
| enemy cloaked units | 32 | 6:37 | 5:21 | 13:49 |
#8 iron
| opening | games | wins |
| CautiousDTDrop | 200 | 98% |
| 1 openings | 200 | 98% |
| plan | predicted | recognized | accuracy |
| count | games | wins | count | games | wins | good | ? |
| Not fast rush | 13 | 6% | 100% | 61 | 30% | 100% | 46% | 0% |
| Wall-in | 187 | 94% | 98% | 139 | 70% | 97% | 71% | 0% |
| timing | # | median | early | late |
| gas steal attempt | 35 | 0:46 | 0:45 | 0:48 |
| gas steal success | 11 | - | - | - |
| enemy scout | 190 | 2:45 | 1:42 | 10:46 |
| enemy combat units | 200 | 4:07 | 2:34 | 6:39 |
| enemy air units | 117 | 8:18 | 6:55 | 13:39 |
| enemy cloaked units | 117 | 8:18 | 6:55 | 13:39 |
Locutus declared an enemy-specific strategy against Iron. I’m not sure why it also had pre-learned data.
#9 xiaoyi
| opening | games | wins |
| 10-15GateGoon | 1 | 0% |
| 10Gate25NexusFE | 2 | 50% |
| DTDrop | 1 | 0% |
| ForgeExpand | 1 | 0% |
| Proxy2ZealotsIntoGoons | 30 | 93% |
| ProxyDTRush | 165 | 95% |
| 6 openings | 200 | 93% |
| plan | predicted | recognized | accuracy |
| count | games | wins | count | games | wins | good | ? |
| Not fast rush | 200 | 100% | 93% | 200 | 100% | 93% | 100% | 0% |
| timing | # | median | early | late |
| gas steal attempt | 68 | 1:17 | 1:12 | 1:50 |
| gas steal success | 12 | - | - | - |
| enemy scout | 194 | 3:01 | 2:11 | 15:29 |
| enemy combat units | 200 | 4:20 | 2:29 | 6:57 |
| enemy air units | 13 | 12:59 | 7:54 | 15:10 |
| enemy cloaked units | 4 | 8:00 | 7:54 | 8:18 |
Proxy DT rush. That tends to confirm my picture of XiaoYi as vulnerable to tricks.
#10 mcrave
| opening | games | wins |
| 4GateGoon | 5 | 80% |
| 4GateGoonWithObs | 3 | 100% |
| FakeDTRush | 1 | 0% |
| ForgeExpand | 2 | 50% |
| ZealotDrop | 189 | 94% |
| 5 openings | 200 | 93% |
| plan | predicted | recognized | accuracy |
| count | games | wins | count | games | wins | good | ? |
| Dark templar | 3 | 2% | 100% | 16 | 8% | 94% | 67% | 0% |
| Fast rush | 3 | 2% | 100% | 18 | 9% | 100% | 0% | 0% |
| Heavy rush | 2 | 1% | 50% | 5 | 2% | 100% | 0% | 0% |
| Not fast rush | 192 | 96% | 93% | 161 | 80% | 92% | 82% | 0% |
| timing | # | median | early | late |
| gas steal attempt | 99 | 1:46 | 0:45 | 1:57 |
| gas steal success | 2 | - | - | - |
| enemy scout | 193 | 2:09 | 1:21 | 14:38 |
| enemy combat units | 200 | 3:35 | 2:21 | 7:26 |
| enemy air units | 24 | 11:44 | 7:19 | 20:31 |
| enemy cloaked units | 60 | 11:03 | 5:15 | 14:25 |
#11 ualbertabot
| opening | games | wins |
| CannonFirst4GateGoon | 188 | 99% |
| PlasmaProxy2Gate | 10 | 100% |
| Proxy9-9Gate | 2 | 0% |
| 3 openings | 200 | 98% |
| plan | predicted | recognized | accuracy |
| count | games | wins | count | games | wins | good | ? |
| Dark templar | 1 | 0% | 100% | 11 | 6% | 100% | 0% | 0% |
| Fast rush | 23 | 12% | 100% | 29 | 14% | 93% | 22% | 0% |
| Heavy rush | 48 | 24% | 96% | 63 | 32% | 100% | 29% | 0% |
| Not fast rush | 128 | 64% | 99% | 97 | 48% | 99% | 51% | 0% |
| timing | # | median | early | late |
| gas steal attempt | 95 | 2:00 | 1:57 | 2:03 |
| gas steal success | 0 | - | - | - |
| enemy scout | 127 | 2:11 | 1:18 | 5:45 |
| enemy combat units | 135 | 3:22 | 2:01 | 6:54 |
| enemy air units | 7 | 6:45 | 6:41 | 6:53 |
| enemy cloaked units | 11 | 4:34 | 4:30 | 5:13 |
Locutus configured an enemy-specific strategy against UAlbertaBot. Openings other than CannonFirst4GateGoon are from pre-learned data, which was ignored in making the opening decision.
#12 aitp
| opening | games | wins |
| DTDrop | 66 | 100% |
| ForgeExpand | 33 | 97% |
| Turtle | 1 | 100% |
| 3 openings | 100 | 99% |
| plan | predicted | recognized | accuracy |
| count | games | wins | count | games | wins | good | ? |
| Fast rush | 2 | 2% | 100% | 7 | 7% | 100% | 0% | 0% |
| Heavy rush | 1 | 1% | 100% | 1 | 1% | 100% | 0% | 0% |
| Not fast rush | 77 | 77% | 99% | 62 | 62% | 100% | 62% | 0% |
| Unknown | 1 | 1% | 100% | | - | - | 0% | 0% |
| Wall-in | 19 | 19% | 100% | 30 | 30% | 97% | 42% | 0% |
| timing | # | median | early | late |
| gas steal attempt | 43 | 0:46 | 0:45 | 1:27 |
| gas steal success | 15 | - | - | - |
| enemy scout | 26 | 3:19 | 2:41 | 6:02 |
| enemy combat units | 100 | 3:48 | 2:01 | 7:49 |
| enemy air units | 0 | - | - | - |
| enemy cloaked units | 0 | - | - | - |
#13 bunkerboxer
| opening | games | wins |
| 10Gate25NexusFE | 21 | 95% |
| CannonFirst4GateGoon | 88 | 100% |
| ForgeExpand | 79 | 100% |
| PlasmaProxy2Gate | 10 | 100% |
| Proxy9-9Gate | 2 | 0% |
| 5 openings | 200 | 98% |
| plan | predicted | recognized | accuracy |
| count | games | wins | count | games | wins | good | ? |
| Fast rush | 17 | 8% | 100% | 20 | 10% | 90% | 24% | 0% |
| Heavy rush | 36 | 18% | 94% | 35 | 18% | 100% | 31% | 0% |
| Not fast rush | 147 | 74% | 99% | 144 | 72% | 99% | 83% | 1% |
| Unknown | | - | - | 1 | 0% | 100% | 0% | 0% |
| timing | # | median | early | late |
| gas steal attempt | 87 | 1:29 | 0:45 | 2:03 |
| gas steal success | 16 | - | - | - |
| enemy scout | 104 | 2:07 | 1:27 | 3:18 |
| enemy combat units | 113 | 2:26 | 2:01 | 8:14 |
| enemy air units | 0 | - | - | - |
| enemy cloaked units | 0 | - | - | - |
overall
| total | PvT | PvP | PvZ | PvR |
| opening | games | wins | games | wins | games | wins | games | wins | games | wins |
| 10-15GateGoon | 1 | 0% |
1 | 0% |
| | |
| 10Gate25NexusFE | 23 | 91% |
23 | 91% |
| | |
| 4GateGoon | 63 | 68% |
| 56 | 64% |
7 | 100% |
|
| 4GateGoonWithObs | 19 | 68% |
| 19 | 68% |
| |
| 9-9GateDefensive | 11 | 100% |
| | 11 | 100% |
|
| CannonAtChokeFirst4GateGoon | 13 | 54% |
| | 13 | 54% |
|
| CannonFirst4GateGoon | 465 | 100% |
| | 189 | 99% |
276 | 100% |
| CautiousDTDrop | 200 | 98% |
200 | 98% |
| | |
| DTDrop | 67 | 99% |
67 | 99% |
| | |
| FakeDTRush | 12 | 17% |
| 12 | 17% |
| |
| ForgeExpand | 172 | 90% |
113 | 98% |
59 | 75% |
| |
| ForgeExpand4Gate2Archon | 14 | 71% |
| | 14 | 71% |
|
| ForgeExpand5GateGoon | 301 | 97% |
| | 301 | 97% |
|
| ForgeExpandSpeedlots | 45 | 80% |
| | 45 | 80% |
|
| PlasmaCorsairsCarriers | 12 | 100% |
| | 12 | 100% |
|
| PlasmaProxy2Gate | 27 | 100% |
| | 7 | 100% |
20 | 100% |
| Proxy2ZealotsIntoGoons | 30 | 93% |
30 | 93% |
| | |
| Proxy9-9Gate | 4 | 0% |
| | | 4 | 0% |
| ProxyDTRush | 165 | 95% |
165 | 95% |
| | |
| ProxyHeavyZealotRush2 | 1 | 0% |
| | 1 | 0% |
|
| Turtle | 1 | 100% |
1 | 100% |
| | |
| ZealotDrop | 554 | 88% |
| 554 | 88% |
| |
| total | 2200 | 92% | 600 | 97% | 700 | 84% | 600 | 95% | 300 | 98% |
| openings played | 22 | 8 | 5 | 10 | 3 |
Comments
Dan on :
On first glance, yes, PurpleWave sees the cannons and reacts appropriately. There's a lot of nonsense you can do (and bots do do) behind cannons (Carrier rush, DT rush, fast expansion, 4-Gate Goon, 4-gate proxy mass slowlot), and PurpleWave's reaction is sound against them all (expansion into Observer + Reaver).
PurpleWave also generally comes out of the drop itself in good shape. It could do a better job of saving probes but it still tends to wind up ahead economically.
One little advantage is adding noise to PurpleWave's learning data. Because that cannon reaction can come out of any opener, and PurpleWave's learning doesn't understand that a deviation happened, you make it harder for PurpleWave to learn what builds work against your bot as a whole. I think this effect is fairly minor.
A nastier bit about the drop build is that it forced PurpleWave into a Shuttle+Reaver composition, which was new in AIIDE and still shaky. So shaky that Locutus could frequently overcome its build order disadvantage by virtue of PurpleWave throwing its Reavers.
The other nasty bit -- and the more significant one, I think -- is that it forces PurpleWave to throw out its well-oiled opening book for PvP. PurpleWave thrives on gaining early-game advantages by detecting what you're doing and reacting correctly. This goes down to the resolution of "do I even bother making Zealots before my first Dragoon?" -- it really tries to get every edge and cut every corner it can. But opening cannons means it's settling for the moderate-but-not-lethal advantage of having a faster expansion and better (in theory, but frankly worse than pure Dragoon in execution) tech. And the damage dealt by the drop comes close to evening that advantage back out.
So mainly it's the combination of guaranteed early game survival vs. PurpleWave + forcing out PurpleWave's mediocre Shuttles that let the drop opening make for a fair fight against PurpleWave.