archive by month
Skip to content

island map Sparkle to be used

It has been announced that the island map Sparkle will be used in the ASL5 round of 24, to be played starting on 11 March. I first mentioned the map on 13 February. The original announcement by Afreeca (Google translate) goes into some detail on the map and the changes to it (also for the other new map Transistor).

The updates to Sparkle since it was first proposed are substantial, which gives me the idea that the map author is still struggling with the balance. It seems difficult to balance an island map. Also there isn’t much time before the tournament starts, and players need time to work out the best strategies—and sometimes surprising ideas eventually come up on nonstandard maps, like the guardian build on Monty Hall. Still, I hope we get at least a glimmering that play can be made fair for all matchups. I’m looking forward to the strategic variety, and if players believe that an island or semi-island map can be balanced (even if Sparkle never is), then the variety will be around to stay.

Bloody Ridge map strangeness

Speaking of maps, the map Bloody Ridge is giving me grief. The version named Bloody Ridge 2.1_iCCup.scx is strange in this way: It is a 2 player map, but BWTA2 says it has 3 starting positions, while BWAPI says it has 8 starting positions. I found out because the unexpected numbers caused a crash.

I found an older version named (2)Bloody Ridge 1.2.scx which seems fine.

Does anybody know what’s going on?

Update: The 8 start positions are (in tile coordinates) the real start locations (117,6) and (7,86) plus an array of 6 others in the upper left at (6,5) (10,5) (14,5) (6,8) (10,8) (14,8). I’m guessing this is an observer map? Though it’s supposed to be the regular version and there is a separate observer version. The original ICCup map page is broken now, so it’s hard to be sure. I don’t understand how observer maps work. Does BWAPI provide enough information to reject the spurious start locations? There is a base in the upper left, so apparently BWTA says “one of these looks like a real start location,” but BWAPI itself doesn’t do any further analysis.

freshening the map pool

Yesterday’s brief post about the exotic island map Sparkle unexpectedly connected with a past and continuing discussion about maps. I’ve written about map choice before: See choosing tournament maps, and also tournament map selection as a prod.

One widespread opinion, and I agree, is that a new map should not break old bots, but should provide opportunities to new bots. Existing bots that have not been updated in a long time should be able to play on the map with their usual skill. Bots that understand the special features of the map should be able to exploit them to gain an advantage. For example, pure island maps break old bots, but a regular map with some island bases is playable for all bots and provides an exploitable map feature (and we already have some maps with islands). Maps with map blocks that disrupt pathing also break many old bots, but map blocks designed to allow smooth pathing outside the blocked regions provide an exploitable map feature. The map Fortress used in AIIDE is an example, with blocked off corner bases. There are many other examples of maps with exploitable features.

Lately, I’ve been feeling that the SSCAIT maps are becoming stale. They are fine in themselves, but I’m tired of them staying the same. The advantages of maps that stay the same for years are that old bots continue to work as well as ever, and you can compare over time. The disadvantages are that new challenges are lacking, and that it can get boring. Fun is a critical mission requirement, if you don’t mind me putting it that way. And the April Fool prank of playing on Big Game Hunters for a day doesn’t quite fulfill it.

SSCAIT has an official map pack with 15 maps, and uses 14 of them. Electric Circuit is included but disabled, because its blocked paths cause a lot of bots to mess up (Steamhammer included, by the way). One idea to provide variety without breaking continuity is to keep using the familiar 14 official maps and add one more map that changes periodically, perhaps the Map of the Month. That fills out the map pool to the full 15 and provides a small touch of variety and new challenges, but not so much that bot authors are forced into extra effort to keep up. That idea seems to me like a good compromise. Of course other ideas are good too; maybe commenters will suggest some.

Of course it’s easy for me to suggest. I don’t do any of the work of running the service! Kudos to those who do, and I hope they can find time to realize map variety in some form.

island map Sparkle

One of the maps proposed for the Afreeca Star League season 5 (ASL5) is an island map: Sparkle. In my 2016 post on novelty maps I wondered whether it was possible to balance an island map using modern map-balancing tricks. Sparkle is a serious attempt to do that, and I’m interested. At the moment, the public is voting to help decide which maps will be included in the tournament.

AIIDE 2017 crosstables per map

The AIIDE 2017 official results include a table of how each bot performed on each map. Some bots performed evenly across maps, and some liked or disliked particular maps. The left “overall” column of each table corresponds to one column in the official bot-map table; the rest of the table breaks it down by opponent. With 10 maps and 110 rounds, each cell ideally represents 11 games, so the tables are noisy. Some games are missing, so some cells represent fewer games.

First, the complete crosstable for reference. Its contents are the same as the official crosstable, but shown as percentages rather than as wins/games.

complete

overallZZZKPurpIroncpacMicrCherMcRaArraTyrSteaAILiLetaXimpUAlbAiurIceBSkynKillMegaXelnOverJunoGarmMyscHannSlinForcZiab
ZZZKBot83.11%67%60%66%87%89%42%85%37%96%83%45%96%99%86%97%96%96%92%100%100%99%100%72%100%52%100%100%
PurpleWave82.35%33%65%93%88%78%75%95%81%86%55%61%91%92%49%93%94%56%91%90%98%75%100%94%98%95%100%99%
Iron81.52%40%35%67%68%7%42%94%96%87%100%63%99%84%98%100%100%61%93%85%98%99%97%98%100%99%97%91%
cpac71.01%34%7%33%95%55%99%36%5%70%85%77%99%99%58%97%67%83%82%64%83%80%100%69%85%83%74%100%
Microwave70.86%13%12%32%5%72%28%67%49%55%47%84%58%83%92%92%85%99%91%83%96%77%100%95%100%99%98%100%
CherryPi69.08%11%22%93%45%28%54%29%89%35%42%89%50%53%92%92%50%66%67%98%93%100%99%79%95%99%97%100%
McRave67.07%58%25%58%1%72%46%83%63%77%70%51%67%55%36%76%64%75%67%77%50%85%96%100%96%67%95%98%
Arrakhammer65.95%15%5%6%64%33%71%17%93%27%68%60%75%59%62%94%68%99%64%47%96%100%100%64%98%96%99%100%
Tyr65.91%63%19%4%95%51%11%37%7%84%60%55%96%65%58%65%81%90%80%76%89%95%95%85%86%64%95%75%
Steamhammer64.14%4%14%13%30%45%65%23%73%16%89%49%86%80%35%89%54%93%55%72%95%99%100%85%76%100%92%100%
AILien58.29%17%45%0%15%53%58%30%32%40%11%13%40%39%55%82%84%87%74%87%76%60%99%92%95%97%94%99%
LetaBot56.92%55%39%37%23%16%11%49%40%45%51%87%68%45%57%5%77%87%72%44%78%56%80%98%47%98%85%87%
Ximp54.19%4%9%1%1%42%50%33%25%4%14%60%32%51%88%10%99%65%86%75%59%86%99%86%93%100%95%99%
UAlbertaBot53.40%1%8%16%1%17%47%45%41%35%20%61%55%49%75%74%67%54%65%100%58%91%59%61%87%65%89%100%
Aiur50.46%14%51%2%42%8%8%64%38%42%65%45%43%12%25%81%89%62%33%56%89%22%74%70%92%75%86%75%
IceBot45.62%3%7%0%3%8%8%24%6%35%11%18%95%90%26%19%62%75%53%35%62%85%68%87%97%98%67%88%
Skynet43.78%4%6%0%33%15%50%36%32%19%46%16%23%1%33%11%38%28%17%67%92%70%99%55%100%96%95%96%
KillAll43.04%4%44%39%17%1%34%25%1%10%7%13%13%35%46%38%25%72%77%89%45%100%89%64%78%44%61%94%
MegaBot42.83%8%9%7%18%9%33%33%36%20%45%26%28%14%35%67%47%83%23%37%75%44%75%66%92%71%86%77%
Xelnaga37.10%0%10%15%36%17%2%23%53%24%28%13%56%25%0%44%65%33%11%63%87%45%1%75%80%75%80%45%
Overkill32.69%0%2%2%17%4%7%50%4%11%5%24%22%41%42%11%38%8%55%25%13%75%67%66%36%87%83%87%
Juno29.57%1%25%1%20%23%0%15%0%5%1%40%44%14%9%78%15%30%0%56%55%25%4%42%95%68%50%85%
GarmBot27.09%0%0%3%0%0%1%4%0%5%0%1%20%1%41%26%32%1%11%25%99%33%96%79%6%97%77%73%
Myscbot25.94%28%6%2%31%5%21%0%36%15%15%8%2%14%39%30%13%45%36%34%25%34%58%21%61%9%68%44%
HannesBredberg21.26%0%2%0%15%0%5%4%2%14%24%5%53%7%13%8%3%0%22%8%20%64%5%94%39%75%66%29%
Sling21.09%48%5%1%17%1%1%33%4%36%0%3%2%0%35%25%2%4%56%29%25%13%32%3%91%25%71%9%
ForceBot17.97%0%0%3%26%2%3%5%1%5%8%6%15%5%11%14%33%5%39%14%20%17%50%23%32%34%29%85%
Ziabot17.21%0%1%9%0%0%0%2%0%25%0%1%13%1%0%25%12%4%6%23%55%13%15%27%56%71%91%15%

(2) Benzene

overallZZZKPurpIroncpacMicrCherMcRaArraTyrSteaAILiLetaXimpUAlbAiurIceBSkynKillMegaXelnOverJunoGarmMyscHannSlinForcZiab
ZZZKBot74.07%36%9%55%91%82%27%82%9%100%91%0%100%100%91%100%91%100%91%100%100%100%100%18%100%27%100%100%
PurpleWave84.85%64%64%100%100%73%82%91%82%100%82%73%82%100%18%91%73%73%100%100%100%82%100%100%91%82%100%91%
Iron85.86%91%36%82%82%9%45%100%100%100%100%36%91%100%100%100%100%100%82%73%100%100%100%100%100%100%100%91%
cpac71.28%45%0%18%91%82%100%36%0%55%100%73%100%100%45%100%82%91%90%45%64%91%100%27%100%91%100%100%
Microwave72.30%9%0%18%9%82%18%82%55%27%82%82%64%82%73%91%100%100%100%91%100%100%100%91%100%100%100%100%
CherryPi66.67%18%27%91%18%18%45%18%82%36%36%91%64%64%100%73%73%73%64%100%91%100%91%55%100%91%82%100%
McRave72.05%73%18%55%0%82%55%91%55%82%91%55%82%73%36%64%82%100%82%100%36%100%100%100%100%36%100%100%
Arrakhammer63.85%18%9%0%64%18%82%9%100%36%91%73%64%36%18%100%73%100%70%64%100%100%100%18%91%91%100%100%
Tyr66.67%91%18%0%100%45%18%45%0%100%64%36%100%73%27%55%91%100%73%73%100%100%91%100%73%55%100%73%
Steamhammer62.63%0%0%0%45%73%64%18%64%0%100%45%91%82%36%73%45%82%45%64%100%100%100%64%100%100%100%100%
AILien48.48%9%18%0%0%18%64%9%9%36%0%0%18%45%18%73%91%55%82%82%73%45%100%100%82%91%100%91%
LetaBot60.68%100%27%64%27%18%9%45%27%64%55%100%27%27%55%0%91%82%100%55%100%18%100%100%82%100%82%91%
Ximp46.60%0%18%9%0%36%36%18%36%0%9%82%73%55%0%9%100%73%88%55%36%0%100%73%64%100%100%100%
UAlbertaBot53.54%0%0%0%0%18%36%27%64%27%18%55%73%45%73%73%55%82%73%100%55%100%73%55%91%73%82%100%
Aiur60.27%9%82%0%55%27%0%64%82%73%64%82%45%100%27%91%91%55%55%82%91%18%73%36%91%91%82%64%
IceBot49.32%0%9%0%0%9%27%36%0%45%27%27%100%91%27%9%82%82%80%27%55%100%73%82%82%100%91%73%
Skynet38.31%9%27%0%18%0%27%18%27%9%55%9%9%0%45%9%18%0%0%82%100%91%91%9%100%100%91%82%
KillAll35.69%0%27%0%9%0%27%0%0%0%18%45%18%27%18%45%18%100%82%100%36%100%73%0%73%18%55%73%
MegaBot35.02%9%0%18%10%0%36%18%30%27%55%18%0%12%27%45%20%100%18%11%45%45%75%18%100%55%88%80%
Xelnaga31.19%0%0%27%55%9%0%0%36%27%36%18%45%45%0%18%73%18%0%89%82%45%0%55%73%36%64%0%
Overkill33.67%0%0%0%36%0%9%64%0%0%0%27%0%64%45%9%45%0%64%55%18%82%73%64%0%91%100%64%
Juno29.63%0%18%0%9%0%0%0%0%0%0%55%82%100%0%82%0%9%0%55%55%18%0%0%100%73%64%82%
GarmBot26.53%0%0%0%0%0%9%0%0%9%0%0%0%0%27%27%27%9%27%25%100%27%100%64%0%100%100%64%
Myscbot46.46%82%0%0%73%9%45%0%82%0%36%0%0%27%45%64%18%91%100%82%45%36%100%36%73%9%100%100%
HannesBredberg24.24%0%9%0%0%0%0%0%9%27%0%18%18%36%9%9%18%0%27%0%27%100%0%100%27%100%100%18%
Sling25.25%73%18%0%9%0%9%64%9%45%0%9%0%0%27%9%0%0%82%45%64%9%27%0%91%0%91%0%
ForceBot8.50%0%0%0%0%0%18%0%0%0%0%0%18%0%18%18%9%9%45%12%36%0%36%0%0%0%9%0%
Ziabot24.66%0%9%9%0%0%0%0%0%27%0%9%9%0%0%36%27%18%27%20%100%36%18%36%0%82%100%100%

(2) Destination

overallZZZKPurpIroncpacMicrCherMcRaArraTyrSteaAILiLetaXimpUAlbAiurIceBSkynKillMegaXelnOverJunoGarmMyscHannSlinForcZiab
ZZZKBot82.83%36%9%73%100%82%27%91%55%100%91%27%100%100%100%100%100%100%82%100%100%100%100%91%100%73%100%100%
PurpleWave78.38%64%64%91%55%73%91%91%91%73%27%36%91%73%36%100%100%91%80%91%82%55%100%91%100%73%100%100%
Iron84.51%91%36%55%64%0%27%100%91%100%100%55%100%100%100%100%100%100%100%82%100%100%100%100%100%100%100%82%
cpac73.90%27%9%45%100%82%100%55%18%91%82%100%100%100%82%91%27%82%89%82%64%82%100%18%100%100%73%100%
Microwave74.32%0%45%36%0%100%73%73%82%64%82%100%27%73%100%82%73%100%100%55%91%91%100%82%100%91%91%100%
CherryPi62.96%18%27%100%18%0%55%0%82%55%9%73%55%45%91%100%36%64%64%100%82%100%100%36%91%100%100%100%
McRave62.63%73%9%73%0%27%45%73%91%73%64%55%45%64%9%64%73%45%64%73%27%100%100%100%100%45%100%100%
Arrakhammer63.64%9%9%0%45%27%100%27%100%27%73%18%73%45%64%82%82%100%100%45%73%100%100%36%100%91%91%100%
Tyr52.36%45%9%9%82%18%18%9%0%36%45%27%64%55%45%64%73%64%70%73%82%91%91%100%100%27%45%73%
Steamhammer66.33%0%27%0%9%36%45%27%73%64%100%55%100%73%36%91%55%100%64%91%100%91%100%73%91%100%91%100%
AILien60.27%9%73%0%18%18%91%36%27%55%0%18%55%27%82%82%82%91%64%82%64%91%100%82%100%100%82%100%
LetaBot65.31%73%64%45%0%0%27%45%82%73%45%82%64%64%82%0%100%91%91%45%100%100%91%100%18%100%91%100%
Ximp59.26%0%9%0%0%73%45%55%27%36%0%45%36%73%100%18%100%73%100%91%27%100%100%100%100%100%91%100%
UAlbertaBot53.54%0%27%0%0%27%55%36%55%45%27%73%36%27%64%64%64%36%64%100%45%91%82%64%91%82%91%100%
Aiur41.16%0%64%0%18%0%9%91%36%55%64%18%18%0%36%73%91%64%62%100%55%9%18%27%82%0%91%36%
IceBot52.88%0%0%0%9%18%0%36%18%36%9%18%100%82%36%27%91%73%73%73%67%100%100%100%100%100%73%91%
Skynet39.39%0%0%0%73%27%64%27%18%27%45%18%0%0%36%9%9%36%18%73%82%45%100%9%100%73%82%91%
KillAll41.55%0%9%0%18%0%36%55%0%36%0%9%9%27%64%36%27%64%90%100%45%100%82%45%91%27%64%91%
MegaBot38.03%18%20%0%11%0%36%36%0%30%36%36%9%0%36%38%27%82%10%18%82%60%70%55%70%55%100%90%
Xelnaga34.80%0%9%18%18%45%0%27%55%27%9%18%55%9%0%0%27%27%0%82%100%91%0%64%100%64%82%18%
Overkill36.90%0%18%0%36%9%18%73%27%18%0%36%0%73%55%45%33%18%55%18%0%64%50%45%36%82%82%91%
Juno23.31%0%45%0%18%9%0%0%0%9%9%9%0%0%9%91%0%55%0%40%9%36%0%27%100%55%9%100%
GarmBot24.41%0%0%0%0%0%0%0%0%9%0%0%9%0%18%82%0%0%18%30%100%50%100%9%27%100%91%18%
Myscbot41.41%9%9%0%82%18%64%0%64%0%27%18%0%0%36%73%0%91%55%45%36%55%73%91%73%0%100%100%
HannesBredberg18.24%0%0%0%0%0%9%0%0%0%9%0%82%0%9%18%0%0%9%30%0%64%0%73%27%64%64%36%
Sling29.29%27%27%0%0%9%0%55%9%73%0%0%0%0%18%100%0%27%73%45%36%18%45%0%100%36%82%9%
ForceBot19.87%0%0%0%27%9%0%0%9%55%9%18%9%9%9%9%27%18%36%0%18%18%91%9%0%36%18%100%
Ziabot17.57%0%0%18%0%0%0%0%0%27%0%0%0%0%0%64%9%9%9%10%82%9%0%82%0%64%91%0%

