archive by month
Skip to content

AIIDE 2019 - what UAlbertaBot learned

#11 UAlbertaBot was one of the weaker participants, but no player shut it out. Even against #1 Locutus, UAlbertaBot scored 1 win and learned a little bit about its opponent. That also tells us something about each opponent.

The “total” column gives UAlbertaBot’s view of how many games it won and lost, which does not always line up with the tournament results. The results give UAlbertaBot 6 crashes, when it presumably could not record any information. Also if one side overstepped the frame time limit (UAlbertaBot never did), or if the game timed out and was decided on points (12 instances for UAlbertaBot), the player has no way to know what the tournament manager decided, and the two may disagree about who won. Something like that must explain why UAlbertaBot recorded 3 wins for itself against #2 PurpleWave when officially it won only 2 games. These issues cause difficulties for learning, but as long as most games finish normally it shouldn’t be serious.

1locutus1-99  1%0-9 0%0-8 0%0-8 0%0-8 0%0-11 0%1-15 6%0-10 0%0-8 0%0-8 0%0-7 0%0-7 0%
2purplewave3-93  3%0-8 0%0-8 0%0-8 0%0-8 0%3-18 14%0-8 0%0-7 0%0-7 0%0-7 0%0-7 0%0-7 0%
3bananabrain16-82  16%0-7 0%1-10 9%0-6 0%0-6 0%0-4 0%0-4 0%9-20 31%0-4 0%0-4 0%0-4 0%6-13 32%
4daqin21-77  21%0-10 0%0-9 0%0-9 0%0-9 0%0-3 0%3-8 27%5-8 38%0-2 0%0-2 0%0-2 0%13-15 46%
5steamhammer9-89  9%0-4 0%8-9 47%0-4 0%0-4 0%0-6 0%1-9 10%0-5 0%0-12 0%0-12 0%0-12 0%0-12 0%
6zzzkbot10-89  10%0-8 0%0-8 0%0-8 0%0-7 0%0-4 0%0-4 0%8-16 33%0-7 0%0-7 0%0-7 0%2-13 13%
7microwave18-81  18%0-7 0%2-12 14%0-7 0%0-7 0%0-3 0%0-3 0%13-11 54%1-9 10%0-5 0%1-9 10%1-8 11%
8iron9-90  9%1-9 10%1-8 11%0-5 0%0-5 0%0-8 0%0-8 0%3-18 14%0-6 0%0-6 0%0-6 0%4-11 27%
9xiaoyi26-68  28%0-4 0%0-5 0%4-13 24%0-4 0%21-5 81%0-2 0%0-5 0%0-7 0%0-7 0%0-6 0%1-10 9%
10mcrave56-44  56%-22-9 71%--0-4 0%10-19 34%0-5 0%---24-7 77%
12aitp71-23  76%-19-8 70%----24-5 83%19-2 90%7-2 78%1-2 33%1-4 20%
13bunkerboxer88-12  88%-34-4 89%----30-0 100%---24-8 75%
overall-  28%1-66 1%87-98 47%4-68 6%0-58 0%24-66 27%15-80 16%92-110 46%20-64 24%7-60 10%2-62 3%76-115 40%

UAlbertaBot was random. Its learning plan is to first play its best opening for each race (terran marine rush, protoss zealot rush, zerg zergling rush), and switch away only if it lost too often. If you are always losing, there is no harm in experimentation. Against strong opponents it tried everything, to little avail. Against weak opponents, the best opening might be reliable, so it did not try others.

UAlbertaBot’s configuration file has enemy-specific strategies defined for many historical opponents. In this tournament, 2 of them reappeared: Iron and ZZZKBot, and the declaration for ZZZKBot says “make the default choices.” I don’t see evidence in the table that UAlbertaBot paid attention to its Iron-specific strategies, so I watched replays to find out. It turned out as I expected, an enemy-specific strategy became the default strategy, the expected best opening, and if it failed severely enough (as it always did against Iron) then UAlbertaBot would try its other strategies.

The “overall” row across the bottom tells us that its best openings truly were the best. In most cases, it did no good to try alternatives. The notable exceptions are that the dark templar rush won against XiaoYi, while the 2 hatch hydra rush won against AITP (this suggests that AITP consistently followed a mech strategy). Of course, UAlbertaBot played random, which can confuse opponents that learn. It’s possible that a protoss bot that always rushed dark templar might do less well against XiaoYi, and so on.

Some openings were useless in the tournament, and UAlbertaBot would have done better without them. For example, the 3 hatchery scourge opening is designed to combat XIMP by Tomas Vajda, and scored miserably. The terran vulture rush made 58 losses and no wins at all, a weight pulling down the ranking.

There is more to learn from the table. Steamhammer had some trouble against the terran marine rush, but shut out the zealots and the zerglings. The other 2 zergs had more trouble against the hard zealot rush (which was historically difficult for zerg bots to cope with, at least zerg bots other than KillerBot by Marian Devecka). I think the difference ultimately reflects the skills of the different bots. Steamhammer has micro and defensive weaknesses against ranged units in general (the one loss against protoss was to the dragoon rush). Its opening learning is ingenious enough to cover the weakness, but only at the expense of losses against protoss and zerg. So instead Steamhammer’s learning converged on the idea of allowing the marines to win sometimes, and strictly controlling the other races. It’s counterintuitive but effective.


No Trackbacks


No comments

Add Comment

E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.

Form options

Submitted comments will be subject to moderation before being displayed.