archive by month
Skip to content

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

openinggameswinsfirstlast
1rax fe415%2271
2rax bio270%5260
2rax mech464%0279
bio454%1282
dirty worker rush260%3203
mass vulture547%6281
siege expand4812%4286
7 openings2876%

#2 stardust

openinggameswinsfirstlast
1rax fe6010%6271
2rax bio287%3272
2rax mech7813%0288
bio457%2266
dirty worker rush250%5268
mass vulture274%4253
siege expand260%1276
7 openings2898%

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

openinggameswinsfirstlast
1rax fe825%5268
2rax bio50%1201
2rax mech50%0136
bio20256%9287
dirty worker rush50%8263
mass vulture5853%2205
siege expand50%3204
7 openings28851%

#4 steamhammer

openinggameswinsfirstlast
1rax fe80%1282
2rax bio1010%0149
2rax mech2516%2227
bio4025%5278
dirty worker rush17144%4287
mass vulture2421%6209
siege expand1010%3132
7 openings28834%

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

openinggameswinsfirstlast
1rax fe90%7279
2rax bio6954%5262
2rax mech11840%10288
bio2326%6178
dirty worker rush2114%2265
mass vulture2421%1169
siege expand2516%0276
7 openings28935%

McRave copes with the SCV rush, so Dragon settles on mainstream builds.


#6 microwave

openinggameswinsfirstlast
1rax fe1030%1280
2rax bio1828%10161
2rax mech812%15249
bio60%0272
dirty worker rush1547%8285
mass vulture22450%6281
siege expand50%7106
7 openings28644%

Microwave would likely have done much better if it coped with the vultures better.


#8 ualbertabot

openinggameswinsfirstlast
1rax fe4386%85289
2rax bio10%00
2rax mech650%71137
bio7684%386
dirty worker rush6988%58286
mass vulture6986%88287
siege expand2665%1219
7 openings29083%

#9 infestedartosis

openinggameswinsfirstlast
1rax fe20%109225
2rax bio1250%2228
2rax mech540%80223
bio650%108288
dirty worker rush2568%0224
mass vulture22685%6289
siege expand1457%112209
7 openings29078%

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

openinggameswinsfirstlast
1rax fe120%0220
2rax bio4518%5217
2rax mech120%7219
bio120%4215
dirty worker rush110%1214
mass vulture8234%2218
siege expand4728%14216
7 openings22122%


BananaBrain liked to open with two gates versus Dragon. The vultures are presumably to counter zealots.


#2 stardust

openinggameswinsfirstlast
1rax fe244%3202
2rax bio186%1143
2rax mech244%4184
bio234%5203
dirty worker rush4010%0219
mass vulture7513%6218
siege expand160%2180
7 openings2208%


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

openinggameswinsfirstlast
1rax fe6126%3219
2rax bio157%7199
2rax mech2020%4187
bio4827%17220
dirty worker rush4418%10186
mass vulture1520%0209
siege expand1811%12204
7 openings22121%


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

openinggameswinsfirstlast
2rax mech11396%2200
bio10%00
siege expand106100%1219
3 openings22098%


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

openinggameswinsfirstlast
2rax mech20597%2219
dirty worker rush250%01
mass vulture1377%2593
3 openings22095%


McRave’s mutalisks may be less skilled against goliaths.


#7 microwave

openinggameswinsfirstlast
1rax fe1644%2885
2rax bio2143%0140
2rax mech5052%4173
bio1145%5142
dirty worker rush729%20138
mass vulture10167%11220
siege expand1540%3986
7 openings22156%



#8 ualbertabot

openinggameswinsfirstlast
1rax fe10%110110
2rax bio4274%52106
2rax mech2065%70212
bio10%7171
dirty worker rush10%6969
mass vulture9582%65216
siege expand5779%0109
7 openings21777%



#9 pylonpuller

openinggameswinsfirstlast
1rax fe22098%0220
siege expand1100%133133
2 openings22198%



#10 styx

openinggameswinsfirstlast
2rax bio7392%173
dirty worker rush10%00
mass vulture14697%74219
3 openings22095%



#11 cunybot

openinggameswinsfirstlast
2rax mech21996%0219
dirty worker rush10%103103
2 openings22096%


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