(2) Heartbreak Ridge

overallZZZKPurpIroncpacMicrCherMcRaArraTyrSteaAILiLetaXimpUAlbAiurIceBSkynKillMegaXelnOverJunoGarmMyscHannSlinForcZiab
ZZZKBot81.82%91%36%64%82%91%9%91%9%100%64%36%100%100%100%100%100%100%100%100%100%100%100%91%100%45%100%100%
PurpleWave85.52%9%45%100%91%91%82%91%91%100%64%73%100%100%55%91%91%82%82%91%100%82%100%100%100%100%100%100%
Iron84.18%64%55%64%55%18%36%100%100%82%100%36%100%100%100%100%100%100%91%91%100%100%100%100%100%100%100%82%
cpac72.73%36%0%36%91%36%100%18%9%73%73%73%100%100%82%100%73%82%73%73%91%91%100%91%100%73%91%100%
Microwave71.62%18%9%45%9%82%36%82%55%55%36%73%55%82%91%100%73%100%90%64%100%82%100%100%100%100%100%100%
CherryPi70.71%9%9%82%64%18%64%36%91%18%55%100%27%55%100%91%55%73%82%100%100%100%100%91%91%100%100%100%
McRave66.67%91%18%64%0%64%36%73%55%100%91%55%73%0%9%91%64%55%73%45%45%100%100%100%100%100%100%100%
Arrakhammer68.01%9%9%0%82%18%64%27%100%9%64%91%82%82%55%82%73%100%73%64%100%100%100%73%100%82%100%100%
Tyr68.92%91%9%0%91%45%9%45%0%91%64%27%100%64%0%91%82%100%100%82%91%100%100%91%100%100%100%91%
Steamhammer64.65%0%0%18%27%45%82%0%91%9%91%45%64%91%27%82%73%91%55%73%100%100%100%100%82%100%100%100%
AILien56.90%36%36%0%27%64%45%9%36%36%9%9%9%27%64%64%100%82%82%64%91%55%100%100%91%100%100%100%
LetaBot55.44%64%27%64%27%27%0%45%9%73%55%91%82%18%18%9%100%64%50%18%91%18%82%100%64%100%100%100%
Ximp60.88%0%0%0%0%45%73%27%18%0%36%91%18%91%100%36%100%100%89%91%36%91%100%100%100%100%100%100%
UAlbertaBot54.05%0%0%0%0%18%45%100%18%36%9%73%82%9%64%64%82%55%70%100%64%100%73%73%91%45%91%100%
Aiur60.94%0%45%0%18%9%0%91%45%100%73%36%82%0%36%91%100%91%82%73%100%9%100%91%100%82%100%91%
IceBot45.73%0%9%0%0%0%9%9%18%9%18%36%91%64%36%9%91%91%43%0%55%91%100%100%100%100%64%91%
Skynet43.00%0%9%0%27%27%45%36%27%18%27%0%0%0%18%0%9%36%43%64%100%91%100%91%100%91%100%100%
KillAll39.53%0%18%0%18%0%27%45%0%0%9%18%36%0%45%9%9%64%80%100%55%100%91%91%64%36%55%100%
MegaBot34.83%0%18%9%27%10%18%27%27%0%45%18%50%11%30%18%57%57%20%43%91%40%75%78%73%90%50%0%
Xelnaga38.91%0%9%9%27%36%0%55%36%18%27%36%82%9%0%27%100%36%0%57%100%36%0%82%91%100%45%36%
Overkill29.39%0%0%0%9%0%0%55%0%9%0%9%9%64%36%0%45%0%45%9%0%82%91%55%9%91%80%100%
Juno29.05%0%18%0%9%18%0%0%0%0%0%45%82%9%0%91%9%9%0%60%64%18%0%36%100%73%45%100%
GarmBot23.81%0%0%0%0%0%0%0%0%0%0%0%18%0%27%0%0%0%9%25%100%9%100%100%0%82%91%82%
Myscbot16.27%9%0%0%9%0%9%0%27%9%0%0%0%0%27%9%0%9%9%22%18%45%64%0%36%0%64%73%
HannesBredberg21.55%0%0%0%0%0%9%0%0%0%18%9%36%0%9%0%0%0%36%27%9%91%0%100%64%64%55%55%
Sling18.24%55%0%0%27%0%0%0%18%0%0%0%0%0%55%18%0%9%64%10%0%9%27%18%100%36%45%0%
ForceBot19.11%0%0%0%9%0%0%0%0%0%0%0%0%0%9%0%36%0%45%50%55%20%55%9%36%45%55%100%
Ziabot14.81%0%0%18%0%0%0%0%0%9%0%0%0%0%0%9%9%0%0%100%64%0%0%18%27%45%100%0%

(3) Aztec

overallZZZKPurpIroncpacMicrCherMcRaArraTyrSteaAILiLetaXimpUAlbAiurIceBSkynKillMegaXelnOverJunoGarmMyscHannSlinForcZiab
ZZZKBot84.12%91%91%55%100%91%9%91%0%100%91%73%91%91%82%100%100%100%90%100%100%100%100%91%100%36%100%100%
PurpleWave82.15%9%55%91%91%82%73%100%73%100%73%73%91%82%55%100%91%45%91%73%100%82%100%91%100%100%100%100%
Iron77.36%9%45%73%55%0%27%82%100%100%100%27%100%82%91%100%100%55%90%82%100%100%100%91%100%100%100%82%
cpac73.06%45%9%27%100%64%100%45%0%55%82%82%100%100%73%100%73%91%82%55%82%82%100%82%73%91%82%100%
Microwave70.03%0%9%45%0%91%27%73%27%45%27%82%27%91%91%100%91%91%100%82%100%91%100%100%100%100%100%100%
CherryPi70.27%9%18%100%36%9%36%36%91%64%45%91%64%45%91%90%45%55%91%100%100%100%100%91%91%100%100%100%
McRave70.51%91%27%73%0%73%64%91%73%91%91%55%55%64%36%73%45%73%89%82%45%91%82%100%100%45%100%100%
Arrakhammer65.54%9%0%18%55%27%64%9%100%0%55%64%82%64%73%100%64%100%70%36%100%100%100%91%91%100%100%100%
Tyr66.55%100%27%0%100%73%9%27%0%91%45%64%100%64%73%55%91%100%80%100%91%91%91%64%73%45%100%45%
Steamhammer65.08%0%0%0%45%55%36%9%100%9%91%45%100%82%27%100%73%100%56%82%82%100%100%91%73%100%100%100%
AILien60.34%9%27%0%18%73%55%9%45%55%9%0%64%36%36%73%91%100%67%100%91%82%91%100%100%100%100%100%
LetaBot57.43%27%27%73%18%18%9%45%36%36%55%100%82%45%55%0%100%91%70%9%91%73%73%100%64%91%64%100%
Ximp51.85%9%9%0%0%73%36%45%18%0%0%36%18%27%91%0%100%73%91%64%55%100%100%73%91%100%91%100%
UAlbertaBot54.88%9%18%18%0%9%55%36%36%36%18%64%55%73%91%64%64%82%55%100%73%91%64%36%91%55%91%100%
Aiur47.47%18%45%9%27%9%9%64%27%27%73%64%45%9%9%55%91%27%18%64%91%27%73%82%100%82%64%73%
IceBot43.05%0%0%0%0%0%10%27%0%45%0%27%100%100%36%45%91%64%40%45%27%100%9%73%100%100%18%100%
Skynet42.03%0%9%0%27%9%55%55%36%9%27%9%0%0%36%9%9%0%0%91%91%82%100%82%100%100%91%100%
KillAll42.76%0%55%45%9%9%45%27%0%0%0%0%9%27%18%73%36%100%82%45%36%100%82%64%100%45%55%91%
MegaBot44.48%10%9%10%18%0%9%11%30%20%44%33%30%9%45%82%60%100%18%64%80%55%91%64%100%73%82%55%
Xelnaga38.05%0%27%18%45%18%0%18%64%0%18%0%91%36%0%36%55%9%55%36%100%27%0%91%82%91%73%36%
Overkill33.78%0%0%0%18%0%0%55%0%9%18%9%9%45%27%9%73%9%64%20%0%91%82%73%36%91%82%91%
Juno25.93%0%18%0%18%9%0%9%0%9%0%18%27%0%9%73%0%18%0%45%73%9%9%73%100%36%45%100%
GarmBot31.65%0%0%0%0%0%0%18%0%9%0%9%27%0%36%27%91%0%18%9%100%18%91%100%18%100%91%91%
Myscbot20.88%9%9%9%18%0%9%0%9%36%9%0%0%27%64%18%27%18%36%36%9%27%27%0%73%9%55%27%
HannesBredberg17.23%0%0%0%27%0%9%0%9%27%27%0%36%9%9%0%0%0%0%0%18%64%0%82%27%73%27%18%
Sling22.90%64%0%0%9%0%0%55%0%55%0%0%9%0%45%18%0%0%55%27%9%9%64%0%91%27%82%0%
ForceBot22.22%0%0%0%18%0%0%0%0%0%0%0%36%9%9%36%82%9%45%18%27%18%55%9%45%73%18%91%
Ziabot18.52%0%0%18%0%0%0%0%0%55%0%0%0%0%0%27%0%0%9%45%64%9%0%9%73%82%100%9%

(3) Tau Cross

overallZZZKPurpIroncpacMicrCherMcRaArraTyrSteaAILiLetaXimpUAlbAiurIceBSkynKillMegaXelnOverJunoGarmMyscHannSlinForcZiab
ZZZKBot83.84%82%91%73%82%91%0%82%73%82%91%9%100%100%73%100%91%82%91%100%100%100%100%73%100%100%100%100%
PurpleWave80.07%18%64%73%82%73%64%100%36%73%82%27%91%91%91%82%100%45%90%100%100%91%100%91%100%100%100%100%
Iron83.16%9%36%100%64%18%45%100%100%100%100%91%100%73%100%100%100%36%91%100%100%100%100%100%100%100%82%100%
cpac67.00%27%27%0%91%82%100%36%0%73%82%64%91%100%18%100%27%73%73%45%91%82%100%91%73%82%82%100%
Microwave70.03%18%18%36%9%82%9%36%45%82%55%82%55%82%91%91%82%100%82%82%100%73%100%82%100%100%100%100%
CherryPi67.34%9%27%82%18%18%55%36%100%9%55%100%45%45%91%91%27%73%64%100%100%100%100%82%91%100%100%100%
McRave71.62%100%36%55%0%91%45%100%45%91%55%36%36%82%55%73%55%91%80%73%55%91%100%100%100%91%100%100%
Arrakhammer64.86%18%0%0%64%64%64%0%100%55%82%64%55%64%45%100%91%100%30%27%100%100%100%27%100%100%100%100%
Tyr69.59%27%64%0%100%55%0%55%0%91%55%55%100%55%91%55%82%64%80%100%91%91%100%100%100%82%100%91%
Steamhammer62.16%18%27%0%27%18%91%9%45%9%100%36%82%55%36%82%45%82%60%73%100%100%100%100%91%100%91%100%
AILien54.21%9%18%0%18%45%45%45%18%45%0%0%27%45%27%91%82%82%73%91%91%36%100%100%91%91%91%100%
LetaBot62.29%91%73%9%36%18%0%64%36%45%64%100%73%55%55%9%100%91%45%64%91%64%91%100%27%100%82%100%
Ximp57.77%0%9%0%9%45%55%64%45%0%18%73%27%36%100%18%100%64%80%73%55%91%100%100%100%100%100%100%
UAlbertaBot57.58%0%9%27%0%18%55%18%36%45%45%55%45%64%100%55%55%82%82%100%73%100%55%91%82%73%91%100%
Aiur51.18%27%9%0%82%9%9%45%55%9%64%73%45%0%0%73%91%36%36%73%91%36%82%91%91%100%73%82%
IceBot46.28%0%18%0%0%9%9%27%0%45%18%9%91%82%45%27%100%73%10%36%91%73%64%91%100%100%27%100%
Skynet45.79%9%0%0%73%18%73%45%9%18%55%18%0%0%45%9%0%82%9%55%100%91%100%45%100%100%91%91%
KillAll45.79%18%55%64%27%0%27%9%0%36%18%18%9%36%18%64%27%18%82%73%73%100%100%64%55%64%82%100%
MegaBot49.30%9%10%9%27%18%36%20%70%20%40%27%55%20%18%64%90%91%18%36%64%67%73%90%100%100%64%100%
Xelnaga37.71%0%0%0%55%18%0%27%73%0%27%9%36%27%0%27%64%45%27%64%82%73%0%64%73%91%64%73%
Overkill27.95%0%0%0%9%0%0%45%0%9%0%9%9%45%27%9%9%0%27%36%18%82%55%64%55%73%82%91%
Juno25.42%0%9%0%18%27%0%9%0%9%0%64%36%9%0%64%27%9%0%33%27%18%9%45%100%82%0%91%
GarmBot26.60%0%0%0%0%0%0%0%0%0%0%0%9%0%45%18%36%0%0%27%100%45%91%91%9%100%64%82%
Myscbot20.27%27%9%0%9%18%18%0%73%0%0%0%0%0%9%9%9%55%36%10%36%36%55%9%36%55%18%18%
HannesBredberg21.21%0%0%0%27%0%9%0%0%0%9%9%73%0%18%9%0%0%45%0%27%45%0%91%64%64%27%55%
Sling14.19%0%0%0%18%0%0%9%0%18%0%9%0%0%27%0%0%0%36%0%9%27%18%0%45%36%91%36%
ForceBot25.93%0%0%18%18%0%0%0%0%0%9%9%18%0%9%27%73%9%18%36%36%18%100%36%82%73%9%100%
Ziabot10.77%0%0%0%0%0%0%0%0%9%0%0%0%0%0%18%0%9%0%0%27%9%9%18%82%45%64%0%

(4) Andromeda

overallZZZKPurpIroncpacMicrCherMcRaArraTyrSteaAILiLetaXimpUAlbAiurIceBSkynKillMegaXelnOverJunoGarmMyscHannSlinForcZiab
ZZZKBot81.82%55%100%45%82%91%91%91%18%91%73%9%100%100%82%82%91%100%91%100%100%91%100%73%100%55%100%100%
PurpleWave83.39%45%82%91%91%64%91%100%100%73%27%64%91%91%55%91%100%55%89%91%100%73%100%100%91%100%100%100%
Iron74.41%0%18%36%82%9%36%82%91%55%100%64%100%73%100%100%100%27%100%91%100%100%73%100%100%100%100%73%
cpac74.32%55%9%64%100%18%100%18%9%73%100%73%100%100%64%100%73%100%80%91%91%64%100%64%91%82%91%100%
Microwave70.03%18%9%18%0%64%18%82%45%55%45%82%73%64%100%100%64%100%91%91%100%73%100%100%100%100%100%100%
CherryPi73.40%9%36%91%82%36%73%36%100%36%73%91%18%64%91%100%91%45%45%100%82%100%100%82%100%100%100%100%
McRave64.86%9%9%64%0%82%27%91%45%82%45%9%73%45%45%73%64%91%60%82%82%82%100%100%100%91%100%100%
Arrakhammer67.91%9%0%18%82%18%64%9%91%18%73%45%73%55%91%100%55%100%90%64%100%100%100%82%100%100%100%100%
Tyr62.96%82%0%9%91%55%0%55%9%82%73%73%100%45%73%82%64%100%82%73%82%82%91%64%55%9%100%73%
Steamhammer69.02%9%27%45%27%45%64%18%82%18%64%27%73%91%64%100%55%100%73%100%91%100%100%91%100%100%100%100%
AILien63.30%27%73%0%0%55%27%55%27%27%36%18%45%55%100%100%64%91%91%100%73%73%100%82%100%100%91%100%
LetaBot63.64%91%36%36%27%18%9%91%55%27%73%82%91%64%45%0%82%100%100%91%82%45%73%100%45%100%91%64%
Ximp54.88%0%9%0%0%27%82%27%27%0%27%55%9%45%100%0%100%64%100%91%73%82%91%91%91%100%100%91%
UAlbertaBot53.20%0%9%27%0%36%36%55%45%55%9%45%36%55%73%82%73%73%45%100%64%91%27%64%82%55%100%100%
Aiur45.45%18%45%0%36%0%9%55%9%27%36%0%55%0%27%100%91%73%18%64%82%36%64%73%82%73%82%73%
IceBot46.28%18%9%0%0%0%0%27%0%18%0%0%100%100%18%0%55%91%90%73%73%64%82%91%100%91%82%73%
Skynet47.14%9%0%0%27%36%9%36%45%36%45%36%18%0%27%9%45%36%18%91%91%73%100%82%100%100%100%100%
KillAll43.05%0%45%73%0%0%55%9%0%0%0%9%0%36%27%27%9%64%100%100%36%100%82%64%100%55%82%100%
MegaBot36.01%9%11%0%20%9%55%40%10%18%27%9%0%0%55%82%10%82%0%36%64%20%64%73%90%9%90%82%
Xelnaga23.57%0%9%9%9%9%0%18%36%27%0%0%9%9%0%36%27%9%0%64%64%36%0%73%55%18%91%27%
Overkill33.67%0%0%0%9%0%18%18%0%18%9%27%18%27%36%18%27%9%64%36%36%82%73%100%27%100%64%91%
Juno33.78%9%27%0%36%27%0%18%0%18%0%27%55%18%9%64%36%27%0%80%64%18%0%45%100%82%64%91%
GarmBot29.97%0%0%27%0%0%0%0%0%9%0%0%27%9%73%36%18%0%18%36%100%27%100%73%0%100%82%73%
Myscbot22.22%27%0%0%36%0%18%0%18%36%9%18%0%9%36%27%9%18%36%27%27%0%55%27%55%9%82%18%
HannesBredberg22.64%0%9%0%9%0%0%0%0%45%0%0%55%9%18%18%0%0%0%10%45%73%0%100%45%55%91%27%
Sling25.93%45%0%0%18%0%0%9%0%91%0%0%0%0%45%27%9%0%45%91%82%0%18%0%91%45%73%9%
ForceBot12.84%0%0%0%9%0%0%0%0%0%0%9%9%0%0%18%18%0%18%10%9%36%36%18%18%9%27%100%
Ziabot19.87%0%0%27%0%0%0%0%0%27%0%0%36%9%0%27%27%0%0%18%73%9%9%27%82%73%91%0%

