AIIDE 2023 - what Dragon learned
Once the opening build is over, Dragon adapts to the opponent’s unit mix and many of its games start to look similar. Nevertheless, the opening makes a big difference in how the game comes out.
The “dirty worker rush” is a late rush with a lot of SCVs. You have to be ready for it, but if you are, it’s easy to beat.
#1 bananabrain
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 41 | 5% | 2 | 271 |
2rax bio | 27 | 0% | 5 | 260 |
2rax mech | 46 | 4% | 0 | 279 |
bio | 45 | 4% | 1 | 282 |
dirty worker rush | 26 | 0% | 3 | 203 |
mass vulture | 54 | 7% | 6 | 281 |
siege expand | 48 | 12% | 4 | 286 |
7 openings | 287 | 6% |
#2 stardust
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 60 | 10% | 6 | 271 |
2rax bio | 28 | 7% | 3 | 272 |
2rax mech | 78 | 13% | 0 | 288 |
bio | 45 | 7% | 2 | 266 |
dirty worker rush | 25 | 0% | 5 | 268 |
mass vulture | 27 | 4% | 4 | 253 |
siege expand | 26 | 0% | 1 | 276 |
7 openings | 289 | 8% |
It’s surprising that adding a second barracks was best against Stardust. I imagine the extra firepower was good against the first protoss attack.
#3 purplewave
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 8 | 25% | 5 | 268 |
2rax bio | 5 | 0% | 1 | 201 |
2rax mech | 5 | 0% | 0 | 136 |
bio | 202 | 56% | 9 | 287 |
dirty worker rush | 5 | 0% | 8 | 263 |
mass vulture | 58 | 53% | 2 | 205 |
siege expand | 5 | 0% | 3 | 204 |
7 openings | 288 | 51% |
#4 steamhammer
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 8 | 0% | 1 | 282 |
2rax bio | 10 | 10% | 0 | 149 |
2rax mech | 25 | 16% | 2 | 227 |
bio | 40 | 25% | 5 | 278 |
dirty worker rush | 171 | 44% | 4 | 287 |
mass vulture | 24 | 21% | 6 | 209 |
siege expand | 10 | 10% | 3 | 132 |
7 openings | 288 | 34% |
That SCV rush! Reading through Dragon’s game history file, you can practically see the two learning systems dueling. Dragon loses a string of games - it finds that the SCV rush works - before long Steamhammer switches builds to beat it - Dragon notices and searches for an opening to exploit weaknesses in Steamhammer’s answer - and so on. Steamhammer knows about fast worker rushes, but doesn’t have a special reaction to late worker rushes. It underestimates the danger of the SCVs. Dragon and WillyT are the only opponents that take advantage.
#5 mcrave
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 9 | 0% | 7 | 279 |
2rax bio | 69 | 54% | 5 | 262 |
2rax mech | 118 | 40% | 10 | 288 |
bio | 23 | 26% | 6 | 178 |
dirty worker rush | 21 | 14% | 2 | 265 |
mass vulture | 24 | 21% | 1 | 169 |
siege expand | 25 | 16% | 0 | 276 |
7 openings | 289 | 35% |
McRave copes with the SCV rush, so Dragon settles on mainstream builds.
#6 microwave
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 10 | 30% | 1 | 280 |
2rax bio | 18 | 28% | 10 | 161 |
2rax mech | 8 | 12% | 15 | 249 |
bio | 6 | 0% | 0 | 272 |
dirty worker rush | 15 | 47% | 8 | 285 |
mass vulture | 224 | 50% | 6 | 281 |
siege expand | 5 | 0% | 7 | 106 |
7 openings | 286 | 44% |
Microwave would likely have done much better if it coped with the vultures better.
#8 ualbertabot
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 43 | 86% | 85 | 289 |
2rax bio | 1 | 0% | 0 | 0 |
2rax mech | 6 | 50% | 71 | 137 |
bio | 76 | 84% | 3 | 86 |
dirty worker rush | 69 | 88% | 58 | 286 |
mass vulture | 69 | 86% | 88 | 287 |
siege expand | 26 | 65% | 1 | 219 |
7 openings | 290 | 83% |
#9 infestedartosis
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 2 | 0% | 109 | 225 |
2rax bio | 12 | 50% | 2 | 228 |
2rax mech | 5 | 40% | 80 | 223 |
bio | 6 | 50% | 108 | 288 |
dirty worker rush | 25 | 68% | 0 | 224 |
mass vulture | 226 | 85% | 6 | 289 |
siege expand | 14 | 57% | 112 | 209 |
7 openings | 290 | 78% |
AIIDE 2022 - what Dragon learned
Dragon records, for each game, only the opening build and the result. It follows up the opening with the same adaptive middlegame, so that games which start out differently tend to shift into looking the same—except for the worker rush opening, which is obviously all-in. Even so, the opening build seems to make a difference.
#1 bananabrain
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 12 | 0% | 0 | 220 |
2rax bio | 45 | 18% | 5 | 217 |
2rax mech | 12 | 0% | 7 | 219 |
bio | 12 | 0% | 4 | 215 |
dirty worker rush | 11 | 0% | 1 | 214 |
mass vulture | 82 | 34% | 2 | 218 |
siege expand | 47 | 28% | 14 | 216 |
7 openings | 221 | 22% |
BananaBrain liked to open with two gates versus Dragon. The vultures are presumably to counter zealots.
#2 stardust
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 24 | 4% | 3 | 202 |
2rax bio | 18 | 6% | 1 | 143 |
2rax mech | 24 | 4% | 4 | 184 |
bio | 23 | 4% | 5 | 203 |
dirty worker rush | 40 | 10% | 0 | 219 |
mass vulture | 75 | 13% | 6 | 218 |
siege expand | 16 | 0% | 2 | 180 |
7 openings | 220 | 8% |
But then again, it liked vultures versus dragoon expert Stardust too. It’s interesting that the worker rush was able to score some wins. It looks like a Stardust weakness—BananaBrain defended the worker rush every time.
#4 steamhammer
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 61 | 26% | 3 | 219 |
2rax bio | 15 | 7% | 7 | 199 |
2rax mech | 20 | 20% | 4 | 187 |
bio | 48 | 27% | 17 | 220 |
dirty worker rush | 44 | 18% | 10 | 186 |
mass vulture | 15 | 20% | 0 | 209 |
siege expand | 18 | 11% | 12 | 204 |
7 openings | 221 | 21% |
Steamhammer had a variety of winning builds against Dragon (I’ll post that data tomorrow). I gather that Dragon’s barracks openings are the ones that were able to cope with all the zerg tries about equally well.
#5 purplewave
opening | games | wins | first | last |
---|---|---|---|---|
2rax mech | 113 | 96% | 2 | 200 |
bio | 1 | 0% | 0 | 0 |
siege expand | 106 | 100% | 1 | 219 |
3 openings | 220 | 98% |
Dragon had PurpleWave’s number and did not need to explore alternatives. It looks as though PurpleWave’s numerous timeouts are what made the pairing a blowout rather than a moderate victory, though. Dragon likes long games with lots of units on both sides, which no doubt gave PurpleWave plenty of opportunities to time out. Results so far in the physical hardware version of the tournament are very different.
#6 mcrave
opening | games | wins | first | last |
---|---|---|---|---|
2rax mech | 205 | 97% | 2 | 219 |
dirty worker rush | 2 | 50% | 0 | 1 |
mass vulture | 13 | 77% | 25 | 93 |
3 openings | 220 | 95% |
McRave’s mutalisks may be less skilled against goliaths.
#7 microwave
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 16 | 44% | 28 | 85 |
2rax bio | 21 | 43% | 0 | 140 |
2rax mech | 50 | 52% | 4 | 173 |
bio | 11 | 45% | 5 | 142 |
dirty worker rush | 7 | 29% | 20 | 138 |
mass vulture | 101 | 67% | 11 | 220 |
siege expand | 15 | 40% | 39 | 86 |
7 openings | 221 | 56% |
#8 ualbertabot
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 1 | 0% | 110 | 110 |
2rax bio | 42 | 74% | 52 | 106 |
2rax mech | 20 | 65% | 70 | 212 |
bio | 1 | 0% | 71 | 71 |
dirty worker rush | 1 | 0% | 69 | 69 |
mass vulture | 95 | 82% | 65 | 216 |
siege expand | 57 | 79% | 0 | 109 |
7 openings | 217 | 77% |
#9 pylonpuller
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 220 | 98% | 0 | 220 |
siege expand | 1 | 100% | 133 | 133 |
2 openings | 221 | 98% |
#10 styx
opening | games | wins | first | last |
---|---|---|---|---|
2rax bio | 73 | 92% | 1 | 73 |
dirty worker rush | 1 | 0% | 0 | 0 |
mass vulture | 146 | 97% | 74 | 219 |
3 openings | 220 | 95% |
#11 cunybot
opening | games | wins | first | last |
---|---|---|---|---|
2rax mech | 219 | 96% | 0 | 219 |
dirty worker rush | 1 | 0% | 103 | 103 |
2 openings | 220 | 96% |
AIIDE 2021 - Dragon versus DaQin
Two posts today, because they’re short. Blue is good for Dragon, red is good for DaQin.
dragon strategies versus daqin strategies
overall | 12NexusCarriers | 3GateDT | 4GateGoon | DTDrop | |
---|---|---|---|---|---|
overall | 74/157 47% | 52/127 41% | 5/9 56% | 16/20 80% | 1/1 100% |
1rax fe | 55/98 56% | 42/81 52% | - | 13/17 76% | - |
2rax bio | 1/6 17% | 1/6 17% | - | - | - |
2rax mech | 4/11 36% | 2/9 22% | 1/1 100% | - | 1/1 100% |
bio | 4/13 31% | 1/10 10% | 3/3 100% | - | - |
dirty worker rush | 0/5 0% | 0/5 0% | - | - | - |
mass vulture | 10/20 50% | 6/12 50% | 1/5 20% | 3/3 100% | - |
siege expand | 0/4 0% | 0/4 0% | - | - | - |
The bots seem to have found the saddle point of the strategy game: DaQin’s carriers were from OK to great against everything, and Dragon’s “1 rax fe” was also as good as it got against everything.
dragon as seen by daqin
dragon played | # | daqin recognized |
---|---|---|
1rax fe | 98 | 32 Safe expand | 27 Unknown | 17 Proxy | 13 Naked expand | 9 Not fast rush |
2rax bio | 6 | 3 Unknown | 2 Safe expand | 1 Naked expand |
2rax mech | 11 | 7 Safe expand | 2 Not fast rush | 1 Proxy | 1 Naked expand |
bio | 13 | 6 Safe expand | 3 Naked expand | 2 Unknown | 2 Proxy |
dirty worker rush | 5 | 5 Worker rush |
mass vulture | 20 | 17 Factory | 2 Proxy | 1 Not fast rush |
siege expand | 4 | 3 Unknown | 1 Not fast rush |
Recognition was good against the worker rush and the vultures, but it looks scattered otherwise. Where did those supposed proxies come from?
AIIDE 2021 - Microwave versus Dragon
I found another game that both bots recorded as a loss. The cause is different. While I try to figure it out, here is business as usual:
Blue is good for Microwave, red is good for Dragon.
microwave strategies versus dragon strategies
overall | 1rax fe | 2rax bio | 2rax mech | bio | dirty worker rush | mass vulture | siege expand | |
---|---|---|---|---|---|---|---|---|
overall | 55/157 35% | 8/24 33% | 11/28 39% | 17/66 26% | 10/26 38% | 2/2 100% | 3/5 60% | 4/6 67% |
10Hatch9Pool9gas | 0/1 0% | - | 0/1 0% | - | - | - | - | - |
11Gas10PoolMuta | 6/10 60% | - | 1/1 100% | 0/1 0% | 4/6 67% | - | 1/2 50% | - |
11HatchTurtleHydra | 0/1 0% | - | - | 0/1 0% | - | - | - | - |
12HatchTurtle | 1/2 50% | - | 0/1 0% | - | - | - | - | 1/1 100% |
12PoolMuta | 0/1 0% | - | - | - | 0/1 0% | - | - | - |
1HatchMuta_Sparkle | 1/3 33% | 0/1 0% | 0/1 0% | 1/1 100% | - | - | - | - |
2HatchLurker | 0/1 0% | 0/1 0% | - | - | - | - | - | - |
2HatchMuta | 2/6 33% | 0/1 0% | - | 2/5 40% | - | - | - | - |
3HatchHydra | 0/2 0% | - | - | 0/2 0% | - | - | - | - |
3HatchLingBust | 0/1 0% | - | - | 0/1 0% | - | - | - | - |
3HatchLurker | 8/17 47% | 1/6 17% | 2/4 50% | 3/4 75% | 2/2 100% | - | - | 0/1 0% |
3HatchMuta | 0/2 0% | - | - | - | 0/2 0% | - | - | - |
3HatchMutaExpo | 0/1 0% | - | 0/1 0% | - | - | - | - | - |
4PoolHard | 0/4 0% | - | 0/1 0% | 0/3 0% | - | - | - | - |
4PoolSoft | 3/25 12% | 0/3 0% | 1/3 33% | 1/12 8% | 0/5 0% | 1/1 100% | - | 0/1 0% |
5HatchPool | 6/10 60% | 2/2 100% | 2/3 67% | - | 0/3 0% | 1/1 100% | - | 1/1 100% |
5HatchPoolHydra | 15/22 68% | 5/5 100% | 3/7 43% | 2/4 50% | 3/3 100% | - | 1/2 50% | 1/1 100% |
7Pool | 0/1 0% | - | 0/1 0% | - | - | - | - | - |
7PoolHydraRush7D | 0/1 0% | - | - | 0/1 0% | - | - | - | - |
9Pool | 0/3 0% | - | - | 0/3 0% | - | - | - | - |
9PoolHatch | 0/1 0% | 0/1 0% | - | - | - | - | - | - |
9PoolHatchGasSpeed8D | 0/1 0% | - | 0/1 0% | - | - | - | - | - |
9PoolLurker | 0/2 0% | 0/1 0% | - | 0/1 0% | - | - | - | - |
9PoolSpeed | 11/26 42% | 0/1 0% | 1/1 100% | 8/21 38% | 1/2 50% | - | - | 1/1 100% |
9PoolSpeedLing | 1/8 12% | 0/2 0% | 1/2 50% | 0/3 0% | 0/1 0% | - | - | - |
ZvZ_Overgas11Pool | 0/1 0% | - | - | 0/1 0% | - | - | - | - |
ZvZ_Overgas9Pool | 0/1 0% | - | - | 0/1 0% | - | - | - | - |
ZvZ_Overpool9Gas | 1/3 33% | - | - | 0/1 0% | 0/1 0% | - | 1/1 100% | - |
Microwave beat the worker rush with both 4PoolSoft
and 5HatchPool
(5 hatcheries before pool), which implies that it has a special reaction to the worker rush.
The fullest cells are 9PoolSpeed
versus “2rax mech”, with 21 games, and 4PoolSoft
versus the same with 12 games. No other cell has more than 7 games. This is despite the fact that Dragon barely played 3 of its 7 openings. When the bots have this many plans available, it is statistically impossible for a bot to discover purely from experience against one opponent how its choices interact with its opponent’s choices. Microwave’s answer to that is the same as Steamhammer’s: Simplify its understanding of the opponent’s opening to a small number of vaguely specified plans like HeavyRush
. I don’t think that answer will scale to a high level of play. I think bots need either prior knowledge of how opening plans interact, or else the ability to reason about how plans interact, perhaps with a search algorithm. One way to produce the prior knowledge would be to run the imaginary search algorithm offline.
dragon as seen by microwave
dragon played | # | microwave recognized |
---|---|---|
1rax fe | 24 | 17 Factory | 6 SafeExpand | 1 Unknown |
2rax bio | 28 | 17 Unknown | 6 SafeExpand | 3 HeavyRush | 2 Factory |
2rax mech | 66 | 19 SafeExpand | 19 Factory | 16 Unknown | 7 HeavyRush | 5 Turtle |
bio | 26 | 10 SafeExpand | 9 Factory | 4 Turtle | 3 Unknown |
dirty worker rush | 2 | 2 WorkerRush |
mass vulture | 5 | 5 Factory |
siege expand | 6 | 5 Factory | 1 SafeExpand |
Microwave sees the enemy builds largely as either factory first or expansion first.
AIIDE 2021 - McRave versus Dragon
McRave recorded all 157 games versus Dragon, but Dragon recorded only 155. I was able to align the files anyway, because Dragon’s missing games were clearly due to Dragon’s 2 crashes. I manually removed the corresponding games from McRave’s records. Then there was one more fix: The game of round 97 that McRave and Dragon both recorded that they had lost. Officially, McRave had timed out and Dragon won, so I manually altered Dragon’s game record to give it the win.
Dragon doesn’t record anything but win/loss and its own strategy, so it has nothing to say about how McRave played.
mcrave strategies versus dragon strategies
overall | 1rax fe | 2rax bio | 2rax mech | bio | dirty worker rush | mass vulture | siege expand | |
---|---|---|---|---|---|---|---|---|
overall | 51/155 33% | 4/20 20% | 14/40 35% | 6/17 35% | 9/24 38% | 2/2 100% | 3/6 50% | 13/46 28% |
HatchPool,12Hatch,2HatchMuta | 21/66 32% | 0/7 0% | 5/14 36% | 3/5 60% | 2/11 18% | - | 2/2 100% | 9/27 33% |
HatchPool,12Hatch,2HatchSpeedling | 0/1 0% | - | - | 0/1 0% | - | - | - | - |
PoolHatch,12Pool,2HatchMuta | 1/9 11% | 0/2 0% | 0/2 0% | 1/2 50% | - | - | - | 0/3 0% |
PoolHatch,12Pool,3HatchMuta | 14/36 39% | 1/3 33% | 6/14 43% | 1/2 50% | 6/11 55% | - | 0/3 0% | 0/3 0% |
PoolHatch,Overpool,2HatchMuta | 9/26 35% | 3/4 75% | 1/7 14% | 0/4 0% | 1/2 50% | - | - | 4/9 44% |
PoolHatch,Overpool,2HatchSpeedling | 2/2 100% | - | - | - | - | 2/2 100% | - | - |
PoolHatch,Overpool,3HatchMuta | 4/15 27% | 0/4 0% | 2/3 67% | 1/3 33% | - | - | 1/1 100% | 0/4 0% |
Another reaction build: PoolHatch,Overpool,2HatchSpeedling
was a reaction to Dragon’s worker rush, and taught Dragon not to do that.
dragon as seen by mcrave
dragon played | # | mcrave recognized |
---|---|---|
1rax fe | 20 | 12 Unknown,Unknown,Unknown | 5 RaxCC,1RaxFE,5FactGoliath | 3 RaxCC,1RaxFE,Unknown |
2rax bio | 40 | 31 Unknown,Unknown,Unknown | 6 2Rax,Main,Unknown | 1 2Rax,Main,1FactTanks | 1 RaxCC,1RaxFE,Unknown | 1 2Rax,Expand,Unknown |
2rax mech | 17 | 14 Unknown,Unknown,Unknown | 2 2Rax,Main,Unknown | 1 2Rax,Proxy,Unknown |
bio | 24 | 11 RaxCC,1RaxFE,5FactGoliath | 7 Unknown,Unknown,Unknown | 3 RaxCC,1RaxFE,1FactTanks | 3 RaxCC,1RaxFE,Unknown |
dirty worker rush | 2 | 2 Unknown,Unknown,WorkerRush |
mass vulture | 6 | 5 Unknown,Unknown,Unknown | 1 RaxFact,Unknown,2PortWraith |
siege expand | 46 | 18 Unknown,Unknown,Unknown | 13 RaxFact,Unknown,5FactGoliath | 9 RaxCC,1RaxFE,5FactGoliath | 4 RaxCC,1RaxFE,Unknown | 2 RaxFact,Unknown,Unknown |
Not much to see here; we already knew that McRave had trouble scouting Dragon. Much of what it did recognize was correct, at least. Though what McRave saw as a proxy, Dragon called “2rax mech”. The game is game 2767 from round 61 (replay file) on Heartbreak Ridge. Nothing in it resembles a proxy; it must have been a McRave bug.
AIIDE 2021 - BananaBrain versus Dragon
BananaBrain and Dragon both recorded their own opening builds for all 157 games played, so I can align their learning files and see how their strategies matched up against each other. BananaBrain also recorded its representation of what the opponent played, so I can compare its idea of Dragon’s build with Dragon’s own idea. I first did this last year. Dragon is carried over from last year unchanged, while BananaBrain is much stronger now.
The win rates and coloring are from the point of view of BananaBrain. Blue is good for BananaBrain and red is good for Dragon.
bananabrain strategies versus dragon strategies
overall | 1rax fe | 2rax bio | 2rax mech | bio | dirty worker rush | mass vulture | siege expand | |
---|---|---|---|---|---|---|---|---|
overall | 117/157 75% | 8/8 100% | 19/30 63% | 8/8 100% | 12/13 92% | 8/8 100% | 27/36 75% | 35/54 65% |
PvT_10/12gate | 34/48 71% | 1/1 100% | 9/17 53% | 1/1 100% | 2/2 100% | 2/2 100% | 3/5 60% | 16/20 80% |
PvT_1gatedtexpo | 0/1 0% | - | 0/1 0% | - | - | - | - | - |
PvT_28nexus | 3/6 50% | - | 1/2 50% | - | - | - | 1/1 100% | 1/3 33% |
PvT_2gaterngexpo | 2/4 50% | - | 0/1 0% | - | - | - | 1/1 100% | 1/2 50% |
PvT_32nexus | 0/1 0% | - | - | - | - | - | - | 0/1 0% |
PvT_9/9gate | 78/96 81% | 7/7 100% | 9/9 100% | 7/7 100% | 10/11 91% | 6/6 100% | 22/29 76% | 17/27 63% |
PvT_9/9proxygate | 0/1 0% | - | - | - | - | - | - | 0/1 0% |
dragon as seen by bananabrain
dragon played | # | bananabrain recognized |
---|---|---|
1rax fe | 8 | 7 T_unknown | 1 T_fastexpand |
2rax bio | 30 | 30 T_unknown |
2rax mech | 8 | 8 T_unknown |
bio | 13 | 13 T_unknown |
dirty worker rush | 8 | 8 T_unknown |
mass vulture | 36 | 21 T_1fac | 14 T_unknown | 1 T_2fac |
siege expand | 54 | 38 T_1fac | 16 T_unknown |
Last year this table showed that BananaBrain was weak at recognizing Dragon’s builds, with a lot of unknowns. There are more recognized builds this year, but BananaBrain plays differently so I’m not sure whether BananaBrain has improved at recognition. What is clear is that everything is blue. Recognizing some builds does not seem to have helped BananaBrain; it did well no matter what.
AIIDE 2021 - what Dragon learned
Dragon records for each game only its own build and win/loss, so the information is sparse. It has a total of 7 builds. Dragon is a carryover bot, and I analyzed its game records from AIIDE 2020 last year. Dragon considers that “the opening” is a very brief phase of the game: It quickly adapts to what it sees of the opponent’s play, and the opening build fades out of view. Last year I found that, against many opponents, the choice of opening build made little difference; the game was decided later.
#1 stardust
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 24 | 0% | 5 | 156 |
2rax bio | 35 | 6% | 1 | 153 |
2rax mech | 18 | 0% | 2 | 146 |
bio | 20 | 5% | 3 | 144 |
dirty worker rush | 19 | 0% | 0 | 133 |
mass vulture | 20 | 0% | 4 | 152 |
siege expand | 21 | 0% | 6 | 150 |
7 openings | 157 | 2% |
It’s interesting that the only openings to make a dent were “2rax bio” and “bio”. Was Stardust surprised by marines? If Stardust made zealots to get units faster, that may have backfired.
#2 bananabrain
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 8 | 0% | 6 | 82 |
2rax bio | 30 | 37% | 1 | 156 |
2rax mech | 8 | 0% | 7 | 109 |
bio | 13 | 8% | 8 | 140 |
dirty worker rush | 8 | 0% | 5 | 148 |
mass vulture | 36 | 25% | 2 | 151 |
siege expand | 54 | 35% | 0 | 145 |
7 openings | 157 | 25% |
Again, the marines were a relatively successful choice against protoss. It’s a surprise. #8 DaQin below is different. Yesterday we saw that BananaBrain liked zealot openings against Dragon, and it’s true that marines with good micro can hold their own against zealots. Maybe BananaBrain liked zealots because they upset Dragon’s tech builds, and Dragon found that marines answered best, so that the two settled into this equilibrium with neither bot able to 100% counter the other. It’s a nice story, at least.
#4 steamhammer
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 53 | 45% | 8 | 124 |
2rax bio | 7 | 14% | 0 | 153 |
2rax mech | 12 | 25% | 4 | 121 |
bio | 17 | 29% | 6 | 135 |
dirty worker rush | 47 | 40% | 2 | 156 |
mass vulture | 15 | 27% | 10 | 117 |
siege expand | 6 | 0% | 5 | 122 |
7 openings | 157 | 36% |
Switching between opposite builds like fast expand (“1rax fe”) and worker rush (“dirty worker rush”) is not a bad plan for defeating Steamhammer. I don’t think Dragon did it on purpose, though. Most openings scored about equal.
#5 mcrave
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 20 | 80% | 34 | 153 |
2rax bio | 40 | 65% | 0 | 109 |
2rax mech | 17 | 65% | 23 | 90 |
bio | 24 | 62% | 64 | 100 |
dirty worker rush | 2 | 0% | 20 | 98 |
mass vulture | 6 | 33% | 63 | 137 |
siege expand | 46 | 72% | 11 | 154 |
7 openings | 155 | 66% |
Again, most were about equal, with only a couple of exceptions. “1rax fe” was also best against last year’s McRave, even though it played rather differently.
#6 willyt
opening | games | wins | first | last |
---|---|---|---|---|
2rax bio | 1 | 0% | 53 | 53 |
mass vulture | 154 | 98% | 0 | 154 |
2 openings | 155 | 97% |
Last year Dragon chose “2rax mech” as its build to trample on WillyT (winning fewer, 94%, even though this year’s WillyT is substantially stronger). I think it found something that worked and felt no need to experiment any further.
#7 microwave
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 24 | 67% | 1 | 120 |
2rax bio | 28 | 61% | 31 | 152 |
2rax mech | 66 | 74% | 0 | 149 |
bio | 26 | 62% | 46 | 147 |
dirty worker rush | 2 | 0% | 8 | 124 |
mass vulture | 5 | 40% | 12 | 156 |
siege expand | 6 | 33% | 43 | 153 |
7 openings | 157 | 65% |
#8 daqin
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 98 | 56% | 8 | 156 |
2rax bio | 6 | 17% | 14 | 104 |
2rax mech | 11 | 36% | 1 | 105 |
bio | 13 | 31% | 7 | 136 |
dirty worker rush | 5 | 0% | 5 | 153 |
mass vulture | 20 | 50% | 9 | 103 |
siege expand | 4 | 0% | 0 | 132 |
7 openings | 157 | 47% |
Best was the fast expansion. (“1rax fe” is faster than “siege expand”.) That makes sense against DaQin’s style of play.
#9 freshmeat
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 12 | 25% | 4 | 128 |
2rax bio | 12 | 33% | 18 | 143 |
2rax mech | 25 | 36% | 0 | 141 |
bio | 10 | 30% | 9 | 139 |
dirty worker rush | 34 | 35% | 7 | 155 |
mass vulture | 49 | 53% | 10 | 156 |
siege expand | 15 | 27% | 15 | 142 |
7 openings | 157 | 39% |
Mostly about equal again. At some point I’ll look at the games and see how FreshMeat upset Dragon.
#10 ualbertabot
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 40 | 92% | 116 | 155 |
2rax bio | 6 | 67% | 54 | 73 |
2rax mech | 2 | 50% | 114 | 115 |
bio | 13 | 77% | 36 | 49 |
dirty worker rush | 17 | 76% | 50 | 74 |
mass vulture | 76 | 84% | 0 | 113 |
siege expand | 2 | 50% | 85 | 110 |
7 openings | 156 | 83% |
AIIDE 2020 - Dragon versus Ecgberht
Two posts today, to cover the newly available Ecgberht pairings. Neither post has much meat to it.
dragon strategies versus ecgberht strategies
overall | 14CC | BioMechGreedyFE | FullMech | ProxyBBS | ProxyEightRax | |
---|---|---|---|---|---|---|
overall | 141/150 94% | 28/28 100% | 27/28 96% | 25/25 100% | 36/44 82% | 25/25 100% |
1rax fe | 5/6 83% | 1/1 100% | 1/1 100% | 1/1 100% | 2/3 67% | - |
bio | 136/144 94% | 27/27 100% | 26/27 96% | 24/24 100% | 34/41 83% | 25/25 100% |
I was curious about Dragon’s pattern of seemingly giving up on “1rax fe” (barracks expand) after a single loss, so I looked at the file. In fact Dragon played “bio” as the regular build the whole time, throwing in “1rax fe” occasionally for spice. The “1rax fe” loss was not the last “1rax fe” game, but the second to last.
For Ecgberht, when one build is producing nearly all the wins, probably you should play it more often than 30% of the time. You may not want to play it every game, because that makes it easy for the opponent to adapt—mixing it up is good. Maybe 50% of the time would be better, given this number of alternatives? To know for sure, I guess we’d have to test against a range of bots to see the overall effectiveness of learning.
dragon as seen by ecgberht
dragon played | # | ecgberht recognized |
---|---|---|
1rax fe | 6 | 6 Unknown |
bio | 144 | 144 Unknown |
Nothing to see here. Move along.
ecgberht as seen by dragon
Dragon does not record its idea of the opponent’s build. If it has one.
AIIDE 2020 - BananaBrain versus Dragon
Of the 4 bots I’m prepared to run this analysis on, this is the only pairing involving Dragon. Dragon did not record all 150 games against either McRave or Microwave. Like yesterday, all win rates and coloring are from the point of view of BananaBrain: Blue is good for BananaBrain, red is good for Dragon.
bananabrain strategies versus dragon strategies
overall | 1rax fe | 2rax bio | 2rax mech | bio | dirty worker rush | mass vulture | siege expand | |
---|---|---|---|---|---|---|---|---|
overall | 67/150 45% | 6/14 43% | 6/11 55% | 8/15 53% | 15/37 41% | 3/3 100% | 22/56 39% | 7/14 50% |
PvT_10/12gate | 12/17 71% | 2/3 67% | - | 2/3 67% | 4/4 100% | - | 3/6 50% | 1/1 100% |
PvT_10/15gate | 5/12 42% | - | 2/2 100% | 1/5 20% | 1/3 33% | - | 1/2 50% | - |
PvT_12nexus | 1/8 12% | 1/2 50% | - | - | 0/1 0% | - | 0/3 0% | 0/2 0% |
PvT_1gatedtexpo | 3/7 43% | 1/2 50% | - | - | 0/1 0% | - | 2/4 50% | - |
PvT_1gatereaver | 0/5 0% | - | 0/1 0% | - | 0/2 0% | - | 0/2 0% | - |
PvT_28nexus | 5/11 45% | 0/2 0% | 0/1 0% | 0/2 0% | 1/1 100% | - | 4/5 80% | - |
PvT_2gatedt | 3/9 33% | 0/1 0% | - | 1/1 100% | 0/2 0% | - | 0/3 0% | 2/2 100% |
PvT_2gaterngexpo | 2/7 29% | - | 0/1 0% | - | 1/1 100% | 1/1 100% | 0/4 0% | - |
PvT_32nexus | 2/8 25% | - | - | - | 1/4 25% | 1/1 100% | 0/2 0% | 0/1 0% |
PvT_9/9gate | 14/18 78% | - | 2/3 67% | - | 4/4 100% | 1/1 100% | 7/9 78% | 0/1 0% |
PvT_9/9proxygate | 8/14 57% | 1/1 100% | 1/1 100% | 3/3 100% | 0/2 0% | - | 2/6 33% | 1/1 100% |
PvT_bulldog | 0/6 0% | 0/1 0% | - | - | 0/3 0% | - | 0/1 0% | 0/1 0% |
PvT_dtdrop | 2/8 25% | - | 1/1 100% | - | 0/4 0% | - | 1/2 50% | 0/1 0% |
PvT_proxydt | 10/14 71% | 1/1 100% | - | 1/1 100% | 3/3 100% | - | 2/5 40% | 3/4 75% |
PvT_stove | 0/6 0% | 0/1 0% | 0/1 0% | - | 0/2 0% | - | 0/2 0% | - |
Not one table cell has more than 9 games in it. Neither bot successfully predicted what the other would play, if it even tried: BananaBrain is unpredictable and Dragon changes its choice frequently when losing, and besides BananaBrain is poor at recognizing terran plans. So the strategy x strategy cross is a hash. To me the table means that, at least for this pairing, reactions during the game were more important than the initial choice of strategy. Neither side had a way to choose a counter beforehand.
bananabrain as seen by dragon
Dragon does not record a recognized opponent strategy. Its history files have only its own strategy and whether it won.
dragon as seen by bananabrain
dragon played | # | bananabrain recognized |
---|---|---|
1rax fe | 14 | 13 T_unknown | 1 T_fastexpand |
2rax bio | 11 | 8 T_unknown | 2 T_fastexpand | 1 T_1fac |
2rax mech | 15 | 14 T_unknown | 1 T_1fac |
bio | 37 | 35 T_unknown | 1 T_1fac | 1 T_fastexpand |
dirty worker rush | 3 | 3 T_unknown |
mass vulture | 56 | 30 T_1fac | 26 T_unknown |
siege expand | 14 | 9 T_unknown | 5 T_1fac |
We knew that BananaBrain struggles to recognize terran strategies. Maybe the author has not spent effort on it because it doesn’t affect results much? In any case, given how Dragon plays, with its love of fast expansions and mixed tech, the terran builds that are recognized probably represent truths about the games. It’s not clear that they are helpful truths, though, because they say so little about what happened.
From the coloring, it looks as though there was little relationship between whether BananaBrain recognized Dragon’s build and whether BananaBrain won. That is consistent with the theory that the author decided it didn’t matter.
AIIDE 2020 - what Dragon learned
Dragon’s learning file format is spare, one line for each game giving strategy name and win or loss, nothing more. Dragon has 7 strategies, and against most opponents tried all of them. Its habit is to keep with a winning strategy, trying others sporadically but generally switching when the current plan starts to fail.
Dragon calls its worker rush “dirty worker rush”. Perhaps we should get it together with Stone so it can learn a nice clean worker rush.
#1 stardust
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 16 | 6% | 6 | 147 |
2rax bio | 18 | 6% | 2 | 143 |
2rax mech | 14 | 0% | 0 | 148 |
bio | 26 | 8% | 4 | 149 |
dirty worker rush | 23 | 13% | 1 | 114 |
mass vulture | 40 | 10% | 3 | 144 |
siege expand | 13 | 0% | 5 | 145 |
7 openings | 150 | 7% |
As you can see in the “first” column (the first game each strategy was played), Dragon tried all 7 strategies in the first 7 games because they all lost on their first tries. Worker rush turned out to be the most successful plan, as far as that goes, which is very interesting. Mass vultures were the most-played plan despite not having the highest win rate, apparently because the worker rush had a string of losses so that vultures looked better in recent games. (Maybe Dragon figured that Stardust had learned how to deal with the worker rush.)
How did mass vultures have any chance against Stardust’s dragoons? I located a couple of the “mass vulture” wins and watched them. In fact, tanks were the core of Dragon’s army and the vultures acted as buffer. It looked like regular tank-vulture unit mix with regular tank pushes.
#2 purplewave
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 36 | 64% | 9 | 83 |
2rax bio | 7 | 43% | 4 | 101 |
2rax mech | 3 | 0% | 19 | 129 |
bio | 16 | 50% | 3 | 100 |
dirty worker rush | 3 | 0% | 0 | 102 |
mass vulture | 32 | 62% | 20 | 146 |
siege expand | 50 | 58% | 1 | 128 |
7 openings | 147 | 56% |
Against PurpleWave, and BananaBrain below, most Dragon strategies worked about equally well. Apparently it has well-balanced play against protoss. Actually I think the explanation may be different: Once the opening is over, Dragon quickly adapts to the enemy, playing against the units it sees. If I guess right, then its goal in the opening is to survive in a good position, and after that Dragon will produce whatever units it needs, so the opening doesn’t much affect the outcome. Obviously the worker rush doesn’t leave much room for adaptation, so it is an exception.
This hypothesis explains why Dragon can do well though it records so little data about each game: The openings often don’t much matter.
#3 bananabrain
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 14 | 57% | 35 | 143 |
2rax bio | 11 | 45% | 22 | 139 |
2rax mech | 15 | 47% | 20 | 149 |
bio | 37 | 59% | 0 | 137 |
dirty worker rush | 3 | 0% | 23 | 146 |
mass vulture | 56 | 61% | 15 | 144 |
siege expand | 14 | 50% | 1 | 140 |
7 openings | 150 | 55% |
#5 mcrave
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 90 | 87% | 11 | 146 |
2rax bio | 14 | 64% | 48 | 93 |
2rax mech | 15 | 67% | 51 | 82 |
bio | 22 | 68% | 0 | 66 |
dirty worker rush | 1 | 0% | 47 | 47 |
mass vulture | 1 | 0% | 7 | 7 |
siege expand | 4 | 50% | 8 | 12 |
7 openings | 147 | 78% |
Fast expand works versus McRave...
#6 microwave
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 3 | 0% | 4 | 144 |
2rax bio | 98 | 66% | 0 | 148 |
2rax mech | 5 | 20% | 7 | 50 |
bio | 13 | 46% | 2 | 143 |
dirty worker rush | 11 | 55% | 8 | 31 |
mass vulture | 3 | 0% | 1 | 68 |
siege expand | 16 | 44% | 5 | 47 |
7 openings | 149 | 57% |
2 barracks is good against Microwave...
#7 steamhammer
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 37 | 32% | 12 | 149 |
2rax bio | 6 | 0% | 11 | 108 |
2rax mech | 12 | 33% | 1 | 141 |
bio | 9 | 11% | 6 | 106 |
dirty worker rush | 39 | 33% | 10 | 140 |
mass vulture | 30 | 37% | 7 | 104 |
siege expand | 17 | 24% | 0 | 116 |
7 openings | 150 | 30% |
... but against Steamhammer, again, most strategies look about the same. Watching games, I think Dragon converges on a diverse unit mix fairly quickly after the opening.
I checked out a “mass vulture” game against Steamhammer, and it looked different from the same strategy against Stardust. Dragon made a modest number of vultures and researched spider mines, but added tanks and wraiths and soon the unit mix looked like most Dragon-Steamhammer games.
#8 daqin
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 49 | 67% | 14 | 133 |
2rax bio | 10 | 30% | 6 | 132 |
2rax mech | 23 | 57% | 1 | 148 |
bio | 5 | 20% | 2 | 77 |
dirty worker rush | 3 | 0% | 0 | 78 |
mass vulture | 45 | 53% | 3 | 137 |
siege expand | 14 | 43% | 7 | 76 |
7 openings | 149 | 54% |
#9 zzzkbot
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 5 | 20% | 0 | 71 |
2rax bio | 10 | 40% | 2 | 83 |
2rax mech | 35 | 49% | 24 | 99 |
bio | 13 | 38% | 25 | 113 |
dirty worker rush | 4 | 0% | 6 | 102 |
mass vulture | 26 | 54% | 4 | 149 |
siege expand | 57 | 53% | 27 | 148 |
7 openings | 150 | 47% |
Most curious: Against ZZZKBot, factory openings predominate. Checking the game durations, most games that ZZZKBot won were short, meaning that it played its 4 pool with success. Most games that Dragon won were longer, so either ZZZKBot did not 4 pool or else Dragon was slow to counterattack after surviving.
#10 ualbertabot
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 32 | 81% | 94 | 147 |
2rax bio | 5 | 60% | 4 | 8 |
2rax mech | 13 | 69% | 9 | 105 |
bio | 29 | 83% | 66 | 137 |
dirty worker rush | 2 | 50% | 10 | 11 |
mass vulture | 63 | 86% | 13 | 125 |
siege expand | 4 | 50% | 0 | 3 |
7 openings | 148 | 80% |
#11 willyt
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 5 | 100% | 56 | 148 |
2rax mech | 143 | 94% | 0 | 145 |
mass vulture | 1 | 100% | 59 | 59 |
3 openings | 149 | 94% |
#12 ecgberht
opening | games | wins | first | last |
---|---|---|---|---|
1rax fe | 6 | 83% | 49 | 140 |
bio | 144 | 94% | 0 | 149 |
2 openings | 150 | 94% |
#13 eggbot
opening | games | wins | first | last |
---|---|---|---|---|
2rax mech | 146 | 99% | 0 | 148 |
siege expand | 3 | 67% | 5 | 50 |
2 openings | 149 | 98% |
Steamhammer-Dragon games
The latest SSCAIT weekly broadcast included a Steamhammer-Dragon game where Steamhammer went up to five hatcheries before it started its spawning pool, a crazy risky build that loses to any early attack. Dragon did not attack early and was hammered into the ground by huge macro. Sonko, narrating the game, rightly concluded that Steamhammer’s opening was the result of learning, though the opening timing idea he mentioned is still on my to-do list. Anyway, five hatches before pool is one of Steamhammer’s favorite builds versus Dragon, but it also plays others, and not always successfully. I thought I’d briefly list a few recent games to show how tricky it can be to choose openings. Even if you know the enemy’s timings, it is still tricky.
7 hatch 6 pool speed, a zergling rush that starts slower than the pool-first rushes but hits harder because of the two hatcheries and the zergling speed research. The opening leaves only 7 drones to power the two hatchery production, so it’s very much all-in. Dragon saw it coming and reacted with a bunker in its main, though for some reason it followed with an expansion CC which it lost without canceling. Even so, Dragon’s defense was better than Steamhammer’s attack, the all-in failed after vultures arrived, and Dragon was in a winning position. But (no doubt due to some bug) terran left only 1 SCV on gas and suffered a severe vespene shortage, and compensated by going mass vultures, not a strong backbone unit for a terran army. The game turned much more exciting than it should have been.
9 pool into 2 hatcheries, with early but not heavy pressure. Again Dragon made a bunker in main and defended easily. Steamhammer droned up well, keeping pace with the terran economy, but could not also make a strong army. Zerg ran into trouble.
5 hatch before pool, like the broadcast game, except this time Dragon got a vulture into the zerg base before defense was quite ready, then followed up with wraiths when defense was not even close to ready. Zerg struggled but finally stabilized, and the game was on. This is the most interesting of the games.
The first two games are fast rushes. One was all-in and the rush failed, but the opponent’s game plan was discomposed by an unforeseeable factor. The other was not all-in and looked successful at first, but did not actually keep up. Even if you recognize the enemy’s tech and attack timings, it’s tricky to choose an opening that exploits them successfully. Starcraft is complicated! The third game is a reminder that the enemy gets a vote, and can change up its timings, or can play its builds sloppily so that the timings vary. At a minimum, you have to take into account the range of timings.