overall12NexusCarriers3GateDT4GateGoonDTDrop
overall74/157 47%52/127 41%5/9 56%16/20 80%1/1 100%
1rax fe55/98 56%42/81 52%-13/17 76%-
2rax bio1/6 17%1/6 17%---
2rax mech4/11 36%2/9 22%1/1 100%-1/1 100%
bio4/13 31%1/10 10%3/3 100%--
dirty worker rush0/5 0%0/5 0%---
mass vulture10/20 50%6/12 50%1/5 20%3/3 100%-
siege expand0/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 fe9832 Safe expand | 27 Unknown | 17 Proxy | 13 Naked expand | 9 Not fast rush
2rax bio63 Unknown | 2 Safe expand | 1 Naked expand
2rax mech117 Safe expand | 2 Not fast rush | 1 Proxy | 1 Naked expand
bio136 Safe expand | 3 Naked expand | 2 Unknown | 2 Proxy
dirty worker rush55 Worker rush
mass vulture2017 Factory | 2 Proxy | 1 Not fast rush
siege expand43 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

overall1rax fe2rax bio2rax mechbiodirty worker rushmass vulturesiege expand
overall55/157 35%8/24 33%11/28 39%17/66 26%10/26 38%2/2 100%3/5 60%4/6 67%
10Hatch9Pool9gas0/1 0%-0/1 0%-----
11Gas10PoolMuta6/10 60%-1/1 100%0/1 0%4/6 67%-1/2 50%-
11HatchTurtleHydra0/1 0%--0/1 0%----
12HatchTurtle1/2 50%-0/1 0%----1/1 100%
12PoolMuta0/1 0%---0/1 0%---
1HatchMuta_Sparkle1/3 33%0/1 0%0/1 0%1/1 100%----
2HatchLurker0/1 0%0/1 0%------
2HatchMuta2/6 33%0/1 0%-2/5 40%----
3HatchHydra0/2 0%--0/2 0%----
3HatchLingBust0/1 0%--0/1 0%----
3HatchLurker8/17 47%1/6 17%2/4 50%3/4 75%2/2 100%--0/1 0%
3HatchMuta0/2 0%---0/2 0%---
3HatchMutaExpo0/1 0%-0/1 0%-----
4PoolHard0/4 0%-0/1 0%0/3 0%----
4PoolSoft3/25 12%0/3 0%1/3 33%1/12 8%0/5 0%1/1 100%-0/1 0%
5HatchPool6/10 60%2/2 100%2/3 67%-0/3 0%1/1 100%-1/1 100%
5HatchPoolHydra15/22 68%5/5 100%3/7 43%2/4 50%3/3 100%-1/2 50%1/1 100%
7Pool0/1 0%-0/1 0%-----
7PoolHydraRush7D0/1 0%--0/1 0%----
9Pool0/3 0%--0/3 0%----
9PoolHatch0/1 0%0/1 0%------
9PoolHatchGasSpeed8D0/1 0%-0/1 0%-----
9PoolLurker0/2 0%0/1 0%-0/1 0%----
9PoolSpeed11/26 42%0/1 0%1/1 100%8/21 38%1/2 50%--1/1 100%
9PoolSpeedLing1/8 12%0/2 0%1/2 50%0/3 0%0/1 0%---
ZvZ_Overgas11Pool0/1 0%--0/1 0%----
ZvZ_Overgas9Pool0/1 0%--0/1 0%----
ZvZ_Overpool9Gas1/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 fe2417 Factory | 6 SafeExpand | 1 Unknown
2rax bio2817 Unknown | 6 SafeExpand | 3 HeavyRush | 2 Factory
2rax mech6619 SafeExpand | 19 Factory | 16 Unknown | 7 HeavyRush | 5 Turtle
bio2610 SafeExpand | 9 Factory | 4 Turtle | 3 Unknown
dirty worker rush22 WorkerRush
mass vulture55 Factory
siege expand65 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

overall1rax fe2rax bio2rax mechbiodirty worker rushmass vulturesiege expand
overall51/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,2HatchMuta21/66 32%0/7 0%5/14 36%3/5 60%2/11 18%-2/2 100%9/27 33%
HatchPool,12Hatch,2HatchSpeedling0/1 0%--0/1 0%----
PoolHatch,12Pool,2HatchMuta1/9 11%0/2 0%0/2 0%1/2 50%---0/3 0%
PoolHatch,12Pool,3HatchMuta14/36 39%1/3 33%6/14 43%1/2 50%6/11 55%-0/3 0%0/3 0%
PoolHatch,Overpool,2HatchMuta9/26 35%3/4 75%1/7 14%0/4 0%1/2 50%--4/9 44%
PoolHatch,Overpool,2HatchSpeedling2/2 100%----2/2 100%--
PoolHatch,Overpool,3HatchMuta4/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 fe2012 Unknown,Unknown,Unknown | 5 RaxCC,1RaxFE,5FactGoliath | 3 RaxCC,1RaxFE,Unknown
2rax bio4031 Unknown,Unknown,Unknown | 6 2Rax,Main,Unknown | 1 2Rax,Main,1FactTanks | 1 RaxCC,1RaxFE,Unknown | 1 2Rax,Expand,Unknown
2rax mech1714 Unknown,Unknown,Unknown | 2 2Rax,Main,Unknown | 1 2Rax,Proxy,Unknown
bio2411 RaxCC,1RaxFE,5FactGoliath | 7 Unknown,Unknown,Unknown | 3 RaxCC,1RaxFE,1FactTanks | 3 RaxCC,1RaxFE,Unknown
dirty worker rush22 Unknown,Unknown,WorkerRush
mass vulture65 Unknown,Unknown,Unknown | 1 RaxFact,Unknown,2PortWraith
siege expand4618 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