(4) Circuit Breaker

overallZZZKPurpIroncpacMicrCherMcRaArraTyrSteaAILiLetaXimpUAlbAiurIceBSkynKillMegaXelnOverJunoGarmMyscHannSlinForcZiab
ZZZKBot76.35%36%55%64%73%91%36%64%27%100%73%18%91%100%64%91%100%82%80%100%100%100%100%73%100%45%100%100%
PurpleWave83.45%64%64%91%100%73%100%82%91%82%73%64%91%100%18%100%100%18%90%91%100%73%100%91%100%100%100%100%
Iron80.13%45%36%9%27%9%45%100%91%73%100%64%100%91%100%100%100%100%100%82%100%100%100%91%100%100%100%100%
cpac72.64%36%9%91%100%36%100%36%0%64%91%91%100%91%45%100%82%91%90%55%100%91%100%82%82%64%36%100%
Microwave68.35%27%0%73%0%36%18%36%36%36%36%82%82%82%91%82%100%100%91%82%100%55%100%100%100%100%100%100%
CherryPi70.37%9%27%91%64%64%55%36%91%18%36%82%36%45%91%100%36%91%55%100%91%100%100%91%91%100%100%100%
McRave66.67%64%0%55%0%82%45%82%64%82%73%55%64%45%55%100%91%82%45%64%55%91%82%100%100%55%82%91%
Arrakhammer65.66%36%18%0%64%64%64%18%64%45%64%18%82%45%73%100%73%100%45%27%91%100%100%82%100%100%100%100%
Tyr68.01%73%9%9%100%64%9%36%36%91%73%64%100%64%45%55%91%91%82%64%82%100%100%73%82%91%100%55%
Steamhammer65.32%0%18%27%36%64%82%18%55%9%91%45%100%91%36%82%36%100%45%55%100%100%100%100%82%100%91%100%
AILien56.42%27%27%0%9%64%64%27%36%27%9%0%27%36%45%73%82%91%80%100%73%36%100%100%100%91%100%100%
LetaBot66.89%82%36%36%9%18%18%45%82%36%55%100%100%45%91%0%55%100%90%91%91%55%91%100%82%100%100%100%
Ximp54.88%9%9%0%0%18%64%36%18%0%0%73%0%45%100%0%100%64%91%91%91%100%100%91%91%100%91%100%
UAlbertaBot55.22%0%0%9%9%18%55%55%55%36%9%64%55%55%82%73%82%45%64%100%73%82%64%55%100%55%100%100%
Aiur53.22%36%82%0%55%9%9%45%27%55%64%55%9%0%18%91%91%64%22%27%100%18%82%91%100%82%100%100%
IceBot42.23%9%0%0%0%18%0%0%0%45%18%27%100%100%27%9%0%55%60%36%45%82%73%73%100%100%73%91%
Skynet44.26%0%0%0%18%0%64%9%27%9%64%18%45%0%18%9%100%27%20%64%73%64%100%64%100%100%100%100%
KillAll42.76%18%82%0%9%0%9%18%0%9%0%9%0%36%55%36%45%73%55%91%55%100%91%64%73%36%91%100%
MegaBot47.16%20%10%0%10%9%45%55%55%18%55%20%10%9%36%78%40%80%45%18%82%40%82%70%100%100%100%100%
Xelnaga43.10%0%9%18%45%18%0%36%73%36%45%0%9%9%0%73%64%36%9%82%82%45%0%82%100%100%100%91%
Overkill29.97%0%0%0%0%0%9%45%9%18%0%27%9%9%27%0%55%27%45%18%18%73%45%64%55%82%82%91%
Juno31.08%0%27%0%9%45%0%9%0%0%0%64%45%0%18%82%18%36%0%60%55%27%0%55%100%73%73%45%
GarmBot27.61%0%0%0%0%0%0%18%0%0%0%0%9%0%36%18%27%0%9%18%100%55%100%82%9%100%82%82%
Myscbot21.28%27%9%9%18%0%9%0%18%27%0%0%0%9%45%9%27%36%36%30%18%36%45%18%73%0%64%9%
HannesBredberg17.57%0%0%0%18%0%9%0%0%18%18%0%18%9%0%0%0%0%27%0%0%45%0%91%27%100%82%9%
Sling18.64%55%0%0%36%0%0%45%0%9%0%9%0%0%45%18%0%0%64%0%0%18%27%0%100%0%55%18%
ForceBot14.14%0%0%0%64%0%0%18%0%0%9%0%0%9%0%0%27%0%9%0%0%18%27%18%36%18%45%82%
Ziabot16.22%0%0%0%0%0%0%9%0%45%0%0%0%0%0%0%9%0%0%0%9%9%55%18%91%91%82%18%

(4) Empire of the Sun

overallZZZKPurpIroncpacMicrCherMcRaArraTyrSteaAILiLetaXimpUAlbAiurIceBSkynKillMegaXelnOverJunoGarmMyscHannSlinForcZiab
ZZZKBot84.46%73%64%73%100%91%73%82%45%91%73%91%82%100%73%100%91%100%90%100%100%100%100%64%100%27%100%100%
PurpleWave85.08%27%73%100%80%91%82%100%91%82%55%73%100%100%55%91%100%64%100%91%100%73%100%82%100%91%100%100%
Iron78.04%36%27%82%64%0%45%100%91%82%100%64%100%73%91%100%100%9%90%55%100%100%100%100%100%100%100%100%
cpac69.70%27%0%18%91%45%100%55%0%73%82%73%100%100%55%82%91%82%82%82%82%82%100%82%91%55%55%100%
Microwave70.95%0%20%36%9%45%27%82%45%45%45%82%73%91%82%91%100%100%82%82%91%82%100%100%100%100%100%100%
CherryPi68.35%9%9%100%55%55%45%27%82%27%27%82%55%45%82%100%45%73%45%91%100%100%100%91%100%100%100%100%
McRave62.29%27%18%55%0%73%55%55%73%45%55%64%91%55%36%82%45%55%45%100%91%55%100%100%73%45%91%100%
Arrakhammer66.78%18%0%0%45%18%73%45%91%45%55%64%91%64%64%91%55%100%44%64%100%100%100%73%100%100%100%100%
Tyr68.35%55%9%9%100%55%18%27%9%91%55%55%100%82%91%55%73%100%82%73%91%100%91%82%91%73%100%82%
Steamhammer61.15%9%18%18%27%55%73%55%55%9%73%45%91%73%27%91%27%91%50%64%100%100%100%55%64%100%82%100%
AILien60.81%27%45%0%18%55%73%45%45%45%27%0%64%36%55%82%91%100%70%82%64%36%100%100%100%100%82%100%
LetaBot54.42%9%27%36%27%18%18%36%36%45%55%100%73%45%55%9%64%91%50%36%64%55%91%100%36%100%91%100%
Ximp51.35%18%0%0%0%27%45%9%9%0%9%36%27%36%100%18%100%64%90%82%64%100%100%82%91%100%82%100%
UAlbertaBot48.82%0%0%27%0%9%55%45%36%18%27%64%55%64%73%91%64%18%55%100%64%82%27%27%73%55%91%100%
Aiur49.16%27%45%9%45%18%18%64%36%9%73%45%45%0%27%73%82%64%9%36%100%27%64%55%91%73%100%91%
IceBot41.89%0%9%0%18%9%0%18%9%45%9%18%91%82%9%27%27%82%40%0%82%91%27%82%100%91%91%73%
Skynet44.41%9%0%0%9%0%55%55%45%27%73%9%36%0%36%18%73%27%22%36%82%18%100%64%100%100%100%100%
KillAll47.14%0%36%91%18%0%27%45%0%0%9%0%9%36%82%36%18%73%82%91%45%100%100%82%100%36%64%91%
MegaBot50.18%10%0%10%18%18%55%55%56%18%50%30%50%10%45%91%60%78%18%70%91%30%55%91%100%78%89%82%
Xelnaga39.53%0%9%45%18%18%9%0%36%27%36%18%64%18%0%64%100%64%9%30%82%36%0%100%73%73%91%45%
Overkill29.97%0%0%0%18%9%0%9%0%9%0%36%36%36%36%0%18%18%55%9%18%82%45%55%36%91%100%91%
Juno34.12%0%27%0%18%18%0%45%0%0%0%64%45%0%18%73%9%82%0%70%64%18%0%73%82%82%73%64%
GarmBot31.31%0%0%0%0%0%0%0%0%9%0%0%9%0%73%36%73%0%0%45%100%55%100%100%0%100%73%73%
Myscbot22.90%36%18%0%18%0%9%0%27%18%45%0%0%18%73%45%18%36%18%9%0%45%27%0%64%0%64%27%
HannesBredberg22.90%0%0%0%9%0%0%27%0%9%36%0%64%9%27%9%0%0%0%0%27%64%18%100%36%91%73%18%
Sling23.05%73%9%0%45%0%0%55%0%27%0%0%0%0%45%27%9%0%64%22%27%9%18%0%100%9%73%9%
ForceBot16.27%0%0%0%45%0%0%9%0%0%18%18%9%18%9%0%9%0%36%11%9%0%27%27%36%27%27%100%
Ziabot16.84%0%0%0%0%0%0%0%0%18%0%0%0%0%0%9%27%0%9%18%55%9%36%27%73%82%91%0%

(4) Fortress

overallZZZKPurpIroncpacMicrCherMcRaArraTyrSteaAILiLetaXimpUAlbAiurIceBSkynKillMegaXelnOverJunoGarmMyscHannSlinForcZiab
ZZZKBot90.57%91%73%73%82%91%91%91%73%100%91%100%100%100%100%100%100%100%100%100%100%100%100%82%100%9%100%100%
PurpleWave78.45%9%55%91%91%82%36%100%73%82%27%55%91%91%55%82%91%55%100%91%100%73%100%91%100%100%100%100%
Iron83.84%27%45%100%100%0%27%91%100%82%100%100%100%64%100%100%100%45%100%100%82%100%100%100%100%100%100%100%
cpac69.15%27%9%0%91%55%100%27%9%64%82%91%100%100%64%100%82%64%89%55%82%73%100%73%82%91%64%100%
Microwave71.33%18%9%0%9%55%36%55%55%73%27%100%64%90%100%91%91%100%100%100%100%73%100%100%100%100%91%100%
CherryPi71.72%9%18%100%45%45%55%18%91%45%45%91%64%64%91%91%45%73%73%91%91%100%100%91%100%100%100%100%
McRave69.59%9%64%73%0%64%45%82%64%73%55%100%91%91%27%82%55%82%80%91%45%45%100%100%100%91%82%91%
Arrakhammer69.02%9%0%9%73%45%82%18%82%27%91%100%64%73%73%91%64%100%55%36%100%100%100%73%100%100%100%100%
Tyr70.71%27%27%0%91%45%9%36%18%100%82%100%100%64%100%55%100%100%91%64%91%91%100%82%100%55%100%82%
Steamhammer63.18%0%18%18%36%27%55%27%73%0%82%91%91%82%36%91%73%91%30%64%82%100%100%100%55%100%82%100%
AILien60.94%9%73%0%18%73%55%45%9%18%18%73%55%27%73%82%73%100%55%82%73%73%100%73%100%100%91%100%
LetaBot24.75%0%45%0%9%0%9%0%0%0%9%27%9%18%55%0%9%82%33%0%0%82%36%91%0%91%45%18%
Ximp53.20%0%9%0%0%36%36%9%36%0%9%45%91%55%100%0%100%36%55%82%82%100%100%64%100%100%91%100%
UAlbertaBot52.70%0%9%36%0%10%36%9%27%36%18%73%82%45%55%91%73%36%64%100%27%91%82%64%91%100%64%100%
Aiur48.15%0%45%0%36%0%9%73%27%0%64%27%45%0%45%82%82%73%9%27%91%36%100%73%100%100%82%73%
IceBot44.11%0%18%0%0%9%9%18%9%45%9%18%100%100%9%18%45%64%55%9%64%55%82%91%100%100%73%91%
Skynet46.13%0%9%0%18%9%55%45%36%0%27%27%91%0%27%18%55%9%27%55%100%64%100%73%100%100%100%100%
KillAll43.92%0%45%55%36%0%27%18%0%0%9%0%18%64%64%27%36%91%50%91%27%100%100%73%73%45%36%100%
MegaBot48.23%0%0%0%11%0%27%20%45%9%70%45%67%45%36%91%45%73%50%27%70%40%100%73%100%70%91%90%
Xelnaga41.75%0%9%0%45%0%9%9%64%36%36%18%100%18%0%73%91%45%9%73%91%27%9%64%100%91%91%18%
Overkill39.19%0%0%18%18%0%9%55%0%9%18%27%100%18%73%9%36%0%73%30%9%91%91%73%55%91%73%82%
Juno31.08%0%27%0%27%27%0%55%0%9%0%27%18%0%9%64%45%36%0%60%73%9%9%36%100%55%55%100%
GarmBot20.20%0%0%0%0%0%0%0%0%0%0%0%64%0%18%0%18%0%0%0%91%9%91%73%0%91%18%73%
Myscbot24.92%18%9%0%27%0%9%0%27%18%0%27%9%36%36%27%9%27%27%27%36%27%64%27%82%0%55%45%
HannesBredberg18.24%0%0%0%18%0%0%0%0%0%45%0%100%0%9%0%0%0%27%0%0%45%0%100%18%64%55%9%
Sling19.59%91%0%0%9%0%0%9%0%45%0%0%9%0%0%0%0%0%55%30%9%9%45%9%100%36%64%9%
ForceBot25.25%0%0%0%36%9%0%18%0%0%18%9%55%9%36%18%27%0%64%9%9%27%45%82%45%45%36%82%
Ziabot19.93%0%0%0%0%0%0%9%0%18%0%0%82%0%0%27%9%0%0%10%82%18%0%27%55%91%91%18%

(4) Python

overallZZZKPurpIroncpacMicrCherMcRaArraTyrSteaAILiLetaXimpUAlbAiurIceBSkynKillMegaXelnOverJunoGarmMyscHannSlinForcZiab
ZZZKBot91.22%82%73%91%82%91%55%91%64%100%91%82%100%100%100%100%100%100%100%100%100%100%100%64%100%100%100%100%
PurpleWave82.15%18%82%100%100%82%55%100%82%100%36%73%82%91%55%100%91%36%91%82%100%64%100%100%100%100%100%100%
Iron83.67%27%18%73%91%10%82%82%100%100%100%91%100%82%100%100%100%36%89%100%100%91%100%100%100%91%91%100%
cpac66.33%9%0%27%91%55%91%36%0%82%82%55%100%100%55%100%64%73%73%55%82%64%100%82%55%100%64%100%
Microwave69.70%18%0%9%9%82%18%73%45%73%36%73%64%100%100%91%73%100%82%100%82%55%100%100%100%100%100%100%
CherryPi69.05%9%18%90%45%18%55%45%82%36%36%91%73%55%91%82%45%45%90%100%91%100%100%80%100%100%91%100%
McRave63.85%45%45%18%9%82%45%91%64%55%82%27%64%36%55%64%64%82%60%64%18%91%100%100%91%73%100%100%
Arrakhammer64.19%9%0%18%64%27%55%9%100%9%36%64%91%64%64%91%55%91%60%45%100%100%100%82%100%100%100%100%
Tyr64.98%36%18%0%100%55%18%36%0%64%45%45%100%82%36%91%64%82%64%64%91%100%91%91%91%100%100%91%
Steamhammer61.82%0%0%0%18%27%64%45%91%36%100%55%73%82%27%100%55%91%70%55%100%100%100%73%27%100%82%100%
AILien61.28%9%64%0%18%64%64%18%64%55%0%9%36%55%55%100%82%82%73%91%73%73%100%82%91%100%100%100%
LetaBot58.25%18%27%9%45%27%9%73%36%55%45%91%82%64%64%18%73%82%82%27%73%55%73%91%55%100%100%100%
Ximp51.18%0%18%0%0%36%27%36%9%0%27%64%18%45%91%0%91%36%82%36%73%100%100%91%100%100%100%100%
UAlbertaBot50.51%0%9%18%0%0%45%64%36%18%18%45%36%55%73%82%64%27%82%100%45%82%45%82%82%64%91%100%
Aiur47.47%0%45%0%45%0%9%45%36%64%73%45%36%9%27%82%82%73%27%18%91%0%82%82%82%73%91%64%
IceBot44.41%0%0%0%0%9%18%36%9%9%0%0%82%100%18%18%36%82%33%55%64%91%73%91%91%100%82%100%
Skynet47.30%0%9%0%36%27%55%36%45%36%45%18%27%9%36%18%64%27%20%64%100%82%100%27%100%100%91%100%
KillAll48.15%0%64%64%27%0%55%18%9%18%9%18%18%64%73%27%18%73%73%100%45%100%91%91%55%73%27%91%
MegaBot44.64%0%9%11%27%18%10%40%40%36%30%27%18%18%18%73%67%80%27%45%78%45%70%50%90%91%100%100%
Xelnaga42.42%0%18%0%45%0%0%36%55%36%45%9%73%64%0%82%45%36%0%55%91%36%0%82%55%82%100%100%
Overkill32.54%0%0%0%18%18%9%82%0%9%0%27%27%27%55%9%36%0%55%22%9%27%64%73%55%82%91%82%
Juno32.32%0%36%9%36%45%0%9%0%0%0%27%45%0%18%100%9%18%0%55%64%73%9%27%73%73%73%73%
GarmBot28.72%0%0%0%0%0%0%0%0%9%0%0%27%0%55%18%27%0%9%30%100%36%91%100%0%100%82%91%
Myscbot22.71%36%0%0%18%0%20%0%18%9%27%18%9%9%18%18%9%73%9%50%18%27%73%0%45%9%82%18%
HannesBredberg28.72%0%0%0%45%0%0%9%0%9%73%9%45%0%18%18%9%0%45%10%45%45%27%100%55%73%91%45%
Sling13.80%0%0%9%0%0%0%27%0%0%0%0%0%0%36%27%0%0%27%9%18%18%27%0%91%27%55%0%
ForceBot15.49%0%0%9%36%0%9%0%0%0%18%0%0%0%9%9%18%9%73%0%0%9%27%18%18%9%45%100%
Ziabot12.88%0%0%0%0%0%0%0%0%9%0%0%0%0%0%36%0%0%9%0%0%18%27%9%82%55%100%0%

These tables surface tons of details, many of which are hard to interpret. For example, ZZZKBot shows different patterns of upsets on different maps, suggesting that ZZZKBot’s strategy selection was a little fragile and sometimes got exploited.

LetaBot hated the map Fortress, doing poorly against most opponents. It apparently failed to cope with something about the map. Myscbot liked the 2-player maps Benzene and Destination (but for some reason not Heartbreak Ridge). The tables reveal that it is because Myscbot upset specific opponents on these maps in particular. Something narrow and specific about the maps and strategies aligned for Myscbot.

I will poke at some of the bots to tease out their secrets. Maybe that will reveal the meaning behind some of the mysterious numbers.

Next: Looking at ZZZKBot.

CIG 2017 bots x maps

How well did each bot do on each map? This table is nice and compact and easy to read conclusions out of. Hitchhiker is a 2 player map and a complex one. Alchemist and Tau Cross are 3 players. Andromeda and Python are 4 players.

overallHitchhAlchemTauCroAndromPython
ZZZKBot75.43%81%76%73%73%75%
tscmoo73.50%78%69%73%74%73%
PurpleWave66.51%82%70%56%57%67%
LetaBot62.75%62%58%63%68%62%
UAlbertaBot61.67%63%65%60%61%59%
MegaBot61.06%55%66%64%60%61%
Overkill59.65%66%59%59%57%57%
CasiaBot58.32%62%61%59%55%55%
Ziabot58.49%66%59%55%57%56%
Iron58.11%5%60%77%75%74%
AIUR56.73%61%56%57%55%55%
McRave47.20%9%49%62%62%54%
Tyr45.32%52%42%44%46%43%
SRbotOne45.24%54%41%43%44%44%
TerranUAB38.58%47%40%33%39%33%
Bonjwa33.04%44%33%32%27%30%
Bigeyes30.90%35%30%29%28%33%
OpprimoBot31.90%37%33%30%30%29%
Sling26.07%23%27%24%25%32%
Salsa9.52%19%7%6%7%8%

If one bot loses on a given map, then another bot has to win. The BWEM blowouts on Hitchhiker lift the other numbers in that column about equally. It’s striking that the top 3 finishers all liked Hitchhiker above the other maps. Maybe it’s a sign that map smarts make a difference? Well, ZZZKBot presumably liked Hitchhiker because the map has a short rush distance, and PurpleWave may have gotten a similar effect if it used its probe rush on the map. But UAlbertaBot got no boost from the map, although it plays rushes.

I noted earlier that PurpleWave struggled surprisingly on Tau Cross and Andromeda, and that MegaBot did not like Hitchhiker. It’s also notable that LetaBot did not like Alchemist and McRave did not like Python.

Next: The bayeselo ratings.

CIG 2017 crosstables per map

CIG 2017 was played on only 5 maps. In my view, that’s not enough maps for fairness, but the advantage is that each map is played enough times that the crosstables have ample data. Each cell in these tables represents 25 games (minus the missing games, of course).

(2)Hitchhiker

overallZZZKtscmPurpLetaUAlbMegaOverCasiZiabIronAIURMcRaTyrSRboTerrBonjBigeOpprSlinSals
ZZZKBot80.80%76%0%96%88%68%92%40%68%92%100%96%92%92%84%92%84%92%96%88%
tscmoo78.27%24%96%80%56%76%64%48%52%100%71%96%76%92%96%92%96%88%92%92%
PurpleWave82.07%100%4%52%80%96%88%84%60%100%96%100%96%84%88%68%80%92%96%96%
LetaBot62.37%4%20%48%60%32%88%88%72%96%33%92%52%12%76%84%96%44%92%96%
UAlbertaBot63.08%12%44%20%40%28%56%40%68%92%62%100%52%68%96%92%60%100%80%88%
MegaBot54.97%32%24%4%68%72%72%28%72%100%42%100%32%88%88%12%17%96%16%80%
Overkill66.03%8%36%12%12%44%28%68%80%96%96%92%36%80%92%96%92%96%92%100%
CasiaBot61.95%60%52%16%12%60%72%32%32%96%67%92%64%16%44%92%96%84%92%100%
Ziabot65.61%32%48%40%28%32%28%20%68%96%71%96%68%76%76%92%92%96%88%100%
Iron4.65%8%0%0%4%8%0%4%4%4%0%32%4%0%4%4%0%4%4%4%
AIUR60.88%0%29%4%67%38%58%4%33%29%100%92%75%83%88%92%91%96%88%92%
McRave8.88%4%4%0%8%0%0%8%8%4%68%8%12%0%12%20%0%8%0%4%
Tyr51.90%8%24%4%48%48%68%64%36%32%96%25%88%16%44%64%72%64%88%96%
SRbotOne54.22%8%8%16%88%32%12%20%84%24%100%17%100%84%28%48%92%76%100%92%
TerranUAB47.47%16%4%12%24%4%12%8%56%24%96%12%88%56%72%76%88%56%96%100%
Bonjwa43.76%8%8%32%16%8%88%4%8%8%96%8%80%36%52%24%83%76%96%100%
Bigeyes34.76%16%4%20%4%40%83%8%4%8%100%9%100%28%8%12%17%17%88%96%
OpprimoBot37.21%8%12%8%56%0%4%4%16%4%96%4%92%36%24%44%24%83%92%100%
Sling22.57%4%8%4%8%20%84%8%8%12%96%12%100%12%0%4%4%12%8%24%
Salsa18.57%12%8%4%4%12%20%0%0%0%96%8%96%4%8%0%0%4%0%76%

(3)Alchemist

overallZZZKtscmPurpLetaUAlbMegaOverCasiZiabIronAIURMcRaTyrSRboTerrBonjBigeOpprSlinSals
ZZZKBot76.00%48%44%44%88%84%80%28%76%100%92%68%84%72%84%88%92%96%84%92%
tscmoo69.26%52%92%84%48%52%68%24%64%64%40%68%64%76%96%84%68%92%84%96%
PurpleWave70.32%56%8%40%72%76%88%56%40%64%88%80%96%72%84%56%96%92%76%96%
LetaBot57.89%56%16%60%36%32%48%68%56%64%32%96%48%72%64%60%64%40%92%96%
UAlbertaBot65.05%12%52%28%64%44%80%72%72%56%76%56%44%56%76%92%80%88%96%92%
MegaBot66.11%16%48%24%68%56%52%36%56%60%72%44%44%92%96%100%96%96%100%100%
Overkill58.53%20%32%12%52%20%48%72%44%76%44%32%44%88%92%92%92%80%84%88%
CasiaBot60.84%72%76%44%32%28%64%28%32%88%64%52%68%32%40%92%84%88%72%100%
Ziabot58.74%24%36%60%44%28%44%56%68%72%52%16%60%72%76%80%84%80%68%96%
Iron59.58%0%36%36%36%44%40%24%12%28%92%96%56%88%96%84%92%92%88%92%
AIUR55.79%8%60%12%68%24%28%56%36%48%8%32%84%88%92%88%60%88%88%92%
McRave48.63%32%32%20%4%44%56%68%48%84%4%68%84%60%12%24%96%4%92%92%
Tyr41.89%16%36%4%52%56%56%56%32%40%44%16%16%20%44%52%64%56%56%80%
SRbotOne41.05%28%24%28%28%44%8%12%68%28%12%12%40%80%32%80%92%12%60%92%
TerranUAB40.21%16%4%16%36%24%4%8%60%24%4%8%88%56%68%76%56%60%64%92%
Bonjwa33.05%12%16%44%40%8%0%8%8%20%16%12%76%48%20%24%44%80%56%96%
Bigeyes29.89%8%32%4%36%20%4%8%16%16%8%40%4%36%8%44%56%76%56%96%
OpprimoBot33.26%4%8%8%60%12%4%20%12%20%8%12%96%44%88%40%20%24%64%88%
Sling26.53%16%16%24%8%4%0%16%28%32%12%12%8%44%40%36%44%44%36%84%
Salsa7.37%8%4%4%4%8%0%12%0%4%8%8%8%20%8%8%4%4%12%16%

(3)Tau Cross

overallZZZKtscmPurpLetaUAlbMegaOverCasiZiabIronAIURMcRaTyrSRboTerrBonjBigeOpprSlinSals
ZZZKBot72.84%28%60%28%84%80%96%12%72%28%84%92%92%92%92%92%88%92%88%84%
tscmoo72.84%72%88%88%64%64%52%64%68%40%60%60%60%76%80%92%80%100%88%88%
PurpleWave56.21%40%12%40%48%56%88%36%36%36%88%12%92%56%80%52%100%56%48%92%
LetaBot63.16%72%12%60%72%56%72%88%76%68%56%28%52%56%72%64%68%44%88%96%
UAlbertaBot59.79%16%36%52%28%32%52%68%84%8%56%76%40%64%96%88%72%80%88%100%
MegaBot63.58%20%36%44%44%68%64%40%60%20%48%48%60%72%96%100%88%100%100%100%
Overkill59.37%4%48%12%28%48%36%36%92%12%48%84%44%80%100%88%92%96%84%96%
CasiaBot58.95%88%36%64%12%32%60%64%36%4%64%52%84%24%76%76%92%64%92%100%
Ziabot54.95%28%32%64%24%16%40%8%64%8%52%24%52%84%80%96%80%100%92%100%
Iron77.47%72%60%64%32%92%80%88%96%92%84%28%48%84%92%88%96%96%92%88%
AIUR57.26%16%40%12%44%44%52%52%36%48%16%76%72%80%80%92%60%88%88%92%
McRave62.32%8%40%88%72%24%52%16%48%76%72%24%48%92%96%88%56%88%100%96%
Tyr44.42%8%40%8%48%60%40%56%16%48%52%28%52%20%56%56%48%60%52%96%
SRbotOne42.95%8%24%44%44%36%28%20%76%16%16%20%8%80%32%64%100%48%56%96%
TerranUAB33.05%8%20%20%28%4%4%0%24%20%8%20%4%44%68%72%52%84%56%92%
Bonjwa31.79%8%8%48%36%12%0%12%24%4%12%8%12%44%36%28%64%76%72%100%
Bigeyes29.26%12%20%0%32%28%12%8%8%20%4%40%44%52%0%48%36%44%60%88%
OpprimoBot29.68%8%0%44%56%20%0%4%36%0%4%12%12%40%52%16%24%56%84%96%
Sling24.21%12%12%52%12%12%0%16%8%8%8%12%0%48%44%44%28%40%16%88%
Salsa5.89%16%12%8%4%0%0%4%0%0%12%8%4%4%4%8%0%12%4%12%

(4)Andromeda

overallZZZKtscmPurpLetaUAlbMegaOverCasiZiabIronAIURMcRaTyrSRboTerrBonjBigeOpprSlinSals
ZZZKBot72.84%44%64%20%84%72%92%36%56%60%92%68%76%76%92%84%84%96%92%96%
tscmoo74.32%56%84%84%60%72%64%44%76%44%88%68%68%68%92%92%76%92%88%96%
PurpleWave56.63%36%16%32%40%72%88%40%28%12%60%20%72%80%88%68%92%60%84%88%
LetaBot68.42%80%16%68%84%72%92%84%68%76%64%56%48%44%68%84%80%32%84%100%
UAlbertaBot61.47%16%40%60%16%20%60%72%76%28%48%88%56%80%84%88%76%92%76%92%
MegaBot60.00%28%28%28%28%80%48%36%48%20%36%52%60%72%80%100%100%96%100%100%
Overkill57.47%8%36%12%8%40%52%48%88%24%72%48%40%84%92%88%96%88%84%84%
CasiaBot54.53%64%56%60%16%28%64%52%40%20%36%36%64%44%36%80%96%84%80%80%
Ziabot57.26%44%24%72%32%24%52%12%60%36%68%32%52%64%88%92%80%88%76%92%
Iron74.74%40%56%88%24%72%80%76%80%64%76%56%60%88%88%88%96%92%96%100%
AIUR54.95%8%12%40%36%52%64%28%64%32%24%48%64%76%72%96%80%84%68%96%
McRave62.11%32%32%80%44%12%48%52%64%68%44%52%40%88%96%80%68%92%96%92%
Tyr45.68%24%32%28%52%44%40%60%36%48%40%36%60%28%28%48%44%72%52%96%
SRbotOne43.79%24%32%20%56%20%28%16%56%36%12%24%12%72%40%64%100%44%84%92%
TerranUAB38.74%8%8%12%32%16%20%8%64%12%12%28%4%72%60%76%68%72%72%92%
Bonjwa26.95%16%8%32%16%12%0%12%20%8%12%4%20%52%36%24%52%44%56%88%
Bigeyes27.79%16%24%8%20%24%0%4%4%20%4%20%32%56%0%32%48%76%56%84%
OpprimoBot30.32%4%8%40%68%8%4%12%16%12%8%16%8%28%56%28%56%24%88%92%
Sling24.63%8%12%16%16%24%0%16%20%24%4%32%4%48%16%28%44%44%12%100%
Salsa7.37%4%4%12%0%8%0%16%20%8%0%4%8%4%8%8%12%16%8%0%

(4)Python

overallZZZKtscmPurpLetaUAlbMegaOverCasiZiabIronAIURMcRaTyrSRboTerrBonjBigeOpprSlinSals
ZZZKBot74.68%64%16%76%68%80%92%40%62%48%96%92%76%76%88%88%80%96%88%92%
tscmoo72.84%36%92%76%40%72%76%52%68%44%84%80%76%64%96%84%76%96%72%100%
PurpleWave67.37%84%8%48%68%68%92%56%40%64%80%44%88%76%92%60%84%72%60%96%
LetaBot61.89%24%24%52%56%52%80%84%76%72%68%56%72%28%68%68%84%44%80%88%
UAlbertaBot58.95%32%60%32%44%24%60%48%48%24%60%76%36%68%88%92%76%76%88%88%
MegaBot60.63%20%28%32%48%76%40%44%68%20%24%56%52%80%92%100%84%96%92%100%
Overkill56.84%8%24%8%20%40%60%52%76%8%64%52%44%88%92%92%92%96%72%92%
CasiaBot55.37%60%48%44%16%52%56%48%28%24%80%64%72%28%40%68%96%56%84%88%
Ziabot55.91%38%32%60%24%52%32%24%72%24%48%28%68%68%76%84%76%84%80%92%
Iron73.89%52%56%36%28%76%80%92%76%76%92%68%56%84%92%84%92%96%84%84%
AIUR54.95%4%16%20%32%40%76%36%20%52%8%72%76%80%80%92%68%96%84%92%
McRave53.89%8%20%56%44%24%44%48%36%72%32%28%36%84%88%84%40%88%96%96%
Tyr42.74%24%24%12%28%64%48%56%28%32%44%24%64%36%52%68%16%64%40%88%
SRbotOne44.21%24%36%24%72%32%20%12%72%32%16%20%16%64%44%48%100%36%76%96%
TerranUAB33.47%12%4%8%32%12%8%8%60%24%8%20%12%48%56%84%52%64%36%88%
Bonjwa29.68%12%16%40%32%8%0%8%32%16%16%8%16%32%52%16%64%60%44%92%
Bigeyes32.84%20%24%16%16%24%16%8%4%24%8%32%60%84%0%48%36%84%28%92%
OpprimoBot29.05%4%4%28%56%24%4%4%44%16%4%4%12%36%64%36%40%16%68%88%
Sling32.42%12%28%40%20%12%8%28%16%20%16%16%4%60%24%64%56%72%32%88%
Salsa8.42%8%0%4%12%12%0%8%12%8%16%8%4%12%4%12%8%8%12%12%