overall1rax fe2rax bio2rax mechbiodirty worker rushmass vulturesiege expand
overall117/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/12gate34/48 71%1/1 100%9/17 53%1/1 100%2/2 100%2/2 100%3/5 60%16/20 80%
PvT_1gatedtexpo0/1 0%-0/1 0%-----
PvT_28nexus3/6 50%-1/2 50%---1/1 100%1/3 33%
PvT_2gaterngexpo2/4 50%-0/1 0%---1/1 100%1/2 50%
PvT_32nexus0/1 0%------0/1 0%
PvT_9/9gate78/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/9proxygate0/1 0%------0/1 0%

dragon as seen by bananabrain

dragon played#bananabrain recognized
1rax fe87 T_unknown | 1 T_fastexpand
2rax bio3030 T_unknown
2rax mech88 T_unknown
bio1313 T_unknown
dirty worker rush88 T_unknown
mass vulture3621 T_1fac | 14 T_unknown | 1 T_2fac
siege expand5438 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

openinggameswinsfirstlast
1rax fe240%5156
2rax bio356%1153
2rax mech180%2146
bio205%3144
dirty worker rush190%0133
mass vulture200%4152
siege expand210%6150
7 openings1572%


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

openinggameswinsfirstlast
1rax fe80%682
2rax bio3037%1156
2rax mech80%7109
bio138%8140
dirty worker rush80%5148
mass vulture3625%2151
siege expand5435%0145
7 openings15725%


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

openinggameswinsfirstlast
1rax fe5345%8124
2rax bio714%0153
2rax mech1225%4121
bio1729%6135
dirty worker rush4740%2156
mass vulture1527%10117
siege expand60%5122
7 openings15736%


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

openinggameswinsfirstlast
1rax fe2080%34153
2rax bio4065%0109
2rax mech1765%2390
bio2462%64100
dirty worker rush20%2098
mass vulture633%63137
siege expand4672%11154
7 openings15566%


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

openinggameswinsfirstlast
2rax bio10%5353
mass vulture15498%0154
2 openings15597%


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

openinggameswinsfirstlast
1rax fe2467%1120
2rax bio2861%31152
2rax mech6674%0149
bio2662%46147
dirty worker rush20%8124
mass vulture540%12156
siege expand633%43153
7 openings15765%



#8 daqin

openinggameswinsfirstlast
1rax fe9856%8156
2rax bio617%14104
2rax mech1136%1105
bio1331%7136
dirty worker rush50%5153
mass vulture2050%9103
siege expand40%0132
7 openings15747%


Best was the fast expansion. (“1rax fe” is faster than “siege expand”.) That makes sense against DaQin’s style of play.


#9 freshmeat

openinggameswinsfirstlast
1rax fe1225%4128
2rax bio1233%18143
2rax mech2536%0141
bio1030%9139
dirty worker rush3435%7155
mass vulture4953%10156
siege expand1527%15142
7 openings15739%


Mostly about equal again. At some point I’ll look at the games and see how FreshMeat upset Dragon.


#10 ualbertabot

openinggameswinsfirstlast
1rax fe4092%116155
2rax bio667%5473
2rax mech250%114115
bio1377%3649
dirty worker rush1776%5074
mass vulture7684%0113
siege expand250%85110
7 openings15683%

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

overall14CCBioMechGreedyFEFullMechProxyBBSProxyEightRax
overall141/150 94%28/28 100%27/28 96%25/25 100%36/44 82%25/25 100%
1rax fe5/6 83%1/1 100%1/1 100%1/1 100%2/3 67%-
bio136/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 fe66 Unknown
bio144144 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