observations

The difficult maps are Hitchhiker, which has complex map features that bots are not ready for and which BWEM apparently does not support, and Alchemist, which has 2 entrances into each base, a nonstandard strategic feature. Sure enough, on Hitchhiker we see that BWEM users #10 Iron and #12 McRave were virtually helpless. #6 MegaBot suffered to a lesser extent. Other extreme results on Hitchhiker: #3 PurpleWave blanked #1 ZZZKBot with 100% wins, a surprise since Hitchhiker is a 2 player map with a short rush distance which should favor the 4 pool. I guess the defensible narrow path between bases made up for that. Then PurpleWave got smashed by #2 tscmoo with 4% wins. The map also brought #20 Salsa most of its wins, with plus scores versus #10 Iron and #12 McRave and, in a surprise, #19 Sling; on every other map, Salsa lost heavily in all matchups. It’s not the same syndrome as the BWEM users, though.

Alchemist is a 3 player map with a circular path all the way around the map which passes through each base. Out one of your base entrances is the short path to your enemy’s base, and out the other entrance is the long path. You get a natural expansion outside each entrance. It’s bad for bots which want to set up one defensive line, whether by walling the ramp or cannoning the natural, because the enemy can bypass the defenses. It favors bots which reason about map topology and distances—if there are any. Comparing across maps, we see that the map cost Iron (which makes a wall at the ramp or at the natural) over 20% win rate and cost #12 McRave perhaps half as much. #3 PurpleWave, #5 UAlbertaBot, and #6 MegaBot did well on the map. I’m not sure why PurpleWave liked the map. I don’t think any of the bots does much map analysis; most bots were not much affected by the nonstandard map, probably because they are blind to its possibilities.

Curiously, #3 PurpleWave had some trouble on Tau Cross and Andromeda. Those maps are also played on SSCAIT, so I expected PurpleWave would be well tuned for them.

There’s a lot more in these crosstables, but that’s enough for now.

Next: What would have happened without Hitchhiker and Alchemist?

choosing tournament maps

I doubt anyone will take my advice, and I certainly won’t take it myself, so I can offer it with complete freedom. Here’s what I would take into account in choosing maps if I were running a tournament.

Balance. You want the maps to be fair across races. We can’t use statistics from pro games to judge balance, because bot balance and pro balance are unrelated. Also bots are improving rapidly and the participant pools are small, plus we may choose some new maps in each tournament, so past tournament statistics are not too helpful for balance either. But the same graph I linked above, showing that bot balance and pro balance are different, also shows that bots have narrower imbalances. Or to say it differently: The maps may have imbalances, but bots suck at exploiting the imbalances. Choose enough maps, and the balance differences will average out statistically; it’s the same principle as balancing a portfolio of stocks. The 5 maps of CIG 2017 are not enough to convince me, but the 10 maps of AIIDE are probably enough.

Number of starting positions. For this year, maps were chosen like this:

tournament2 player3 player4 player
CIG1 (20%)2 (40%)2 (40%)
AIIDE3 (30%)2 (20%)5 (50%)
SSCAIT3 (21%)2 (14%)9 (64%)

Those all seem reasonable to me. I like SSCAIT’s ratios best. 2 player maps favor rush strategies and 4 player maps favor macro strategies, and you don’t want to emphasize either too much. One issue is that there aren’t many good 3 player maps (though the best ones are quite good).

Novelty versus consistency. If you carry some maps over from year to year, we can use them to (at least try to) measure balance changes and progress. If you introduce new maps, you pose a stronger test of adaptability. If I were choosing, I would pick some old standbys and a few unusual maps that the bots might not have played on before (or else run specialized tournaments and do both separately). CIG has done a good job of this, though I think it’s only a side effect of their process and not a deliberate decision.

Prodding bots to improve. Since bots are poor at exploiting map features, I want to include some maps with exploitable features to encourage authors to step up. Think of Iron failing on the map Hitchhiker at CIG 2017 because (as the author explained) BWEM did not grasp all the map features; do you think Iron will fail the same way next year? I proposed the map Namja Iyagi, which has 6 islands, as a map with exploitable features which is still playable by bots that do not understand islands. PurpleFistJadian suggested Outsider, which has the exploitable feature of pushing units through mineral lines and remains playable without. There are a lot of choices; the universe of pro maps is large.

No appearance of cheating. Sometimes the tournament organizers participate in the tournament. When not, the organizers may have a real or apparent interest in some participants: “Bot X uses method Y, which I’ve been pushing. So if X does well....” To avoid controversy, we may want map selection to make favoritism visibly difficult. So divide your universe of maps into classes depending on the other goals, and choose randomly from each class. We’ve seen the procedure of accepting a number from each participant, XORing the numbers together, and using that as the random number seed for a known generator, so that the process is transparent and tamper-resistant. It has never been clear to me whether the organizers actually follow the elaborate process. We often see map pools reused from year to year, probably to save time. Well, if there are no suspicions, then there is no reason to allay them. I have no reason to suspect that the tournaments are unfair, even unintentionally.

some bugs are very strange

Steamhammer has a particularly weird bug on the map Jade. Jade is a 4-player map with bases in the corners. Each base is on low ground, surrounded by a ring of high ground. A ramp leads up to the natural at one end of the ring of high ground, and at the other end of the ring is a third base.

the map Jade

If Steamhammer starts in the lower left base, then it is unable to take its third on the high ground. A drone on its way to start the third will travel most of the way there, then turn around and go home. BuildingManager then sends another drone, which behaves the same, and so on forever. Starting at a different location is OK. Taking the third of another start location is OK. Only that specific start location has trouble with taking that specific base.

The bug has affected Steamhammer since early days. I’ve never looked into the cause because it only comes up 1/4 of the time on 1/14 of the maps. It’s a game-losing bug, but low on the list. Presumably some detail of the map, or maybe some error in BWTA, is triggering a mistaken decision.

It’s such a surprising bug that I thought it deserved its own post. Maybe somebody has an idea about the cause? I could be mistaken, but I vaguely recall that I’ve seen other bots with the same error.

In the meantime, Steamhammer lost against Roman Danielis today by starting off strongly. Roman Danielis repeatedly tried to take its natural, and Steamhammer repeatedly stopped the nexus from warping in. The strategy boss mistakenly went into a panic, “Oh no, the enemy just took a ton of bases, I’d better make a ton of drones to catch up!” Steamhammer made all drones and no combat units and lost. Now that’s a bug I’ll dig into.

AIIDE 2016 - upsets by map

I counted the number of upsets in the crosstables for each map. An upset is when a lower-ranked player defeats one who ends up at a higher rank. On any given map you should expect more upsets than in the tournament overall, which sums over the maps and smooths out differences.

mapupsets
(2)Benzene32
(2)Destination16
(2)HeartbreakRidge36
(3)Aztec29
(3)TauCross33
(4)Andromeda32
(4)CircuitBreaker37
(4)EmpireoftheSun33
(4)Fortress36
(4)Python30

I expected that more standard maps would have fewer upsets, but it didn’t turn out that way. Less standard Heartbreak Ridge is the only map to tease me by acting as if I understood. I’m a little surprised by the high upset counts on standard Circuit Breaker and Fortress and the lower counts on less standard Aztec. I am very surprised that Destination has half the upsets of other maps! I can’t explain it.

Another theory you might try is: Many bots are tuned on SSCAIT, so SSCAIT maps might show more solid play and fewer upsets. The non-SSCAIT maps here are only Aztec and Fortress, which don’t support the hypothesis (though there’s little evidence either way).

I thought that per-map upset rate might be a way to measure the strategic fragility of bots on maps that they weren’t tuned for, but it may also measure code fragility. Look into yesterday’s crosstables to see where today’s totals came from. Heartbreak Ridge has many upsets not so much because bots weren’t ready for it, but because NUSBot wasn’t ready for it. LetaBot could not defend Fortress. Only Circuit Breaker’s high rate of upsets was not helped along by any single bot—and Circuit Breaker is as standard as they come. So we’re not learning as much about map characteristics as about bot characteristics.

Can anybody explain why Destination was more stable and less upset-prone than other maps? That’s the big mystery here.

AIIDE 2016 - crosstables per map

AIIDE 2016 crosstables for each map in the tournament. First, the whole tournament crosstable, for reference. It should match the one on the official results page, though for some reason some of the overall win percentages differ in the second decimal (by a trivial amount). The official results are correct, so I may have some floating point error accumulation (an off-by-one error would cause a bigger discrepancy).

AIIDE 2016overallIronZZZKtscmLetaUAlbXimpOverAiurMegaIceBJiaBXelnSkynGarmNUSBTerrSRboCimeOritCruzTyr
Iron87.44%23%84%87%86%99%88%96%68%98%81%91%57%100%96%100%99%98%100%100%100%
ZZZKBot85.05%77%50%51%77%98%39%87%92%93%46%100%94%100%100%100%98%100%100%100%100%
tscmoo82.71%16%50%43%42%91%97%80%90%99%91%87%83%100%98%100%100%99%89%100%100%
LetaBot74.00%13%49%57%66%68%94%34%52%84%88%39%62%93%93%92%99%99%97%100%100%
UAlbertaBot70.37%14%23%58%34%76%42%80%47%77%71%100%79%81%83%99%86%59%99%100%100%
Ximp64.54%1%2%9%32%24%52%81%67%7%96%62%98%94%91%98%92%96%92%97%100%
Overkill61.93%12%61%3%6%58%48%30%34%79%52%24%62%94%97%96%98%94%92%100%100%
Aiur61.26%4%13%20%66%20%19%70%53%79%53%56%86%87%44%88%96%92%88%91%100%
MegaBot58.42%32%8%10%48%53%33%66%47%49%42%32%78%47%91%94%83%89%84%91%90%
IceBot57.43%2%7%1%16%23%93%21%21%51%56%36%61%61%100%100%100%99%100%100%100%
JiaBot57.25%19%54%9%12%29%4%48%47%58%44%49%37%98%89%90%82%99%86%91%100%
Xelnaga56.98%9%0%13%61%0%38%76%44%68%64%51%42%2%99%100%92%94%89%96%100%
Skynet55.03%43%6%17%38%21%2%38%14%22%39%63%58%100%39%100%100%100%100%100%100%
GarmBot42.52%0%0%0%7%19%6%6%13%53%39%2%98%0%84%84%100%93%47%99%100%
NUSBot27.46%4%0%2%7%17%9%3%56%9%0%11%1%61%16%57%34%61%81%30%90%
TerranUAB27.39%0%0%0%8%1%2%4%12%6%0%10%0%0%16%43%90%73%88%96%99%
SRbotOne22.46%1%2%0%1%14%8%2%4%17%0%18%8%0%0%66%10%53%88%57%100%
Cimex20.50%2%0%1%1%41%4%6%8%11%1%1%6%0%7%39%27%47%59%51%99%
Oritaka19.51%0%0%11%3%1%8%8%12%16%0%14%11%0%53%19%12%12%41%68%100%
CruzBot16.75%0%0%0%0%0%3%0%9%9%0%9%4%0%1%70%4%43%49%32%100%
Tyr1.11%0%0%0%0%0%0%0%0%10%0%0%0%0%0%10%1%0%1%0%0%

Now each of the 10 maps. Each cell represents only 9 games, occasionally fewer when games are missing.