overall1rax fe2rax bio2rax mechbiodirty worker rushmass vulturesiege expand
overall67/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/12gate12/17 71%2/3 67%-2/3 67%4/4 100%-3/6 50%1/1 100%
PvT_10/15gate5/12 42%-2/2 100%1/5 20%1/3 33%-1/2 50%-
PvT_12nexus1/8 12%1/2 50%--0/1 0%-0/3 0%0/2 0%
PvT_1gatedtexpo3/7 43%1/2 50%--0/1 0%-2/4 50%-
PvT_1gatereaver0/5 0%-0/1 0%-0/2 0%-0/2 0%-
PvT_28nexus5/11 45%0/2 0%0/1 0%0/2 0%1/1 100%-4/5 80%-
PvT_2gatedt3/9 33%0/1 0%-1/1 100%0/2 0%-0/3 0%2/2 100%
PvT_2gaterngexpo2/7 29%-0/1 0%-1/1 100%1/1 100%0/4 0%-
PvT_32nexus2/8 25%---1/4 25%1/1 100%0/2 0%0/1 0%
PvT_9/9gate14/18 78%-2/3 67%-4/4 100%1/1 100%7/9 78%0/1 0%
PvT_9/9proxygate8/14 57%1/1 100%1/1 100%3/3 100%0/2 0%-2/6 33%1/1 100%
PvT_bulldog0/6 0%0/1 0%--0/3 0%-0/1 0%0/1 0%
PvT_dtdrop2/8 25%-1/1 100%-0/4 0%-1/2 50%0/1 0%
PvT_proxydt10/14 71%1/1 100%-1/1 100%3/3 100%-2/5 40%3/4 75%
PvT_stove0/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 fe1413 T_unknown | 1 T_fastexpand
2rax bio118 T_unknown | 2 T_fastexpand | 1 T_1fac
2rax mech1514 T_unknown | 1 T_1fac
bio3735 T_unknown | 1 T_1fac | 1 T_fastexpand
dirty worker rush33 T_unknown
mass vulture5630 T_1fac | 26 T_unknown
siege expand149 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

openinggameswinsfirstlast
1rax fe166%6147
2rax bio186%2143
2rax mech140%0148
bio268%4149
dirty worker rush2313%1114
mass vulture4010%3144
siege expand130%5145
7 openings1507%


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

openinggameswinsfirstlast
1rax fe3664%983
2rax bio743%4101
2rax mech30%19129
bio1650%3100
dirty worker rush30%0102
mass vulture3262%20146
siege expand5058%1128
7 openings14756%


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

openinggameswinsfirstlast
1rax fe1457%35143
2rax bio1145%22139
2rax mech1547%20149
bio3759%0137
dirty worker rush30%23146
mass vulture5661%15144
siege expand1450%1140
7 openings15055%

#5 mcrave

openinggameswinsfirstlast
1rax fe9087%11146
2rax bio1464%4893
2rax mech1567%5182
bio2268%066
dirty worker rush10%4747
mass vulture10%77
siege expand450%812
7 openings14778%


Fast expand works versus McRave...


#6 microwave

openinggameswinsfirstlast
1rax fe30%4144
2rax bio9866%0148
2rax mech520%750
bio1346%2143
dirty worker rush1155%831
mass vulture30%168
siege expand1644%547
7 openings14957%


2 barracks is good against Microwave...


#7 steamhammer

openinggameswinsfirstlast
1rax fe3732%12149
2rax bio60%11108
2rax mech1233%1141
bio911%6106
dirty worker rush3933%10140
mass vulture3037%7104
siege expand1724%0116
7 openings15030%


... 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

openinggameswinsfirstlast
1rax fe4967%14133
2rax bio1030%6132
2rax mech2357%1148
bio520%277
dirty worker rush30%078
mass vulture4553%3137
siege expand1443%776
7 openings14954%

#9 zzzkbot

openinggameswinsfirstlast
1rax fe520%071
2rax bio1040%283
2rax mech3549%2499
bio1338%25113
dirty worker rush40%6102
mass vulture2654%4149
siege expand5753%27148
7 openings15047%


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

openinggameswinsfirstlast
1rax fe3281%94147
2rax bio560%48
2rax mech1369%9105
bio2983%66137
dirty worker rush250%1011
mass vulture6386%13125
siege expand450%03
7 openings14880%

#11 willyt

openinggameswinsfirstlast
1rax fe5100%56148
2rax mech14394%0145
mass vulture1100%5959
3 openings14994%

#12 ecgberht

openinggameswinsfirstlast
1rax fe683%49140
bio14494%0149
2 openings15094%

#13 eggbot

openinggameswinsfirstlast
2rax mech14699%0148
siege expand367%550
2 openings14998%

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.