(2)BenzeneoverallIronZZZKtscmLetaUAlbXimpOverAiurMegaIceBJiaBXelnSkynGarmNUSBTerrSRboCimeOritCruzTyr
Iron95.00%89%100%78%100%100%78%100%89%100%89%100%78%100%100%100%100%100%100%100%100%
ZZZKBot73.89%11%22%11%78%100%11%11%89%100%67%100%78%100%100%100%100%100%100%100%100%
tscmoo83.33%0%78%22%44%100%100%78%89%100%100%78%78%100%100%100%100%100%100%100%100%
LetaBot81.67%22%89%78%67%67%100%44%33%100%100%44%89%100%100%100%100%100%100%100%100%
UAlbertaBot64.80%0%22%56%33%44%22%88%44%78%67%100%78%78%89%89%67%56%89%100%100%
Ximp59.22%0%0%0%33%56%25%11%78%11%100%44%100%100%33%100%100%100%89%100%100%
Overkill68.93%22%89%0%0%78%75%22%44%89%78%22%100%89%100%89%100%100%89%100%100%
Aiur72.07%0%89%22%56%12%89%78%78%67%78%78%89%100%33%100%89%89%100%89%100%
MegaBot56.11%11%11%11%67%56%22%56%22%22%44%22%89%56%100%89%78%100%100%67%100%
IceBot60.00%0%0%0%0%22%89%11%33%78%67%33%100%67%100%100%100%100%100%100%100%
JiaBot52.78%11%33%0%0%33%0%22%22%56%33%67%56%100%67%100%89%100%89%78%100%
Xelnaga56.67%0%0%22%56%0%56%78%22%78%67%33%67%0%100%100%100%89%89%78%100%
Skynet45.81%22%22%22%11%22%0%0%11%11%0%44%33%100%11%100%100%100%100%100%100%
GarmBot42.78%0%0%0%0%22%0%11%0%44%33%0%100%0%78%100%100%100%67%100%100%
NUSBot31.11%0%0%0%0%11%67%0%67%0%0%33%0%89%22%22%33%67%100%11%100%
TerranUAB27.22%0%0%0%0%11%0%11%0%11%0%0%0%0%0%78%100%56%89%89%100%
SRbotOne20.56%0%0%0%0%33%0%0%11%22%0%11%0%0%0%67%0%44%100%22%100%
Cimex22.78%0%0%0%0%44%0%0%11%0%0%0%11%0%0%33%44%56%67%89%100%
Oritaka14.44%0%0%0%0%11%11%11%0%0%0%11%11%0%33%0%11%0%33%56%100%
CruzBot21.23%0%0%0%0%0%0%0%11%33%0%22%22%0%0%89%11%78%11%44%100%
Tyr0.00%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%
(2)DestinationoverallIronZZZKtscmLetaUAlbXimpOverAiurMegaIceBJiaBXelnSkynGarmNUSBTerrSRboCimeOritCruzTyr
Iron91.67%22%89%67%89%100%100%100%78%100%89%100%100%100%100%100%100%100%100%100%100%
ZZZKBot89.44%78%56%56%100%100%44%100%100%100%67%100%89%100%100%100%100%100%100%100%100%
tscmoo85.47%11%44%44%67%100%89%67%100%100%89%100%100%100%100%100%100%100%100%100%100%
LetaBot84.44%33%44%56%67%89%100%56%89%100%78%78%100%100%100%100%100%100%100%100%100%
UAlbertaBot68.33%11%0%33%33%56%11%78%78%78%67%100%100%89%89%100%78%67%100%100%100%
Ximp70.00%0%0%0%11%44%78%100%78%11%89%89%100%100%100%100%100%100%100%100%100%
Overkill63.89%0%56%11%0%89%22%44%67%78%67%33%56%78%89%100%100%89%100%100%100%
Aiur61.67%0%0%33%44%22%0%56%67%67%33%100%100%89%56%100%100%78%89%100%100%
MegaBot50.56%22%0%0%11%22%22%33%33%11%67%22%89%11%89%89%100%89%100%100%100%
IceBot60.56%0%0%0%0%22%89%22%33%89%56%33%89%89%100%100%100%89%100%100%100%
JiaBot56.67%11%33%11%22%33%11%33%67%33%44%67%22%100%78%89%78%100%100%100%100%
Xelnaga51.11%0%0%0%22%0%11%67%0%78%67%33%67%11%100%100%78%100%89%100%100%
Skynet46.67%0%11%0%0%0%0%44%0%11%11%78%33%100%44%100%100%100%100%100%100%
GarmBot43.89%0%0%0%0%11%0%22%11%89%11%0%89%0%67%78%100%100%100%100%100%
NUSBot35.00%0%0%0%0%11%0%11%44%11%0%22%0%56%33%89%100%78%78%67%100%
TerranUAB24.44%0%0%0%0%0%0%0%0%11%0%11%0%0%22%11%89%78%78%89%100%
SRbotOne21.79%0%0%0%0%22%0%0%0%0%0%22%22%0%0%0%11%78%100%78%100%
Cimex17.78%0%0%0%0%33%0%11%22%11%11%0%0%0%0%22%22%22%67%33%100%
Oritaka13.89%0%0%0%0%0%0%0%11%0%0%0%11%0%0%22%22%0%33%78%100%
CruzBot12.78%0%0%0%0%0%0%0%0%0%0%0%0%0%0%33%11%22%67%22%100%
Tyr0.00%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%
(2)Heartbreak RidgeoverallIronZZZKtscmLetaUAlbXimpOverAiurMegaIceBJiaBXelnSkynGarmNUSBTerrSRboCimeOritCruzTyr
Iron88.89%22%89%89%89%100%100%100%33%100%89%78%89%100%100%100%100%100%100%100%100%
ZZZKBot87.78%78%78%67%78%100%44%100%100%100%11%100%100%100%100%100%100%100%100%100%100%
tscmoo80.56%11%22%44%56%78%100%67%89%100%89%89%89%100%100%100%100%100%78%100%100%
LetaBot72.22%11%33%56%78%44%100%22%11%89%100%0%100%100%100%100%100%100%100%100%100%
UAlbertaBot70.00%11%22%44%22%56%44%89%56%78%56%100%89%100%100%100%67%67%100%100%100%
Ximp73.33%0%0%22%56%44%67%100%78%11%100%89%100%100%100%100%100%100%100%100%100%
Overkill51.18%0%56%0%0%56%33%0%12%83%22%12%22%100%100%89%89%89%88%100%100%
Aiur68.89%0%0%33%78%11%0%100%67%100%78%78%100%78%100%78%100%100%78%100%100%
MegaBot54.19%67%0%11%89%44%22%88%33%100%44%22%11%44%100%100%100%100%22%89%0%
IceBot54.80%0%0%0%11%22%89%17%0%0%56%11%89%89%100%100%100%100%100%100%100%
JiaBot58.33%11%89%11%0%44%0%78%22%56%44%44%22%100%100%100%67%100%89%89%100%
Xelnaga60.89%22%0%11%100%0%11%88%22%78%89%56%67%0%100%100%100%100%89%89%100%
Skynet56.11%11%0%11%0%11%0%78%0%89%11%78%33%100%100%100%100%100%100%100%100%
GarmBot38.33%0%0%0%0%0%0%0%22%56%11%0%100%0%100%78%100%100%11%89%100%
NUSBot0.00%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%
TerranUAB30.56%0%0%0%0%0%0%11%22%0%0%0%0%0%22%100%89%78%100%89%100%
SRbotOne22.22%0%0%0%0%33%0%11%0%0%0%33%0%0%0%100%11%44%67%44%100%
Cimex21.67%0%0%0%0%33%0%11%0%0%0%0%0%0%0%100%22%56%56%56%100%
Oritaka28.49%0%0%22%0%0%0%12%22%78%0%11%11%0%89%100%0%33%44%44%100%
CruzBot20.79%0%0%0%0%0%0%0%0%11%0%11%11%0%11%100%11%56%44%56%100%
Tyr10.06%0%0%0%0%0%0%0%0%100%0%0%0%0%0%100%0%0%0%0%0%
(3)AztecoverallIronZZZKtscmLetaUAlbXimpOverAiurMegaIceBJiaBXelnSkynGarmNUSBTerrSRboCimeOritCruzTyr
Iron91.11%11%78%89%100%100%89%100%89%100%89%89%89%100%100%100%100%100%100%100%100%
ZZZKBot85.56%89%56%44%89%100%44%78%89%100%22%100%100%100%100%100%100%100%100%100%100%
tscmoo81.67%22%44%22%56%78%100%67%89%100%100%100%67%100%89%100%100%100%100%100%100%
LetaBot78.33%11%56%78%44%89%100%33%56%100%100%11%100%100%89%100%100%100%100%100%100%
UAlbertaBot65.56%0%11%44%56%100%11%44%56%56%89%100%78%56%89%100%89%33%100%100%100%
Ximp62.78%0%0%22%11%0%67%100%67%0%78%89%100%89%100%89%78%78%100%89%100%
Overkill60.00%11%56%0%0%89%33%22%11%100%56%11%67%89%100%100%100%100%56%100%100%
Aiur63.89%0%22%33%67%56%0%78%67%44%44%67%89%89%67%89%89%100%89%89%100%
MegaBot60.00%11%11%11%44%44%33%89%33%67%22%11%89%56%100%100%100%89%100%89%100%
IceBot59.44%0%0%0%0%44%100%0%56%33%44%33%100%78%100%100%100%100%100%100%100%
JiaBot60.00%11%78%0%0%11%22%44%56%78%56%56%56%89%78%89%100%100%100%78%100%
Xelnaga57.78%11%0%0%89%0%11%89%33%89%67%44%33%0%100%100%100%89%100%100%100%
Skynet48.89%11%0%33%0%22%0%33%11%11%0%44%67%100%44%100%100%100%100%100%100%
GarmBot45.00%0%0%0%0%44%11%11%11%44%22%11%100%0%100%100%100%100%44%100%100%
NUSBot22.22%0%0%11%11%11%0%0%33%0%0%22%0%56%0%11%22%44%89%33%100%
TerranUAB27.78%0%0%0%0%0%11%0%11%0%0%11%0%0%0%89%89%67%89%89%100%
SRbotOne23.89%0%0%0%0%11%22%0%11%0%0%0%0%0%0%78%11%67%100%78%100%
Cimex24.44%0%0%0%0%67%22%0%0%11%0%0%11%0%0%56%33%33%78%78%100%
Oritaka16.67%0%0%0%0%0%0%44%11%0%0%0%0%0%56%11%11%0%22%78%100%
CruzBot15.00%0%0%0%0%0%11%0%11%11%0%22%0%0%0%67%11%22%22%22%100%
Tyr0.00%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%
(3)Tau CrossoverallIronZZZKtscmLetaUAlbXimpOverAiurMegaIceBJiaBXelnSkynGarmNUSBTerrSRboCimeOritCruzTyr
Iron86.67%22%100%89%67%100%89%89%44%100%78%67%89%100%100%100%100%100%100%100%100%
ZZZKBot83.80%78%44%12%89%100%22%89%100%100%44%100%100%100%100%100%89%100%100%100%100%
tscmoo84.44%0%56%44%78%89%89%100%100%100%100%78%89%100%100%100%100%100%67%100%100%
LetaBot76.70%11%88%56%78%44%100%44%33%89%100%22%89%88%100%100%100%100%100%100%100%
UAlbertaBot67.22%33%11%22%22%44%56%78%22%67%67%100%78%100%56%100%100%89%100%100%100%
Ximp70.56%0%0%11%56%56%56%78%67%11%100%78%100%100%100%100%100%100%100%100%100%
Overkill59.78%11%78%11%0%44%44%22%33%56%33%44%44%100%100%89%100%89%89%100%100%
Aiur61.67%11%11%0%56%22%22%78%67%89%56%67%100%78%44%67%100%100%78%89%100%
MegaBot63.89%56%0%0%67%78%33%67%33%56%44%33%89%56%89%100%100%89%89%100%100%
IceBot58.89%0%0%0%11%33%89%44%11%44%67%44%89%44%100%100%100%100%100%100%100%
JiaBot53.63%22%56%0%0%33%0%67%44%56%33%33%11%100%100%67%78%100%78%89%100%
Xelnaga56.11%33%0%22%78%0%22%56%33%67%56%67%22%0%100%100%100%100%67%100%100%
Skynet50.56%11%0%11%11%22%0%56%0%11%11%89%78%100%11%100%100%100%100%100%100%
GarmBot40.78%0%0%0%12%0%0%0%22%44%56%0%100%0%67%78%100%100%33%100%100%
NUSBot34.44%0%0%0%0%44%0%0%56%11%0%0%0%89%33%100%33%100%89%33%100%
TerranUAB26.67%0%0%0%0%0%0%11%33%0%0%33%0%0%22%0%100%67%67%100%100%
SRbotOne17.78%0%11%0%0%0%0%0%0%0%0%22%0%0%0%67%0%67%78%11%100%
Cimex15.56%0%0%0%0%11%0%11%0%11%0%0%0%0%0%0%33%33%56%56%100%
Oritaka25.56%0%0%33%0%0%0%11%22%11%0%22%33%0%67%11%33%22%44%100%100%
CruzBot16.11%0%0%0%0%0%0%0%11%0%0%11%0%0%0%67%0%89%44%0%100%
Tyr0.00%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%
(4)AndromedaoverallIronZZZKtscmLetaUAlbXimpOverAiurMegaIceBJiaBXelnSkynGarmNUSBTerrSRboCimeOritCruzTyr
Iron82.78%22%56%78%78%89%100%100%56%100%67%100%11%100%100%100%100%100%100%100%100%
ZZZKBot82.78%78%33%22%67%100%67%100%78%67%56%100%89%100%100%100%100%100%100%100%100%
tscmoo85.56%44%67%44%33%89%100%100%89%89%100%78%78%100%100%100%100%100%100%100%100%
LetaBot81.11%22%78%56%89%78%100%33%78%89%100%89%33%89%100%100%100%100%89%100%100%
UAlbertaBot73.33%22%33%67%11%100%56%89%33%89%78%100%78%78%89%100%89%56%100%100%100%
Ximp60.56%11%0%11%22%0%56%89%89%0%100%67%89%78%100%100%78%100%44%78%100%
Overkill62.78%0%33%0%0%44%44%44%44%78%78%67%44%100%100%100%89%89%100%100%100%
Aiur55.56%0%0%0%67%11%11%56%33%89%56%44%78%78%11%89%100%100%89%100%100%
MegaBot57.22%44%22%11%22%67%11%56%67%22%33%56%78%33%78%100%78%89%89%89%100%
IceBot57.22%0%33%11%11%11%100%22%11%78%44%67%22%33%100%100%100%100%100%100%100%
JiaBot55.00%33%44%0%0%22%0%22%44%67%56%56%33%100%89%78%89%100%67%100%100%
Xelnaga45.00%0%0%22%11%0%33%33%56%44%33%44%44%0%100%100%67%67%56%89%100%
Skynet62.78%89%11%22%67%22%11%56%22%22%78%67%56%100%33%100%100%100%100%100%100%
GarmBot46.11%0%0%0%11%22%22%0%22%67%67%0%100%0%89%78%100%100%44%100%100%
NUSBot29.44%0%0%0%0%11%0%0%89%22%0%11%0%67%11%78%11%100%78%11%100%
TerranUAB28.89%0%0%0%0%0%0%0%11%0%0%22%0%0%22%22%100%100%100%100%100%
SRbotOne25.56%0%0%0%0%11%22%11%0%22%0%11%33%0%0%89%0%33%89%89%100%
Cimex17.78%0%0%0%0%44%0%11%0%11%0%0%33%0%0%0%0%67%33%56%100%
Oritaka25.56%0%0%0%11%0%56%0%11%11%0%33%44%0%56%22%0%11%67%89%100%
CruzBot15.00%0%0%0%0%0%22%0%0%11%0%0%11%0%0%89%0%11%44%11%100%
Tyr0.00%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%
(4)Circuit BreakeroverallIronZZZKtscmLetaUAlbXimpOverAiurMegaIceBJiaBXelnSkynGarmNUSBTerrSRboCimeOritCruzTyr
Iron85.00%44%100%89%89%100%67%100%67%89%78%100%11%100%78%100%89%100%100%100%100%
ZZZKBot83.33%56%67%44%56%89%44%100%89%78%44%100%100%100%100%100%100%100%100%100%100%
tscmoo79.44%0%33%22%33%100%100%89%78%100%67%89%78%100%100%100%100%100%100%100%100%
LetaBot81.67%11%56%78%67%89%100%33%89%100%100%78%33%100%100%100%100%100%100%100%100%
UAlbertaBot70.56%11%44%67%33%89%22%89%22%78%78%100%78%67%89%100%100%44%100%100%100%
Ximp56.67%0%11%0%11%11%33%56%44%0%100%44%100%89%100%89%67%78%100%100%100%
Overkill62.78%33%56%0%0%78%67%0%11%78%67%11%56%100%100%100%100%100%100%100%100%
Aiur60.56%0%0%11%67%11%44%100%44%89%22%33%89%100%44%89%89%100%100%78%100%
MegaBot64.44%33%11%22%11%78%56%89%56%67%56%33%67%67%89%100%67%89%100%100%100%
IceBot53.33%11%22%0%0%22%100%22%11%33%44%33%33%33%100%100%100%100%100%100%100%
JiaBot56.67%22%56%33%0%22%0%33%78%44%56%22%22%89%100%89%100%100%78%89%100%
Xelnaga58.33%0%0%11%22%0%56%89%67%67%67%78%22%0%100%100%89%100%100%100%100%
Skynet62.22%89%0%22%67%22%0%44%11%33%67%78%78%100%33%100%100%100%100%100%100%
GarmBot42.78%0%0%0%0%33%11%0%0%33%67%11%100%0%100%89%100%100%11%100%100%
NUSBot31.67%22%0%0%0%11%0%0%56%11%0%0%0%67%0%67%67%56%100%78%100%
TerranUAB27.22%0%0%0%0%0%11%0%11%0%0%11%0%0%11%33%89%78%100%100%100%
SRbotOne21.67%11%0%0%0%0%33%0%11%33%0%0%11%0%0%33%11%33%89%67%100%
Cimex19.44%0%0%0%0%56%22%0%0%11%0%0%0%0%0%44%22%67%22%44%100%
Oritaka17.78%0%0%0%0%0%0%0%0%0%0%22%0%0%89%0%0%11%78%56%100%
CruzBot14.44%0%0%0%0%0%0%0%22%0%0%11%0%0%0%22%0%33%56%44%100%
Tyr0.00%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%
(4)Empire of the SunoverallIronZZZKtscmLetaUAlbXimpOverAiurMegaIceBJiaBXelnSkynGarmNUSBTerrSRboCimeOritCruzTyr
Iron86.11%0%100%89%67%100%89%100%100%100%89%89%11%100%89%100%100%100%100%100%100%
ZZZKBot85.00%100%22%67%67%89%33%89%89%89%56%100%100%100%100%100%100%100%100%100%100%
tscmoo81.67%0%78%44%0%100%100%78%100%100%89%67%89%100%100%100%100%100%89%100%100%
LetaBot72.78%11%33%56%44%78%100%56%67%89%100%22%22%100%78%100%100%100%100%100%100%
UAlbertaBot76.11%33%33%100%56%100%78%100%44%78%67%100%78%67%56%100%100%33%100%100%100%
Ximp63.89%0%11%0%22%0%56%89%56%0%89%56%100%100%100%100%100%100%100%100%100%
Overkill58.33%11%67%0%0%22%44%11%33%56%56%11%78%89%100%89%100%100%100%100%100%
Aiur56.67%0%11%22%44%0%11%89%56%78%56%22%89%89%22%89%100%67%89%100%100%
MegaBot51.67%0%11%0%33%56%44%67%44%56%22%22%78%11%100%89%78%67%67%89%100%
IceBot53.33%0%11%0%11%22%100%44%22%44%33%11%22%44%100%100%100%100%100%100%100%
JiaBot60.56%11%44%11%0%33%11%44%44%78%67%67%67%100%100%100%78%100%67%89%100%
Xelnaga63.33%11%0%33%78%0%44%89%78%78%89%33%22%11%100%100%100%100%100%100%100%
Skynet59.44%89%0%11%78%22%0%22%11%22%78%33%78%100%44%100%100%100%100%100%100%
GarmBot43.89%0%0%0%0%33%0%11%11%89%56%0%89%0%89%89%100%89%22%100%100%
NUSBot27.78%11%0%0%22%44%0%0%78%0%0%0%0%56%11%44%56%44%78%11%100%
TerranUAB28.33%0%0%0%0%0%0%11%11%11%0%0%0%0%11%56%67%100%100%100%100%
SRbotOne21.11%0%0%0%0%0%0%0%0%22%0%22%0%0%0%44%33%67%89%44%100%
Cimex21.67%0%0%0%0%67%0%0%33%33%0%0%0%0%11%56%0%33%56%44%100%
Oritaka21.11%0%0%11%0%0%0%0%11%33%0%33%0%0%78%22%0%11%44%78%100%
CruzBot17.22%0%0%0%0%0%0%0%0%11%0%11%0%0%0%89%0%56%56%22%100%
Tyr0.00%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%
(4)FortressoverallIronZZZKtscmLetaUAlbXimpOverAiurMegaIceBJiaBXelnSkynGarmNUSBTerrSRboCimeOritCruzTyr
Iron81.11%0%33%100%78%100%78%89%56%89%67%100%67%100%89%100%100%78%100%100%100%
ZZZKBot88.33%100%56%100%67%100%22%100%89%100%44%100%89%100%100%100%100%100%100%100%100%
tscmoo86.11%67%44%89%33%89%100%78%78%100%89%89%78%100%89%100%100%100%100%100%100%
LetaBot39.44%0%0%11%78%0%44%0%22%0%0%22%0%56%78%22%89%89%78%100%100%
UAlbertaBot75.00%22%33%67%22%100%78%89%33%78%89%100%78%100%78%100%78%56%100%100%100%
Ximp63.89%0%0%11%100%0%22%89%44%11%100%56%89%89%78%100%100%100%89%100%100%
Overkill68.89%22%78%0%56%22%78%78%22%89%22%22%89%100%100%100%100%100%100%100%100%
Aiur55.56%11%0%22%100%11%11%22%22%78%56%33%67%78%44%89%89%100%100%78%100%
MegaBot70.00%44%11%22%78%67%56%78%78%56%33%67%89%78%89%89%89%89%89%100%100%
IceBot61.11%11%0%0%100%22%89%11%22%44%56%33%44%89%100%100%100%100%100%100%100%
JiaBot62.78%33%56%11%100%11%0%78%44%67%44%44%33%100%78%89%67%100%100%100%100%
Xelnaga56.67%0%0%11%78%0%44%78%67%33%67%56%22%0%89%100%89%100%100%100%100%
Skynet59.44%33%11%22%100%22%11%11%33%11%56%67%78%100%33%100%100%100%100%100%100%
GarmBot39.44%0%0%0%44%0%11%0%22%22%11%0%100%0%56%67%100%56%100%100%100%
NUSBot33.89%11%0%11%22%22%22%0%56%11%0%22%11%67%44%67%22%56%100%33%100%
TerranUAB29.44%0%0%0%78%0%0%0%11%11%0%11%0%0%33%33%89%56%67%100%100%
SRbotOne23.89%0%0%0%11%22%0%0%11%11%0%33%11%0%0%78%11%56%67%67%100%
Cimex23.89%22%0%0%11%44%0%0%0%11%0%0%0%0%44%44%44%44%100%22%89%
Oritaka11.67%0%0%0%22%0%11%0%0%11%0%0%0%0%0%0%33%33%0%22%100%
CruzBot18.89%0%0%0%0%0%0%0%22%0%0%0%0%0%0%67%0%33%78%78%100%
Tyr0.56%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%11%0%0%
(4)PythonoverallIronZZZKtscmLetaUAlbXimpOverAiurMegaIceBJiaBXelnSkynGarmNUSBTerrSRboCimeOritCruzTyr
Iron86.11%0%100%100%100%100%89%78%67%100%78%89%22%100%100%100%100%100%100%100%100%
ZZZKBot90.56%100%67%78%78%100%56%100%100%100%44%100%100%100%100%100%89%100%100%100%100%
tscmoo78.89%0%33%56%22%89%89%78%89%100%89%100%89%100%100%100%100%89%56%100%100%
LetaBot71.67%0%22%44%44%100%100%22%44%89%100%22%56%100%89%100%100%100%100%100%100%
UAlbertaBot72.78%0%22%78%56%67%44%56%78%89%56%100%56%78%100%100%89%89%100%100%100%
Ximp64.44%0%0%11%0%33%56%100%67%11%100%11%100%100%100%100%100%100%100%100%100%
Overkill62.22%11%44%11%0%56%44%56%56%89%44%0%67%100%78%100%100%89%100%100%100%
Aiur56.11%22%0%22%78%44%0%44%33%89%56%33%56%89%22%89%100%89%67%89%100%
MegaBot56.11%33%0%11%56%22%33%44%67%33%56%33%100%56%78%89%44%89%89%89%100%
IceBot55.56%0%0%0%11%11%89%11%11%67%89%56%22%44%100%100%100%100%100%100%100%
JiaBot56.11%22%56%11%0%44%0%56%44%44%11%33%44%100%100%100%78%89%89%100%100%
Xelnaga63.89%11%0%0%78%0%89%100%67%67%44%67%56%0%100%100%100%100%100%100%100%
Skynet58.33%78%0%11%44%44%0%33%44%0%78%56%44%100%33%100%100%100%100%100%100%
GarmBot42.22%0%0%0%0%22%0%0%11%44%56%0%100%0%100%89%100%89%33%100%100%
NUSBot28.89%0%0%0%11%0%0%22%78%22%0%0%0%67%0%89%0%67%100%22%100%
TerranUAB23.33%0%0%0%0%0%0%0%11%11%0%0%0%0%11%11%89%56%89%100%89%
SRbotOne26.11%0%11%0%0%11%0%0%0%56%0%22%0%0%0%100%11%44%100%67%100%
Cimex20.00%0%0%11%0%11%0%11%11%11%0%11%0%0%11%33%44%56%56%33%100%
Oritaka20.00%0%0%44%0%0%0%0%33%11%0%11%0%0%67%0%11%0%44%78%100%
CruzBot16.11%0%0%0%0%0%0%0%11%11%0%0%0%0%0%78%0%33%67%22%100%
Tyr0.56%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%11%0%0%0%0%

I could look at these charts all day and keep finding stuff to think about. Winner Iron was upset by ZZZKBot and scored overwhelmingly against every other bot except the two dragoon-heavy protosses MegaBot and Skynet, which earned upsets on some maps. ZZZKBot’s results fall with rush distance, closely in line with Martin Rooijacker’s explanation. LetaBot did well on most maps, but struggled on Fortress. NUSBot apparently crashed on Heartbreak Ridge, giving Tyr nearly half of its wins. Weak bot Cimex did surprisingly well against strong UAlbertaBot on every map except Tau Cross and Python. Why is that?

Rob Bogie’s MaasCraft has map problems

What is it with Rob Bogie’s SSCAIT version of MaasCraft (originally written by Dennis Soemers)? Why does it do so much better on some maps and so much worse on others, with far more variation than the rest of the bots?

I looked up MaasCraft’s results in the AIIDE 2014 and CIG 2014 competitions (it didn’t play in other years). Both map pools overlap with the SSCAIT map pool. CIG 2014 had an extra wide and diverse map pool, with some nonstandard maps, and it only overlaps a little. The overall row is across all maps in that competition, not only the ones in the table.

mapCIG 2014
win %
AIIDE 2014
win %
SSCAIT
Elo diff
Andromeda63%-361
Benzene55%+42
Circuit Breaker52%+246
Destination59%-313
Empire of the Sun61%-333
Fighting Spirit50%-418
Heartbreak Ridge61%-193
Icarus50%+291
Python60%-306
Tau Cross57%+365
overall55%59%0

I’m comparing raw win percentages with Elo differences, but the pattern is clear—I mean, the lack of pattern. The 2014 tournament results look normal, the SSCAIT results look extreme, and the two are nothing alike.

CIG 2014 and AIIDE 2014 both released source code. The MaasCraft source is exactly the same in both. It looks as though some difference or bug is affecting only the SSCAIT version under Rob Bogie.

Later today: First thoughts on the AIIDE 2016 results.

how bots like maps

I decided to analyze the maps to see how bots feel about them overall. This data is derived from yesterday’s big table of how much bots like each SSCAIT map. The “spread” column is the mean of the absolute value of the Elo deviation numbers for a given map, across all the bots. I thought of calling it “controversy”; it measures how much bots like or dislike the map. Maps that all bots do OK on get low numbers; maps that some bots love and others hate get high numbers.

The “RMS” column is the root mean square of the same data. Statistically, it’s a fairer measure of the differences. It’s bigger because it puts more weight on outliers. The two measures don’t agree closely.

Destination is the most “controversial” map, with 60 Elo spread. If you pick one bot that likes Destination and one bot that dislikes it, on average the bot that likes it will have a 60 Elo advantage, which means a 59% win rate if the bots are otherwise even—nothing devastating. Neo Moon Glaive has Elo spread 41 or about 56% advantage, not much different. Even if you go with the RMS number, the peak 81 Elo RMS difference means a 61% win rate, still not much different.

mapspreadRMS
Benzene4557
Destination6078
HeartbreakRidge5381
NeoMoonGlaive4153
TauCross5174
Andromeda4970
CircuitBreaker5469
EmpireoftheSun5069
FightingSpirit5172
Icarus4660
Jade5064
LaMancha1.14965
Python4760
Roadrunner4663

Bottom line: On this analysis, the maps don’t seem to be distorting the competition. No highly “controversial” maps are introducing widespread unfairness.

Elo rating variations by map

From the SSCAIT data, I calculated the Elo advantage or disadvantage that each bot sees on each map. If it played all its games on that map, its Elo would change by that much. More or less; there isn’t as much data, so the advantage numbers are less accurate than the original Elo. I increased the Elo K factor to account for the smaller amount of data.

The 14 active maps:

  • (2)Benzene.scx
  • (2)Destination.scx
  • (2)HeartbreakRidge.scx
  • (3)NeoMoonGlaive.scx
  • (3)TauCross.scx
  • (4)Andromeda.scx
  • (4)CircuitBreaker.scx
  • (4)EmpireoftheSun.scm
  • (4)FightingSpirit.scx
  • (4)Icarus.scm
  • (4)Jade.scx
  • (4)LaMancha1.1.scx
  • (4)Python.scx
  • (4)Roadrunner.scx

The Elo ratings are repeated from the original post. I dropped 5 bots of the 103 for lack of data. The top number in each colored cell is the advantage or disadvantage that bot sees when playing on that map, in Elo points. You can look up winning rates for a given advantage in the Elo table. The bottom number is the count of games. Some bots have few games, like the new ZerGreenBot. A few bots have not played on every map, and get “-” instead of numbers.

botEloBenzDestHearNeoMTauCAndrCircEmpiFighIcarJadeLaMaPythRoadearliestlatest
krasi02163
2128
53
164
57
169
26
146
7
159
18
143
26
126
-76
144
-35
158
-73
140
-31
158
23
156
-63
155
-6
156
72
154
2015 Nov 302016 Sep 27
Iron bot2081
1990
139
141
-15
144
47
134
-35
157
53
140
-34
133
-79
129
-36
142
17
145
-12
142
17
148
1
150
-78
137
15
148
2015 Nov 272016 Sep 26
Marian Devecka2065
4117
-57
320
-18
255
70
303
-12
287
-37
322
104
273
45
285
-22
297
23
301
-41
289
-72
309
28
310
26
284
-38
282
2014 Oct 292016 Sep 27
Martin Rooijackers2011
6449
-25
462
56
473
-67
478
0
450
40
477
44
449
88
478
-37
458
-15
463
42
480
-156
446
0
429
31
475
-2
431
2014 Oct 292016 Sep 27
tscmooz1991
4972
-23
380
120
354
-20
323
-52
316
50
354
-50
393
21
354
-9
341
-78
370
43
364
-6
354
29
377
-54
328
29
364
2015 Feb 272016 Sep 27
tscmoo1978
5682
-8
359
44
355
-15
438
39
389
27
445
30
402
12
447
-14
420
-97
410
53
408
-70
385
29
397
41
396
-71
431
2015 Jan 222016 Sep 27
LetaBot CIG 20161932
444
120
26
33
38
-126
35
5
29
-81
30
40
30
-12
33
-64
26
100
23
2
29
-92
35
14
37
35
45
27
28
2016 Aug 012016 Sep 27
WuliBot1871
984
-9
73
-58
83
66
56
77
77
-32
68
14
59
-22
71
36
84
12
64
-21
64
54
80
-37
67
-55
68
-26
70
2016 Apr 192016 Sep 26
Simon Prins1867
5400
-20
388
-25
410
51
381
67
432
19
356
-18
412
-110
374
97
376
-21
396
-25
385
95
375
-54
324
17
373
-73
418
2015 Jan 252016 Sep 27
ICELab1865
6078
-21
441
-69
442
73
458
-127
377
-52
447
-17
398
-2
455
3
440
-13
425
-25
471
49
421
34
437
72
435
96
431
2014 Oct 292016 Sep 27
FlashTest1863
204
-71
13
-106
12
-117
13
149
22
94
18
31
14
-121
15
2
20
78
15
-57
10
79
13
59
13
4
12
-23
14
2016 Mar 222016 Jul 27
Sijia Xu1849
2313
22
171
30
155
19
182
-8
166
-2
148
-49
164
19
166
-25
165
-45
138
24
171
36
161
-72
153
51
201
0
172
2015 Oct 102016 Sep 27
LetaBot SSCAI 2015 Final1813
416
-10
28
83
31
-41
22
31
34
15
27
-223
37
199
28
-44
29
-96
33
-44
36
-32
27
1
29
79
25
81
30
2016 Aug 042016 Sep 27
Dave Churchill1804
6023
-29
473
200
428
-82
436
18
413
19
433
-74
412
-50
417
72
429
47
445
-68
396
-53
408
100
438
-46
455
-53
440
2014 Oct 292016 Sep 27
Chris Coxe1800
2195
31
153
188
169
66
153
-106
165
-25
149
-79
149
-34
166
-7
167
-18
153
115
146
-124
153
-114
154
114
156
-8
162
2015 Sep 032016 Sep 27
Tomas Vajda1790
6088
-2
441
9
439
21
441
-77
449
-14
443
-18
421
34
398
-7
458
55
422
17
425
61
440
-80
424
-6
439
7
448
2014 Oct 292016 Sep 27
Flash1777
991
-19
70
-163
65
16
59
7
68
-70
59
-12
85
3
76
72
69
23
69
64
87
71
84
-25
61
30
75
3
64
2016 Apr 182016 Sep 27
LetaBot IM noMCTS1766
1226
61
79
127
88
-116
83
39
106
85
87
-114
93
-106
89
-24
93
-28
89
58
93
-66
70
18
86
-2
92
68
78
2016 May 182016 Aug 01
Zia bot1757
536
54
36
-63
40
15
39
-22
41
50
39
-63
43
93
42
-7
34
20
36
-78
33
-58
30
-55
40
66
39
48
44
2016 Jul 072016 Sep 27
A Jarocki1741
932
20
63
121
66
125
62
-42
72
-48
74
18
53
-104
78
74
81
25
76
-93
59
-110
64
-39
55
52
67
3
62
2015 Oct 042016 Jan 26
PeregrineBot1728
1262
-21
104
94
89
-28
95
123
76
-133
90
77
95
-4
77
10
85
-67
94
-32
83
-51
94
11
90
14
103
9
87
2016 Feb 092016 Sep 10
tscmoop1721
1982
155
139
56
145
47
140
50
127
-7
130
53
154
-68
127
13
141
-17
140
-54
171
-59
128
-44
158
-51
148
-74
134
2015 Nov 112016 Sep 26
Andrew Smith1718
6160
63
460
-37
387
46
445
-10
457
-11
452
33
449
-21
463
89
480
22
441
-58
455
-25
445
-29
418
-58
400
-3
408
2014 Oct 292016 Sep 27
Florian Richoux1716
5970
-35
408
-107
425
120
441
42
411
-43
446
-46
443
37
397
152
468
66
416
-25
451
46
433
-90
410
-29
391
-88
430
2014 Oct 292016 Sep 27
Carsten Nielsen1695
4683
-19
361
27
341
-65
334
33
315
-21
330
-1
319
-27
353
53
336
88
369
-35
318
6
318
-78
282
26
340
12
367
2015 Mar 172016 Sep 27
Soeren Klett1687
6002
39
459
35
426
-12
420
63
396
-108
440
39
481
-20
402
-25
451
-4
454
36
433
-63
407
-19
406
71
410
-32
417
2014 Oct 292016 Sep 27
Vaclav Horazny1686
4140
33
291
78
291
-17
302
18
295
-22
274
-46
332
33
290
-31
308
4
284
-38
270
58
313
-96
315
25
296
2
279
2014 Oct 292015 Nov 18
La Nuee1662
558
-66
36
41
24
81
40
100
35
57
44
-11
41
-82
44
-21
36
50
52
-7
34
-78
43
-11
36
68
55
-121
38
2015 Dec 132016 Mar 18
Jakub Trancik1657
6136
102
427
79
454
1
434
-32
443
-64
445
-10
459
-16
438
-106
424
18
439
-35
413
-23
404
-40
463
63
445
63
448
2014 Oct 292016 Sep 27
Marek Suppa1655
4397
61
322
78
334
1
330
14
321
-48
304
-59
328
-88
315
-6
291
25
336
56
326
6
292
-25
300
-41
302
25
296
2015 Jan 052016 Mar 18
Krasimir Krystev1653
4292
-24
322
-59
283
92
304
49
298
8
327
-56
295
-51
296
-43
318
-76
326
-9
318
-24
280
132
318
-58
299
117
308
2014 Oct 292016 Mar 10
ASPbot20111652
222
-22
21
-178
17
-27
12
-13
17
98
20
154
11
-29
13
87
17
17
10
75
14
-59
17
-135
15
21
18
11
20
2015 Jan 292016 Feb 25
Marcin Bartnicki1633
1377
59
97
43
106
63
88
-54
110
-33
109
-20
110
-21
92
-46
96
-20
97
-12
92
53
92
-38
99
75
102
-48
87
2014 Nov 282016 Mar 18
Tomas Cere1631
6131
-27
446
-41
419
-2
444
-46
443
109
459
14
448
2
429
2
424
48
433
-24
442
-69
417
49
480
-12
426
-2
421
2014 Oct 292016 Sep 27
MegaBot1630
419
-22
29
27
27
6
34
36
27
-27
26
-21
25
-28
21
-1
28
44
41
64
28
-18
37
-2
37
-66
34
9
25
2016 Aug 012016 Sep 27
Aurelien Lermant1622
3673
-30
258
-8
249
15
268
-32
247
30
260
-37
287
-46
250
-73
266
87
262
38
253
51
255
80
285
-20
261
-53
272
2015 Jun 222016 Sep 27
Matej Kravjar1619
983
-29
69
22
67
-96
75
16
71
-266
75
12
65
78
73
74
79
-25
59
20
75
82
75
68
58
105
78
-60
64
2014 Oct 292015 Feb 18
Daniel Blackburn1605
4591
-61
327
-83
332
74
337
8
326
-8
306
66
330
-56
354
-26
350
74
327
-23
312
17
311
-3
319
-10
345
31
315
2014 Oct 292016 Jan 26
Gabriel Synnaeve1584
18
-3
1
-38
3
31
1
24
1
-26
2
-
-
19
1
-
-5
2
13
1
13
2
-9
2
-19
2
2015 Jan 302015 Nov 24
David Milec1566
49
-
-11
5
48
2
-47
4
-73
4
9
4
-2
3
-26
6
-13
2
16
4
25
3
31
5
70
5
-26
2
2015 Jan 132015 Jan 20
Odin20141565
5602
-60
416
-40
377
16
396
-40
399
-38
400
42
402
-45
380
-68
401
-29
424
58
416
52
393
66
411
14
365
73
422
2014 Dec 212016 Sep 11
Gaoyuan Chen1559
5106
-18
387
-40
348
-20
357
-64
387
59
379
48
352
-18
330
75
359
2
391
-24
362
-53
383
33
371
18
345
1
355
2015 Feb 102016 Sep 27
Henri Kumpulainen1553
881
62
75
-128
64
37
68
51
64
-23
69
33
69
-48
58
15
67
-36
62
22
74
27
48
1
58
-11
54
-1
51
2016 Jan 132016 May 31
Martin Dekar1533
2627
-58
195
14
186
25
189
5
196
-105
168
-27
189
73
178
-3
206
30
174
18
207
72
202
-9
166
-53
201
17
170
2014 Oct 292016 Jan 25
Serega1505
3802
-35
280
104
257
131
262
51
260
-3
278
26
261
-23
275
-114
285
-76
276
6
270
-4
268
-1
279
-100
291
38
260
2015 Jan 312016 Jan 26
Chris Ayers1481
1520
-34
115
-40
124
11
112
-28
106
0
106
-72
111
65
88
69
105
38
113
-52
117
49
109
-44
89
-44
102
82
123
2015 Aug 102016 Jan 26
Nathan a David1481
991
13
57
0
61
-91
77
31
88
-7
65
-34
75
-23
72
103
61
68
65
43
72
-26
78
-110
70
-34
64
68
86
2016 Feb 232016 Aug 08
DAIDOES1471
485
131
36
39
32
47
31
-27
30
1
28
-25
42
123
39
-159
28
29
44
32
34
-64
34
-80
36
-51
30
5
41
2016 Jun 132016 Sep 08
Igor Lacik1454
5852
19
420
48
399
13
447
-28
408
-38
375
31
418
-95
461
111
418
-28
386
-9
442
12
415
-54
405
26
429
-7
429
2014 Oct 292016 Sep 08
Matej Istenik1449
6054
-63
412
18
457
44
458
12
421
-20
429
-9
435
-109
417
-4
472
8
458
88
382
-3
414
8
426
-2
456
33
417
2014 Oct 292016 Sep 27
EradicatumXVR1443
4539
-41
340
18
324
62
309
66
319
-14
322
-5
315
60
322
-90
303
-24
331
-39
330
11
340
24
311
19
347
-47
326
2014 Nov 042016 Jan 23
Tomasz Michalski1432
433
6
29
34
30
-109
34
-35
23
142
27
30
40
-16
27
-92
31
174
32
-54
44
-5
23
12
31
-24
28
-63
34
2015 Dec 222016 Mar 18
Oleg Ostroumov1431
1345
10
92
38
83
63
69
-33
116
74
96
22
98
60
96
-1
116
101
109
-82
80
-104
97
-89
90
80
102
-138
101
2014 Oct 292016 Jan 26
NUS Bot1426
3333
78
216
-20
210
-525
233
64
236
29
249
25
221
-19
257
100
241
23
257
-39
254
133
240
104
232
36
257
11
230
2015 May 192016 Sep 06
Martin Pinter1425
1580
53
114
-54
110
69
108
7
110
-44
122
0
123
8
101
77
108
-60
97
26
131
-31
139
61
112
-53
95
-59
110
2014 Oct 292015 Dec 11
Roman Danielis1417
2945
-82
222
35
209
23
198
18
206
-9
202
13
221
89
202
-5
206
38
207
10
200
-18
225
-32
211
-29
226
-50
210
2014 Oct 292016 Sep 26
ZerGreenBot1416
36
-
-21
3
-13
3
-6
2
13
3
42
2
-29
3
8
1
6
1
-73
5
45
4
-7
4
36
4
0
1
2016 Sep 222016 Sep 27
Marek Kadek1413
5246
41
406
75
382
8
392
5
385
-28
383
-24
357
-12
369
-62
394
-49
359
-24
367
18
379
37
350
18
348
-3
375
2014 Oct 292016 May 22
Ian Nicholas DaCosta1404
2928
-38
217
-31
210
55
214
29
213
-134
222
-62
192
5
193
10
218
-17
205
-18
213
73
233
-47
199
90
186
84
213
2015 Apr 272016 Sep 08
AwesomeBot1403
473
-19
32
-24
31
-11
32
-23
49
20
29
149
29
-18
26
-3
30
9
53
-67
36
4
36
33
30
-12
32
-39
28
2016 Jun 162016 Sep 08
Radim Bobek1390
1151
-85
70
11
96
-36
68
54
77
-39
94
-95
81
-11
78
0
89
184
87
43
91
61
70
-58
75
-72
100
44
75
2015 Oct 012016 Mar 06
Adrian Sternmuller1375
4379
8
316
78
313
-85
330
-74
321
73
325
79
335
73
287
-42
315
-59
330
69
293
-115
288
33
331
-109
305
72
290
2014 Oct 302016 Jul 22
Martin Strapko1366
1144
-55
98
-2
103
-21
82
12
65
-6
83
88
89
20
73
-51
76
23
72
69
80
-57
81
-108
80
50
81
38
81
2014 Oct 292016 Jan 26
Maja Nemsilajova1363
4117
73
301
-73
292
73
322
7
309
31
298
-51
302
-77
269
-10
290
76
264
-36
302
-82
299
14
309
44
270
10
290
2014 Nov 042015 Nov 29
Johan Kayser1361
413
-58
24
153
19
22
33
-50
29
-2
29
27
36
-156
19
-150
28
-59
40
66
28
21
27
128
28
26
42
34
31
2016 Jul 292016 Sep 27
UPStarcraftAI1360
600
-16
43
56
48
6
41
45
48
11
36
12
43
-76
56
22
40
-28
44
52
37
37
43
23
32
-47
40
-98
49
2015 Dec 242016 Apr 13
Martin Vlcak1353
1210
-49
68
-83
97
-51
81
-26
86
-25
98
-31
87
88
60
119
94
35
79
-24
102
16
90
45
90
33
83
-46
95
2016 Feb 162016 Sep 07
Johannes Holzfuss1351
674
-46
52
98
39
24
36
59
51
-42
47
-27
54
-73
57
92
64
-82
49
-6
33
-4
57
-82
52
80
44
8
39
2016 Mar 052016 Jun 15
Vojtech Jirsa1350
2759
-87
212
-79
182
32
200
-8
207
-127
205
6
174
49
184
83
211
27
199
-30
186
79
207
117
193
31
214
-93
185
2015 Jan 122015 Sep 05
JompaBot1349
1043
-151
67
107
78
-180
70
-44
67
-52
83
81
61
95
88
1
83
71
75
82
80
-9
70
-72
77
68
73
2
71
2016 Feb 042016 Aug 13
Rob Bogie1346
651
42
48
-313
54
-193
38
135
45
365
49
-361
47
246
38
-333
43
-418
52
291
55
273
45
298
43
-306
40
274
54
2016 May 142016 Sep 06
Christoffer Artmann1344
395
30
25
-123
23
14
22
57
29
-45
31
-155
22
-36
27
-52
34
143
30
109
32
28
41
-17
31
-51
26
99
22
2016 Aug 072016 Sep 27
Marek Gajdos1331
1370
2
91
-102
100
90
95
-13
102
-139
99
93
87
42
81
39
107
-78
107
-30
106
-7
97
9
94
79
101
15
103
2016 Jan 302016 Sep 11
Travis Shelton1314
1212
38
72
-4
78
77
84
-31
80
-1
70
47
90
-25
105
2
92
-27
100
-30
104
-9
93
44
86
-87
82
5
76
2016 Feb 282016 Sep 06
Peter Dobsa1307
3015
27
213
26
205
-45
218
-71
199
-19
215
82
228
-4
232
81
197
58
212
-28
224
-32
207
42
204
-65
237
-54
224
2015 Jan 112015 Oct 02
VeRLab1304
888
-75
65
-5
52
-16
64
25
75
-20
56
-27
63
84
51
-6
79
42
71
57
77
99
51
6
52
-32
54
-131
78
2016 Feb 282016 Aug 01
Bjorn P Mattsson1295
4432
18
303
75
328
48
340
-4
303
-20
307
39
302
6
333
-26
317
12
304
-58
315
-96
326
-50
345
113
280
-57
329
2015 Apr 052016 Sep 27
Lukas Sedlacek1293
63
48
3
-80
10
74
3
-78
5
2
4
-14
6
-53
9
39
3
77
3
29
4
-15
2
7
3
-18
5
-20
3
2015 Jan 122015 Jan 20
Sergei Lebedinskij1293
1083
-16
59
11
71
-19
77
69
77
47
72
-97
83
70
70
46
69
3
86
-85
85
55
71
36
106
-51
74
-68
83
2015 May 282015 Sep 03
Vladimir Jurenka1278
6041
-87
429
-66
435
-33
454
-28
432
-15
402
11
438
44
453
77
435
-96
443
33
406
15
467
77
435
57
413
10
399
2014 Nov 042016 Sep 27
neverdieTRX1272
334
65
29
-3
27
56
21
-9
26
-38
19
13
20
-82
27
-50
28
44
26
-159
27
67
21
35
25
-3
24
62
14
2016 Jul 192016 Sep 10
OpprimoBot1256
1994
8
131
-23
138
14
144
122
146
70
143
-8
160
33
131
30
153
-70
135
-88
134
38
140
1
149
-93
139
-35
151
2015 Nov 182016 Sep 27
Marek Kruzliak1255
399
-1
31
-92
35
66
23
-46
27
146
28
111
27
-123
23
112
25
-43
36
-99
32
80
26
15
30
-25
25
-101
31
2014 Nov 282015 Jan 20
Sungguk Cha1250
697
-9
47
-38
46
34
54
-148
40
50
52
-62
51
130
48
-23
41
-3
65
-63
51
117
43
76
48
-44
61
-17
50
2016 Jun 052016 Sep 27
Jacob Knudsen1247
1244
-13
79
-32
89
92
99
-20
89
36
81
34
75
70
87
-87
88
-77
81
-5
99
55
87
-7
103
3
94
-47
93
2016 Feb 232016 Sep 10
Ludmila Nemsilajova1228
409
52
27
15
21
13
22
74
25
-90
27
-9
27
65
46
-71
37
-51
32
-75
28
1
30
-24
29
58
30
43
28
2014 Nov 282015 Jan 21
Karin Valisova1226
1067
159
84
-42
86
-11
71
-2
72
-28
74
0
79
-62
68
-40
76
6
72
-16
66
4
68
-29
85
31
82
31
84
2014 Nov 042016 Jan 26
HoangPhuc1209
300
-54
28
-46
32
25
22
3
16
83
21
-88
24
-21
16
51
20
-52
24
56
17
-70
25
-27
15
-37
25
178
15
2016 Jul 182016 Sep 07
Sebastian Mahr1182
1191
-2
67
-61
89
-18
83
-34
96
14
71
118
74
95
87
25
81
25
79
-13
97
-63
94
-40
89
17
97
-61
87
2016 Jan 132016 Aug 08
Jan Pajan1179
997
-15
85
58
71
14
64
-49
77
14
67
37
72
-61
78
2
61
-29
67
-19
70
-77
91
52
72
21
62
53
60
2014 Nov 042016 Jan 05
Pablo Garcia Sanchez1174
579
26
33
11
53
-28
42
-74
33
3
45
35
39
84
34
-49
43
52
39
26
37
24
50
-21
46
-37
51
-51
34
2015 Dec 242016 Apr 13
Ivana Kellyerova1131
1499
-59
115
-89
113
2
99
-20
113
71
111
38
108
-39
95
-6
99
19
125
30
92
53
106
-54
110
-5
97
60
116
2014 Nov 042015 Apr 01
Lucia Pivackova1090
717
-69
50
-1
53
-32
55
20
50
94
41
-13
58
-25
47
23
42
-57
47
39
49
-42
55
-32
50
48
59
46
61
2014 Oct 302015 Jan 20
Tae Jun Oh1036
138
43
11
21
8
-7
10
-40
7
96
8
-18
9
95
6
-35
9
-90
17
129
7
-40
14
-95
11
-21
9
-38
12
2016 Mar 222016 Apr 11
Denis Ivancik1022
418
-65
37
46
30
-23
25
-34
26
109
29
78
21
-26
36
96
26
-90
43
4
28
-35
27
-28
18
-43
34
11
38
2014 Nov 282015 Jan 20
ButcherBoy970
422
38
21
38
23
-68
32
-30
35
-43
34
100
31
46
29
-40
29
-6
35
-40
31
-49
34
128
23
7
30
-81
35
2016 Jun 212016 Sep 06
Jon W964
790
-30
58
47
66
-100
62
6
59
83
45
27
67
4
52
-44
50
7
60
35
47
-9
57
79
49
-66
62
-39
56
2015 Apr 302015 Jul 09
Matyas Novy885
1693
77
103
-76
132
-60
133
-69
122
-2
110
5
120
1
107
67
119
110
104
-59
145
-20
122
66
126
-83
124
44
126
2015 Feb 042015 Jul 09

There are some interesting things to see in the chart, but first look at Rob Bogie! That’s the bot MaasCraft. All the bots have preferences, some have strong preferences, but MaasCraft loves some maps and hates others. Why is that? If it could be made to love all the maps....

map balance - bot balance in CIG 2016

CIG 2016 reported its results in the same format as AIIDE 2015 (I’m sure they used the same software), so I was able to compute the map balance with a few adjustments to my script. The tournament was run in two halves, qualifiers and finals, each with 100 rounds. With 5 maps, that makes 20 times through the map pool. They could have used twice as many maps without any disadvantage that I see.

The qualifiers, with 16 bots playing 12,000 games total (minus a few lost to errors):

mapTvZZvPPvT
winsnwinsnwinsn
(2)RideofValkyries.scx49%64061%24057%480
(3)Alchemist.scm50%64045%24060%479
(3)TauCross.scx56%64043%24053%479
(4)LunaTheFinal.scx53%63747%24053%480
(4)Python.scx49%63845%24050%478
overall51%319548%120055%2396

The 3 races came out remarkably even! We already know that’s more due to the strength distribution of bots in the tournament than to the fairness of the game. The low-high spread in TvZ was 56%-49% = 7%; in ZvP 18%, and in PvT 7%. Ride of Valkyries had strikingly different ZvP results than the other maps. I don’t know why. Can anybody guess? The human balance also showed one map standing out in ZvP, but it was Alchemist.

The final, with 8 bots playing 2800 games, looks considerably different:

mapTvZZvPPvT
winsnwinsnwinsn
(2)RideofValkyries.scx54%12092%8045%120
(3)Alchemist.scm52%12079%8063%120
(3)TauCross.scx76%12065%8049%120
(4)LunaTheFinal.scx67%12084%8046%120
(4)Python.scx66%12094%8034%120
overall63%60083%40048%600

Here, protoss did poorly because the protoss bots came out on the bottom this time. It’s interesting that the middle-of-the-table zergs did more to hold down the protoss than the winning terrans (but it fits with the game storyline :-). Beyond that, I’m reluctant to draw conclusions from this smaller number of games with fewer players.

I feel vindicated: Map balance can make a difference, even though we don’t understand what the difference is!

map balance - comparing pro and bot balance

I started to think about fancy ways to normalize map balance data so that the numbers could be compared—and then I realized, who the hell cares? The data’s not good enough in the first place, at least the bot data, which is based on only 21 bots with idiosyncratic play styles and big race imbalances regardless of the maps. We can only get a general idea of the comparison anyway.

So I decided on a simple subtraction of the average from each map balance number, so that a map with average balance has normalized balance 0%. Then we can compare maps to see if they have similar relative balance for pros and bots. After normalization, TvZ > 0 means that terran did better than average on that map, and TvZ < 0 means that terran did worse.

mapTvZZvPPvT
probotprobotprobot
Benzene10.8%-2.9%-5.3%1.3%-5.1%-0.4%
Destination-1.0%-1.9%2.6%2.3%0.7%-0.4%
Heartbreak Ridge-4.7%3.1%2.2%-0.7%5.3%-3.4%
Aztec-14.3%-1.9%-4.4%1.3%11.6%-0.4%
Tau Cross-3.3%-0.9%-4.4%-0.7%-1.8%-0.4%
Andromeda-10.6%1.1%4.4%-1.7%3.8%-4.4%
Circuit Breaker-0.4%-0.9%-2.6%-1.7%-0.8%2.6%
Empire of the Sun10.9%-4.9%-4.4%-1.7%-2.7%0.6%
Fortress11.0%8.1%12.3%-0.7%-2.6%4.6%
Python1.9%1.1%-0.5%2.3%-8.0%1.6%

There’s no “overall” row because, after normalization, it’s just a row of zeroes. Also, as I mentioned, the sizes of the imbalances can’t be compared directly. A relative balance of -5% in the bot ZvP column (average balance 71%) doesn’t mean the same thing as -5% in the pro ZvP column (average balance 54.4%).

No convincing pattern is visible. The pro and bot columns have the same sign in 12 cases, which is not distinguishable from 50% (15 cases). Sometimes a pro map with a large imbalance has a large imbalance for bots too; sometimes not. Here’s a scatter chart with relative pro balance on the x-axis and relative bot balance on the y. Remember that the signs are arbitrary: We arbitrarily chose to compare TvZ rather than ZvT, so + and - were chosen arbitrarily. If your eyes think they see a pattern, flip one or two of the symbol sets around one axis or the other before you decide it’s real.

scatter chart showing the lack of relationship between map balance for pros and for bots

What does it all mean in practice? There are some maps with apparent imbalances, which means we should have map pools large enough that imbalances tend to average out. Most maps are not far from balanced, so 10 maps should be enough; the 5 maps of CIG 2016 do not seem enough. Other than that, there’s no reason to change how we select maps. We don’t know whether last year’s relative map balances will carry over to this year, when the skill of the top bots is greater and they are terran rather than zerg. The main conclusion is the same as the conclusion of all studies since the invention of science: More research is needed!