archive by month
Skip to content

new bot Stardust

New bot Stardust (here is its BASIL stats page) is a development of Locutus by another name, by the same author, Bruce Nielsen. I don’t know why the name was changed, especially since the DLL name is still Locutus.dll, the name configured in the config file is still “Locutus”, and the SSCAIT comment says “it will only play as Stardust on SSCAIT. If downloaded it will play as Locutus.” That seems like a confusing choice. It is entered as Stardust in CoG 2020, though. Locutus classic is disabled on SSCAIT.

The most immediate change is that Stardust is updated to BWAPI 4.4.0. The DLL became smaller, perhaps due to dropping libraries.

It is usually difficult to notice changes in a bot’s play by watching games; a change may be obvious if you know what to look for, but invisible if you aren’t ready to see it. Nevertheless, I watched some Locutus and Stardust games and saw an unmistakable difference: Army maneuvering has been improved from UAlbertabot-style moving back and forth along a line to tscmoo-style keeping a constant distance from the enemy front. Keeping a constant distance means that you automatically form up into a concave when possible; when combat starts, whether in attack or defense, units are able to open fire almost simultaneously, with no maneuvering into position, so you do more shooting and less moving and kill enemies faster. It’s a big change and I expect it must have been in gestation for a long time.

There are disadvantages to the tscmoo style, but overall, Stardust’s formed-up armies should outdo Locutus’s jumble of units by far. I expect Stardust to reach a higher elo.

With a big change like that, there are likely smaller changes too that I did not see. I didn’t archive a recent Locutus version to compare, so I can’t draw a final balance. Comparing with the CoG 2019 version from a year ago, I can see some of the features added in the past year: Center proxies, a dedicated squad to chase down the enemy scout, the choke (as opposed to the wall) as a building location. But I don’t think any of those are recent additions.

My forecast: We used to think Locutus was scary. Now we’ll learn better.

Cadenzie versus Locutus 5 game showmatch

Thanks to SCHNAIL we’re starting to see bot matches against strong human players. Today I write about the Cadenzie (Z) 5 game match versus Locutus from last Tuesday. It comes with an interview on Making Computer Do Things. Watch the games first if you’re interested.

Cadenzie is not a top pro; to me her play looks a little slow and awkward compared to the best. But she is very strong, and when the match was announced, I expected her to win every game. In the event, she scored 3-2. I thought all the games were one-sided: Either zerg won fairly easily, or else Locutus collected enough dragoons and was able to overpower her hydralisks with superhuman dragoon micro. In the game where Locutus chose to go zealots instead, the zealots looked wimpy; Steamhammer has had the same experience.

I also felt that the first game was the only one that Cadenzie played with 100% seriousness (and she said as much in the interview). She played a well-rehearsed build with mass hydras and drop. Locutus (lacking PurpleWave’s strategy skills) did not understand how to read her build in order to cut corners in the opening, and it fell behind (slightly behind in bot terms, “massively” behind according to Cadenzie—the distance varies by skill level!). When hydras collected outside its natural, Locutus trickled units out through the narrow opening in its wall and let them be picked off, falling further behind. The front gateway fell, and then overlord speed finished. She’d gotten overlord drop first, and she picked up hydras and put them in the protoss main, where they cleaned up with little effort. I judged that she could as easily have skipped drop and powered through the front door.

I thought the most interesting answer in the interview was “I played in a tournament before where there was a team melee relay style with a mix of progamers and beginner level players and they would take turns every 2 minutes, in a way it was most similar to that.” In other words, Locutus was extremely good at some aspects of the game, and extremely weak at others. That is similar to other games where computer programs were good enough to play humans and not good enough to win every time; for example, chess programs in the old days were superhuman at tactics and weak at strategy in a very similar way.

She repeatedly emphasized that bots need to adapt more to what they scout. I think that’s the main takeaway.

Compare Artosis versus top bots on Twitch: Notice how often Artosis says “In this build, when I see such-and-such, I do so-and-so.” Human players have extensive knowledge of how to play in specific situations, and no bot comes close. SAIDA may come closest, with its one all-purpose build and numerous reactions, but its understanding is shallow by comparison. PurpleWave I think has the greatest strategy knowledge of any bot, but it has a weak understanding of tactics. Locutus relies on its strong micro and aggressive tactics, which cover for the weaknesses in other aspects. Bots not only know less, they don’t integrate their knowledge into a theory of how the game works—they don’t understand what they know, so they a weak at drawing inferences and their adaptation ability is shallow. See for example the Artosis game versus Killerbot by Marian Devecka, where Artosis was able to guess that a third zerg base at an early timing was likely, and scouted for it specifically. In other games, he did not spend effort scouting for expansions he did not see as likely.

By the way, the last game is the best, Artosis vs McRave starting at ~2 hours in.

Filling the knowledge gap I believe will require machine learning. Writing rules and reactions by hand will take a day or two less than forever, and search will not solve all problems if it has only handmade evaluations to rely on. For Steamhammer, I’ve figured out a way to put together familiar algorithms that will execute fast, and I expect it will also learn fast (from little data) and be reasonably accurate (not amazing like deep learning, but adequate). It’s part of my strategy adaptation goal. If it works as well as I hope, I WILL CRUSH YOU PUNY MORTALS BENEATH MY STEEL THUMB BWAHAHAHAHA, or something like that. Actually the first application will be nothing more than an evaluation function to choose openings and strategies, valuable but extracting only a little of the potential, and if it’s successful then after I explain how it works everyone else will get ahead of me again. That will be good too.

AIIDE 2019 - what Locutus learned

Locutus’s game records are in almost the same format as Steamhammer’s and can be summarized by the same script. I expect it will also work for DaQin and AITP.

Where Steamhammer was set to keep 100 game records per opponent, Locutus was set to keep 200. Since there were 100 rounds in the tournament, game counts over 100 mean that pre-learned data is included in the table alongside the tournament data. If Locutus was not trained on a near-final version of the opponent, then the two could be significantly different.


#2 purplewave

openinggameswins
4GateGoon2854%
4GateGoonWithObs1662%
FakeDTRush1020%
ForgeExpand1963%
ZealotDrop12773%
5 openings20066%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Dark templar2010%50%3015%37%45%0%
Fast rush32%100%52%80%0%0%
Heavy rush63%17%126%67%0%0%
Not fast rush17186%69%15376%71%81%0%
timing#medianearlylate
gas steal attempt921:440:442:01
gas steal success15---
enemy scout1862:271:0916:11
enemy combat units1983:292:197:26
enemy air units556:504:5020:31
enemy cloaked units9311:075:1319:54


After seeing a few Locutus-PurpleWave games I got the impression that PurpleWave reacted adequately to Locutus’s trick strategy of cannoning the ramp and then dropping zealots. So I was surprised that Locutus considered it the best choice. But the overall win rate is high compared to the tournament results, so I suspect it is influenced by pre-learned data from games against a weaker version of PurpleWave.


#3 bananabrain

openinggameswins
4GateGoon1283%
ForgeExpand3784%
ZealotDrop15195%
3 openings20092%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Dark templar52%80%2814%100%40%0%
Fast rush63%100%126%83%0%0%
Heavy rush10%100%1910%89%0%0%
Not fast rush18894%92%14170%91%70%0%
timing#medianearlylate
gas steal attempt591:450:461:52
gas steal success6---
enemy scout1961:570:4610:09
enemy combat units2003:302:187:25
enemy air units2015:4113:0517:35
enemy cloaked units316:135:4616:11

#4 daqin

openinggameswins
4GateGoon1164%
FakeDTRush10%
ForgeExpand10%
ZealotDrop8787%
4 openings10083%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Dark templar99%89%2121%76%11%0%
Fast rush22%100%33%67%0%0%
Not fast rush8888%82%7676%86%74%0%
Unknown11%100%--0%0%
timing#medianearlylate
gas steal attempt261:450:451:49
gas steal success4---
enemy scout973:022:1518:05
enemy combat units1003:312:195:22
enemy air units217:4716:2319:10
enemy cloaked units917:186:029:17

#5 steamhammer

openinggameswins
4GateGoon7100%
9-9GateDefensive5100%
CannonFirst4GateGoon11100%
ForgeExpand4Gate2Archon1173%
ForgeExpand5GateGoon15595%
ForgeExpandSpeedlots1100%
PlasmaCorsairsCarriers9100%
ProxyHeavyZealotRush210%
8 openings20094%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush147%100%2613%96%57%0%
Heavy rush2613%81%5930%92%38%0%
Hydra bust42%100%2312%87%50%0%
Not fast rush15678%96%9246%98%53%0%
timing#medianearlylate
gas steal attempt0---
gas steal success0---
enemy scout1882:210:5118:45
enemy combat units1993:102:027:11
enemy air units125:405:016:14
enemy cloaked units710:025:1519:39


The numbers in the “recognized” columns of the plan table show how widely Steamhammer cast its net for a solution to Locutus.

Locutus never tried to steal the gas of a zerg. Objectively, that makes sense. In the context of bot play, I’m not so sure; many bots of all races mess up their builds in the face of a gas steal.


#6 zzzkbot

openinggameswins
9-9GateDefensive4100%
CannonAtChokeFirst4GateGoon1354%
CannonFirst4GateGoon17899%
PlasmaCorsairsCarriers1100%
PlasmaProxy2Gate4100%
5 openings20096%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush11557%97%10754%94%73%0%
Heavy rush7839%96%6633%100%54%0%
Hydra bust10%100%21%100%100%0%
Not fast rush63%100%2512%96%17%0%
timing#medianearlylate
gas steal attempt0---
gas steal success0---
enemy scout2002:250:515:58
enemy combat units1962:282:037:59
enemy air units527:535:2613:43
enemy cloaked units0---

#7 microwave

openinggameswins
9-9GateDefensive2100%
ForgeExpand4Gate2Archon367%
ForgeExpand5GateGoon14699%
ForgeExpandSpeedlots4480%
PlasmaCorsairsCarriers2100%
PlasmaProxy2Gate3100%
6 openings20094%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush5025%82%4120%98%32%0%
Heavy rush3417%100%5025%90%47%0%
Hydra bust--178%100%0%0%
Not fast rush11557%98%9146%95%57%0%
Proxy10%100%10%100%0%0%
timing#medianearlylate
gas steal attempt0---
gas steal success0---
enemy scout1952:301:0721:14
enemy combat units1983:031:477:59
enemy air units6911:195:4924:25
enemy cloaked units326:375:2113:49

#8 iron

openinggameswins
CautiousDTDrop20098%
1 openings20098%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Not fast rush136%100%6130%100%46%0%
Wall-in18794%98%13970%97%71%0%
timing#medianearlylate
gas steal attempt350:460:450:48
gas steal success11---
enemy scout1902:451:4210:46
enemy combat units2004:072:346:39
enemy air units1178:186:5513:39
enemy cloaked units1178:186:5513:39


Locutus declared an enemy-specific strategy against Iron. I’m not sure why it also had pre-learned data.


#9 xiaoyi

openinggameswins
10-15GateGoon10%
10Gate25NexusFE250%
DTDrop10%
ForgeExpand10%
Proxy2ZealotsIntoGoons3093%
ProxyDTRush16595%
6 openings20093%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Not fast rush200100%93%200100%93%100%0%
timing#medianearlylate
gas steal attempt681:171:121:50
gas steal success12---
enemy scout1943:012:1115:29
enemy combat units2004:202:296:57
enemy air units1312:597:5415:10
enemy cloaked units48:007:548:18


Proxy DT rush. That tends to confirm my picture of XiaoYi as vulnerable to tricks.


#10 mcrave

openinggameswins
4GateGoon580%
4GateGoonWithObs3100%
FakeDTRush10%
ForgeExpand250%
ZealotDrop18994%
5 openings20093%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Dark templar32%100%168%94%67%0%
Fast rush32%100%189%100%0%0%
Heavy rush21%50%52%100%0%0%
Not fast rush19296%93%16180%92%82%0%
timing#medianearlylate
gas steal attempt991:460:451:57
gas steal success2---
enemy scout1932:091:2114:38
enemy combat units2003:352:217:26
enemy air units2411:447:1920:31
enemy cloaked units6011:035:1514:25

#11 ualbertabot

openinggameswins
CannonFirst4GateGoon18899%
PlasmaProxy2Gate10100%
Proxy9-9Gate20%
3 openings20098%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Dark templar10%100%116%100%0%0%
Fast rush2312%100%2914%93%22%0%
Heavy rush4824%96%6332%100%29%0%
Not fast rush12864%99%9748%99%51%0%
timing#medianearlylate
gas steal attempt952:001:572:03
gas steal success0---
enemy scout1272:111:185:45
enemy combat units1353:222:016:54
enemy air units76:456:416:53
enemy cloaked units114:344:305:13


Locutus configured an enemy-specific strategy against UAlbertaBot. Openings other than CannonFirst4GateGoon are from pre-learned data, which was ignored in making the opening decision.


#12 aitp

openinggameswins
DTDrop66100%
ForgeExpand3397%
Turtle1100%
3 openings10099%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush22%100%77%100%0%0%
Heavy rush11%100%11%100%0%0%
Not fast rush7777%99%6262%100%62%0%
Unknown11%100%--0%0%
Wall-in1919%100%3030%97%42%0%
timing#medianearlylate
gas steal attempt430:460:451:27
gas steal success15---
enemy scout263:192:416:02
enemy combat units1003:482:017:49
enemy air units0---
enemy cloaked units0---

#13 bunkerboxer

openinggameswins
10Gate25NexusFE2195%
CannonFirst4GateGoon88100%
ForgeExpand79100%
PlasmaProxy2Gate10100%
Proxy9-9Gate20%
5 openings20098%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush178%100%2010%90%24%0%
Heavy rush3618%94%3518%100%31%0%
Not fast rush14774%99%14472%99%83%1%
Unknown--10%100%0%0%
timing#medianearlylate
gas steal attempt871:290:452:03
gas steal success16---
enemy scout1042:071:273:18
enemy combat units1132:262:018:14
enemy air units0---
enemy cloaked units0---

overall

totalPvTPvPPvZPvR
openinggameswinsgameswinsgameswinsgameswinsgameswins
10-15GateGoon10% 10%
10Gate25NexusFE2391% 2391%
4GateGoon6368% 5664% 7100%
4GateGoonWithObs1968% 1968%
9-9GateDefensive11100% 11100%
CannonAtChokeFirst4GateGoon1354% 1354%
CannonFirst4GateGoon465100% 18999% 276100%
CautiousDTDrop20098% 20098%
DTDrop6799% 6799%
FakeDTRush1217% 1217%
ForgeExpand17290% 11398% 5975%
ForgeExpand4Gate2Archon1471% 1471%
ForgeExpand5GateGoon30197% 30197%
ForgeExpandSpeedlots4580% 4580%
PlasmaCorsairsCarriers12100% 12100%
PlasmaProxy2Gate27100% 7100% 20100%
Proxy2ZealotsIntoGoons3093% 3093%
Proxy9-9Gate40% 40%
ProxyDTRush16595% 16595%
ProxyHeavyZealotRush210% 10%
Turtle1100% 1100%
ZealotDrop55488% 55488%
total220092%60097%70084%60095%30098%
openings played2285103

fun game Simplicity-Locutus

Yesterday’s game Simplicity vs Locutus on Andromeda on BASIL starts out as one of the most entertaining bot games I have seen. The pictures show some of the cool stuff that Simplicity tried—with success. Then, after a tremendous fight where each side pressed temporary advantages and maxed its army, the replay loses sync and OpenBW cannot show the last half of the game.

Queens with broodling. The Research tab shows broodling research, and there are broodlings on the ground. Simplicity made 8 queens early and even researched queen energy, and the queens paid for themselves with interest. When Locutus attacked, zerg sent out as many queens as had energy to simultaneously spawn broodlings, helping to break the attacks. It’s a simple way to coordinate the queens to get tactical results, and is more effective than the common bot approach of using the queens as attrition weapons. Simplicity’s queens eventually died to corsairs; with more careful play, they could have lived to the end of the game, because Locutus was not skilled with its corsairs.

Broodlings!

Island base with static defense. The overlord on the left has just dropped off another drone to join the miners.

Island!

Drops. Simplicity repeatedly dropped small numbers of units into the far end of Locutus’s base, and Locutus did not react properly. The drops were not decisive, but were cost-effective.

Drops!

Both sides maxed their supply, or nearly so. At that point, Locutus had better upgrades but Simplicity had a larger army. Locutus could not keep its natural safe. Luckily for protoss, it was already mined out.

Mass battles!

But Locutus had a stronger economy with more bases and a large bank of resources, and Simplicity ran out of resources. The desync hides the end of the game, which timed out after an hour. I believe that Locutus wiped out all zerg it could reach on the ground, and then had no answer for the island base. When the game timed out, BASIL gave the win to Simplicity on points. Moral: You need at least enough island skills to make air units to attack inaccessible bases.

AIIDE 2018 - what Locutus learned

The Locutusoids have learning data only slightly different from Steamhammer’s. I have run my summarizer code for CSE, BlueBlueSky, Locutus, and ISAMind, skipping DaQin because it recorded only 1 game per opponent (which tickles a bug in my code). I am thinking of posting only the Locutus results, because the others don’t hold much extra interest. Locutus plays a wider range of openings than the others (perhaps because newer bots have to restrict their scope). CSE in particular is more in the do-one-thing-well camp. Besides, all of them had high win rates against lower-ranked opponents; they did not have much to learn. I don’t see a point in piling up data about similar players.

But if people want, I can post them all. Any requests?

Locutus is the only Locutusoid to use pre-learned data. Some of the others had their own ways of preparing for known opponents. For example, CSE is configured with several enemy-specific strategies, such as DT drop against #9 Iron.

Here is a summary of the pre-learned data used by Locutus. Locutus is configured to retain at most 200 game records per opponent, so that’s as much pre-learned data as it makes sense to give it. When you give it that much, each tournament game record added at the end causes one pre-learned record to scroll off the beginning. At the end of a 100 round tournament, half the game records are retained from the pre-learned data and half are tournament games—the pre-learned data more or less dominated tournament data for decisions during the tournament.

#opponentgameswins
7DaQin3591%
9Iron20093%
10ZZZKBot20076%
14Tyr20096%
17Arrakhammer20088%
19UAlbertaBot71100%
22AIUR5196%
25AILien20096%


Here is the final data. For every opponent that has pre-learned data, much or all of the per-learned data is retained until the end.

#1 saida

openinggameswins
10-15GateGoon220%
10Gate25NexusFE297%
DTDrop326%
Proxy4GateGoon70%
Proxy4GateGoon2p30%
Proxy9-9Gate100%
6 openings1034%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Not fast rush10299%4%10299%3%99%0%
Proxy0%0%11%100%0%0%
Unknown11%0%0%0%0%0%


Locutus and the Locutusoids use “Not fast rush” as a catch-all: The enemy’s opening is not a fast rush, and it is not more precisely recognized than that.

#2 cherrypi

openinggameswins
ForgeExpand4Gate2Archon1916%
ForgeExpand5GateGoon555%
ForgeExpandSpeedlots166%
ProxyHeavyZealotRush617%
ProxyHeavyZealotRush2p757%
5 openings10312%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Heavy rush1313%23%3534%20%23%0%
Not fast rush8986%10%6866%7%64%0%
Unknown11%0%0%0%0%0%


Why are the successful proxy openings so little played? The “2p” version is played only on 2-player maps; the other version only on 3- and 4-player maps. Looking into the file by hand, I see that they were both successful from early in the tournament, so it’s not a matter of discovering them late. Perhaps the map size specialization interferes with the learning process? Perhaps they are deliberately little played to prevent the opponent from adapting? Have to read the code for this one. The proxy openings show similar numbers across other opponents, so it's not a one-off. Locutus’s learning in general does not look like it concentrates hard on playing the best-performing openings.

#3 cse

openinggameswins
2GateDTExpo30%
2GateDTRush2438%
4GateGoon4630%
Proxy4GateGoon450%
Proxy4GateGoon2p862%
Proxy9-9Gate60%
ProxyHeavyZealotRush40%
ProxyHeavyZealotRush2p250%
Turtle650%
9 openings10333%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Dark templar1010%40%2827%43%10%0%
Fast rush0%0%66%0%0%0%
Heavy rush0%0%33%100%0%0%
Not fast rush9289%33%6664%29%63%0%
Unknown11%0%0%0%0%0%

#4 bluebluesky

openinggameswins
2GateDTExpo1331%
2GateDTRush743%
4GateGoon5843%
9-9GateDefensive30%
Proxy4GateGoon1100%
Proxy4GateGoon2p2100%
Proxy9-9Gate20%
ProxyHeavyZealotRush20%
ProxyHeavyZealotRush2p10%
Turtle1429%
10 openings10338%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Dark templar6058%32%5553%31%77%0%
Not fast rush3938%51%4544%49%82%0%
Proxy33%0%33%0%67%0%
Unknown11%0%0%0%0%0%

#6 isamind

openinggameswins
2GateDTRush1771%
4GateGoon6058%
9-9GateDefensive633%
Proxy4GateGoon2100%
Proxy4GateGoon2p367%
Proxy9-9Gate10%
ProxyHeavyZealotRush20%
ProxyHeavyZealotRush2p10%
Turtle1155%
9 openings10357%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Dark templar0%0%11%100%0%0%
Fast rush55%60%77%100%20%0%
Heavy rush1313%54%77%71%15%0%
Not fast rush7876%59%8583%51%85%0%
Proxy66%33%33%100%0%0%
Unknown11%100%0%0%0%0%

#7 daqin

openinggameswins
2GateDTExpo4100%
2GateDTRush25100%
4GateGoon4498%
9-9GateDefensive1968%
Proxy4GateGoon683%
Proxy4GateGoon2p1100%
Proxy9-9Gate475%
ProxyHeavyZealotRush2100%
ProxyHeavyZealotRush2p1100%
Turtle3238%
10 openings13879%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush5137%49%4130%78%31%0%
Not fast rush8662%97%9770%79%71%0%
Unknown11%100%0%0%0%0%


Locutus scored lower versus DaQin in the tournament than in the pre-learning data. It may mean that DaQin was updated in private before the tournament. You have to expect that; I assume it is why there were only 35 games in the pre-learning data.

#8 mcrave

openinggameswins
2GateDTExpo10%
2GateDTRush2767%
4GateGoon4955%
9-9GateDefensive633%
Proxy4GateGoon367%
Proxy4GateGoon2p367%
Proxy9-9Gate10%
ProxyHeavyZealotRush450%
ProxyHeavyZealotRush2p10%
Turtle825%
10 openings10353%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Dark templar22%50%22%0%0%0%
Fast rush1313%31%1212%25%8%0%
Heavy rush1515%40%66%83%7%0%
Not fast rush7270%61%8381%57%81%0%
Unknown11%0%0%0%0%0%

#9 iron

openinggameswins
10-15GateGoon580%
10Gate25NexusFE10591%
DTDrop8991%
Proxy4GateGoon1100%
4 openings20091%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Not fast rush15276%91%7437%97%39%14%
Unknown10%100%2211%91%0%0%
Wall-in4724%91%10452%87%70%0%

#10 zzzkbot

openinggameswins
ForgeExpand4Gate2Archon786%
ForgeExpand5GateGoon9794%
ForgeExpandSpeedlots8695%
ProxyHeavyZealotRush580%
ProxyHeavyZealotRush2p540%
5 openings20092%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush6332%95%10754%91%54%0%
Heavy rush8140%90%7437%93%40%0%
Not fast rush5628%93%1910%100%9%0%

#11 steamhammer

openinggameswins
ForgeExpand4Gate2Archon1100%
ForgeExpand5GateGoon10296%
2 openings10396%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush22%100%77%100%0%0%
Heavy rush3736%100%2221%100%19%0%
Hydra bust66%67%1414%93%17%0%
Not fast rush5755%96%6058%95%61%0%
Unknown11%100%0%0%0%0%

#12 microwave

openinggameswins
ForgeExpand4Gate2Archon5100%
ForgeExpand5GateGoon8394%
ForgeExpandSpeedlots1593%
3 openings10394%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush22%100%1212%100%0%0%
Heavy rush3837%95%2322%100%21%0%
Hydra bust1817%94%1616%81%11%0%
Not fast rush4443%93%5250%94%43%0%
Unknown11%100%0%0%0%0%

#13 lastorder

openinggameswins
ForgeExpand5GateGoon10398%
1 openings10398%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Heavy rush4948%100%5856%97%55%0%
Not fast rush5351%96%4544%100%43%0%
Unknown11%100%0%0%0%0%

#14 tyr

openinggameswins
12Nexus5ZealotFECannons57100%
2GateDTExpo250%
4GateGoon103100%
9-9GateDefensive667%
Proxy9-9Gate333%
ProxyHeavyZealotRush10%
Turtle2889%
7 openings20096%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush2110%86%10%100%0%0%
Heavy rush8944%100%189%89%10%0%
Not fast rush8040%95%15075%97%54%38%
Proxy63%67%10%100%0%0%
Unknown42%100%3015%90%0%0%

#15 metabot

openinggameswins
2GateDTRush35100%
4GateGoon4789%
ProxyHeavyZealotRush2100%
Turtle14100%
4 openings9895%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Dark templar1717%88%5051%90%71%0%
Fast rush1010%100%11%100%0%0%
Heavy rush22%100%77%100%50%0%
Not fast rush6869%96%4041%100%49%0%
Unknown11%100%0%0%0%0%

#16 letabot

openinggameswins
10-15GateGoon10%
10Gate25NexusFE250%
4GateGoon475%
DTDrop9696%
4 openings10393%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Heavy rush44%75%11%100%0%0%
Not fast rush4039%98%1010%90%10%0%
Unknown22%50%0%0%0%0%
Wall-in5755%93%9289%93%89%0%

#17 arrakhammer

openinggameswins
ForgeExpand4Gate2Archon1369%
ForgeExpand5GateGoon14698%
ForgeExpandSpeedlots2580%
ProxyHeavyZealotRush1155%
ProxyHeavyZealotRush2p560%
5 openings20090%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush3718%92%2814%100%3%0%
Heavy rush8241%88%9648%89%46%0%
Naked expand126%92%63%83%25%8%
Not fast rush6934%93%6934%90%38%0%
Unknown0%0%10%100%0%0%

#18 ecgberht

openinggameswins
4GateGoon53100%
DTDrop50100%
2 openings103100%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Heavy rush5351%100%8885%100%81%0%
Not fast rush4342%100%1515%100%9%0%
Unknown77%100%0%0%0%0%

#19 ualbertabot

openinggameswins
4GateGoon63100%
9-9GateDefensive5100%
ForgeExpand5GateGoon9493%
Proxy9-9Gate12100%
4 openings17496%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Dark templar63%100%63%100%17%0%
Fast rush3420%88%2011%100%18%0%
Heavy rush5532%96%3721%100%31%9%
Hydra bust106%100%95%89%30%0%
Not fast rush6839%99%9253%93%46%6%
Proxy0%0%11%100%0%0%
Unknown11%100%95%100%0%0%

#20 ximp

openinggameswins
2GateDTRush250%
4GateGoon10195%
2 openings10394%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Not fast rush5351%96%103100%94%100%0%
Unknown5049%92%0%0%0%0%

#21 cdbot

openinggameswins
9-9GateDefensive1100%
ForgeExpand5GateGoon102100%
2 openings103100%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush55%100%1010%100%0%0%
Heavy rush4342%100%3635%100%40%5%
Hydra bust0%0%22%100%0%0%
Not fast rush5351%100%4645%100%43%8%
Proxy11%100%33%100%0%0%
Unknown11%100%66%100%0%0%

#22 aiur

openinggameswins
10-15GateGoon367%
12Nexus5ZealotFE5100%
2GateDTExpo1100%
2GateDTRush4100%
4GateGoon11496%
Proxy4GateGoon3100%
Proxy9-9Gate683%
ProxyHeavyZealotRush3100%
ProxyHeavyZealotRush2p1100%
Turtle1493%
10 openings15495%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Dark templar3019%97%3120%94%33%0%
Heavy rush3925%92%5334%98%28%0%
Naked expand138%85%32%67%23%38%
Not fast rush7247%97%5536%93%44%1%
Proxy0%0%64%100%0%0%
Unknown0%0%64%100%0%0%

#23 killall

openinggameswins
ForgeExpand5GateGoon10398%
1 openings10398%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush33%100%88%100%0%0%
Heavy rush4544%98%3837%97%22%0%
Hydra bust0%0%11%100%0%0%
Not fast rush5452%98%5654%98%41%0%
Unknown11%100%0%0%0%0%

#24 willyt

openinggameswins
10-15GateGoon8100%
10Gate25NexusFE7100%
4GateGoon64100%
DTDrop21100%
Turtle3100%
5 openings103100%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Heavy rush6765%100%6462%100%69%0%
Not fast rush3534%100%3635%100%46%0%
Proxy0%0%33%100%0%0%
Unknown11%100%0%0%0%0%

#25 ailien

openinggameswins
ForgeExpand4Gate2Archon2496%
ForgeExpand5GateGoon3397%
ForgeExpandSpeedlots12898%
ProxyHeavyZealotRush1283%
ProxyHeavyZealotRush2p3100%
5 openings20097%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Heavy rush13266%98%10150%96%57%2%
Naked expand0%0%21%100%0%0%
Not fast rush6834%96%9548%98%62%0%
Unknown0%0%21%100%0%0%

#26 cunybot

openinggameswins
ForgeExpand5GateGoon93100%
1 openings93100%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Fast rush11%100%22%100%0%0%
Heavy rush4447%100%2325%100%25%2%
Not fast rush4751%100%6570%100%72%4%
Unknown11%100%33%100%0%0%

#27 hellbot

openinggameswins
2GateDTRush20100%
4GateGoon83100%
2 openings103100%
planpredictedrecognizedaccuracy
countgameswinscountgameswinsgood?
Not fast rush4948%100%103100%100%100%0%
Unknown5452%100%0%0%0%0%

overall

totalPvTPvPPvZPvR
openinggameswinsgameswinsgameswinsgameswinsgameswins
10-15GateGoon3936% 3633% 367%
10Gate25NexusFE14374% 14374%
12Nexus5ZealotFE5100% 5100%
12Nexus5ZealotFECannons57100% 57100%
2GateDTExpo2442% 2442%
2GateDTRush16179% 16179%
4GateGoon88985% 12199% 70582% 63100%
9-9GateDefensive4659% 4052% 1100% 5100%
DTDrop28885% 28885%
ForgeExpand4Gate2Archon6968% 6968%
ForgeExpand5GateGoon101192% 91792% 9493%
ForgeExpandSpeedlots27090% 27090%
Proxy4GateGoon2759% 812% 1979%
Proxy4GateGoon2p2060% 30% 1771%
Proxy9-9Gate4547% 100% 2339% 12100%
ProxyHeavyZealotRush5456% 2045% 3462%
ProxyHeavyZealotRush2p2756% 743% 2060%
Turtle13063% 3100% 12762%
total330583%61280%120877%131189%17496%
openings played1881364

CIG 2018 - what Locutus learned

Locutus only recorded 8 games. It is configured to retain 200 game records, and I read the source code and verified that Locutus does not intentionally drop game records before the limit of 200. Recording exactly 8 games is the same problem that McRave suffered, and must be due to CIG problems. I don't know what the underlying problem was. My suspicion is that CIG organizers or tournament software may have accidentally or mistakenly cleared learning data for some bots. If that is what happened, and it happened once 8 games before the end of the tournament, it seems likely that it happened more than once. Who knows, though? The error might be somewhere else. Maybe they mistakenly shipped us data from after round 8 instead of round 125—in that case the tournament may have run normally, and only the data about it is wrong.

Locutus has prepared data for some opponents, stored in the AI directory. When Locutus finds it has no game records for a given opponent, it looks in AI to see if it has prepared data, and if so, it reads in those game records. At the end of the game, it writes out the prepared game records along with the record for the newly played game, and from then on the prepared records are treated like any others and retained unless and until the 200 record limit is passed.

How many other bots were affected by the 8 game problem?


Here is Locutus’s prepared data. Against some opponents, like McRave, Locutus picks out openings to avoid at first. If other openings don’t win either, I’m sure Locutus will come back and try these anyway. Against others, it picks out winners to try first. For some, it simply provides data. Most but not all of the prepared data is for opponents which were carried over from last year, for which pre-learning is sure to be helpful... if it is done on the same maps.

#3 mcrave

openinggameswins
12Nexus5ZealotFECannons10%
Turtle10%
2 openings20%

#6 iron

openinggameswins
DTDrop14100%
1 openings14100%

#7 zzzkbot

openinggameswins
ForgeExpand5GateGoon2100%
1 openings2100%

#11 ualbertabot

openinggameswins
4GateGoon10%
9-9GateDefensive250%
ForgeExpand5GateGoon1593%
3 openings1883%

#14 aiur

openinggameswins
4GateGoon3100%
9-9GateDefensive1100%
2 openings4100%

#16 ziabot

openinggameswins
9-9GateDefensive10%
ForgeExpand5GateGoon1100%
2 openings250%

#19 terranuab

openinggameswins
DTDrop10100%
1 openings10100%

#21 opprimobot

openinggameswins
DTDrop11100%
1 openings11100%

#22 sling

openinggameswins
ForgeExpand5GateGoon2100%
1 openings2100%

#23 srbotone

openinggameswins
DTDrop7100%
PlasmaProxy2Gate1100%
2 openings8100%

#24 bonjwa

openinggameswins
DTDrop6100%
PlasmaProxy2Gate1100%
2 openings7100%

overall

totalPvTPvPPvZPvR
openinggameswinsgameswinsgameswinsgameswinsgameswins
12Nexus5ZealotFECannons10% 10%
4GateGoon475% 3100% 10%
9-9GateDefensive450% 1100% 10% 250%
DTDrop48100% 48100%
ForgeExpand5GateGoon2095% 5100% 1593%
PlasmaProxy2Gate2100% 2100%
Turtle10% 10%
total8092%50100%667%683%1883%
openings played72423

Here is Locutus’s learned data. In every case, the number of games recorded is 8 plus the number of games in the prepared data. With only 8 games there is not much to go on, but the prepared data does seem to have helped Locutus choose successful openings.

#2 purplewave

openinggameswins
12Nexus5ZealotFECannons10%
4GateGoon10%
9-9GateDefensive580%
Proxy9-9Gate10%
4 openings850%

#3 mcrave

openinggameswins
12Nexus5ZealotFECannons10%
4GateGoon367%
Proxy9-9Gate5100%
Turtle10%
4 openings1070%

#4 tscmoo

openinggameswins
4GateGoon10%
9-9GateDefensive10%
ForgeExpand5GateGoon425%
Proxy9-9Gate250%
4 openings825%

#5 isamind

openinggameswins
4GateGoon683%
9-9GateDefensive1100%
Proxy9-9Gate1100%
3 openings888%

#6 iron

openinggameswins
DTDrop2295%
1 openings2295%

#7 zzzkbot

openinggameswins
ForgeExpand5GateGoon786%
ForgeExpandSpeedlots250%
Proxy9-9Gate10%
3 openings1070%

#8 microwave

openinggameswins
ForgeExpand5GateGoon8100%
1 openings8100%

#9 letabot

openinggameswins
DTDrop888%
1 openings888%

#10 megabot

openinggameswins
4GateGoon8100%
1 openings8100%

#11 ualbertabot

openinggameswins
4GateGoon10%
9-9GateDefensive250%
ForgeExpand5GateGoon2391%
3 openings2685%

#12 tyr

openinggameswins
4GateGoon8100%
1 openings8100%

#13 ecgberht

openinggameswins
DTDrop888%
1 openings888%

#14 aiur

openinggameswins
12Nexus5ZealotFECannons10%
2GateDTExpo1100%
4GateGoon580%
9-9GateDefensive1100%
Proxy9-9Gate475%
5 openings1275%

#15 titaniron

openinggameswins
DTDrop8100%
1 openings8100%

#16 ziabot

openinggameswins
9-9GateDefensive10%
ForgeExpand5GateGoon683%
ForgeExpandSpeedlots250%
Proxy9-9Gate1100%
4 openings1070%

#17 steamhammer

openinggameswins
ForgeExpand5GateGoon8100%
1 openings8100%

#18 overkill

openinggameswins
ForgeExpand5GateGoon8100%
1 openings8100%

#19 terranuab

openinggameswins
DTDrop18100%
1 openings18100%

#20 cunybot

openinggameswins
ForgeExpand5GateGoon8100%
1 openings8100%

#21 opprimobot

openinggameswins
DTDrop19100%
1 openings19100%

#22 sling

openinggameswins
ForgeExpand5GateGoon10100%
1 openings10100%

#23 srbotone

openinggameswins
DTDrop15100%
PlasmaProxy2Gate1100%
2 openings16100%

#24 bonjwa

openinggameswins
DTDrop14100%
PlasmaProxy2Gate1100%
2 openings15100%

#25 stormbreaker

openinggameswins
ForgeExpand5GateGoon8100%
1 openings8100%

#26 korean

openinggameswins
ForgeExpand5GateGoon8100%
1 openings8100%

#27 salsa

openinggameswins
ForgeExpand5GateGoon8100%
1 openings8100%

overall

totalPvTPvPPvZPvR
openinggameswinsgameswinsgameswinsgameswinsgameswins
12Nexus5ZealotFECannons30% 30%
2GateDTExpo1100% 1100%
4GateGoon3382% 3187% 20%
9-9GateDefensive1164% 786% 10% 333%
DTDrop11297% 11297%
ForgeExpand5GateGoon10693% 7997% 2781%
ForgeExpandSpeedlots450% 450%
PlasmaProxy2Gate2100% 2100%
Proxy9-9Gate1573% 1182% 250% 250%
Turtle10% 10%
total28890%11497%5480%8693%3471%
openings played102644

Krasio versus Locutus; Steamhammer crash

2 recent events with a connection to Krasi0.

Krasi0 updated

Krasi0 has been updated with terran wall skills. Locutus doesn’t understand the wall, and Krasi0 is winning against Locutus again. Bruce predicted it would happen before AIIDE, and here it is. With a wall, Locutus cannot run by into the terran main, and Locutus does not have the skills to pressure the wall.

I think Krasi0’s wall build versus Locutus leaves protoss with an advantage, because the terran natural is delayed. But Locutus, showing its Steamhammer heritage, is impatient and presses too hard early, falling behind. Krasi0 has been winning most games easily.

I’m sure that in time we’ll see a Locutus version addressing the weaknesses. For now, the elo ratings of the 2 bots are converging. Will Krasi0 be able to pass Locutus in elo? Even with wins head-to-head, that might be hard.

Steamhammer strange crash

Here’s a new one. In Krasi0-Steamhammer on Icarus, Steamhammer lost its main and natural and was left with only its third. It’s a situation Steamhammer has been in many times, and zerg normally recovers if given time. It can win the game if the opponent never finds the base, or is also crippled.

This time something went wrong that I’ve never seen: Steamhammer rebuilt drones up to 14, which is abnormal. It is coded to replace the spawning pool at 9 drones. Then, even stranger, with an idle drone because there were too many and its minerals piling up, it got into a loop where it made nothing but overlords. It seemed to be in Plato’s cave, watching a bad movie that had nothing to do with the game.

Then it crashed. Some data structure must have broken. :-(

Proxy updated; Locutus vs. Krasi0

updated Proxy

New bot Proxy is—I can almost add “of course”—updated already. The obvious change is a zergling build if the opponent is zerg; the hydralisk build was too slow for ZvZ. The zergling build is successful, and Proxy’s elo has climbed over 2000. It is now an average bot, maybe better than average. That is excellent for a newcomer.

Locutus and minimum tank range

When Locutus runs dragoons by Krasi0’s bunker, Krasi0 (in games I’ve seen by the current version) has 1 siege tank available as its main interior defense. Terran sieges the tank and Locutus loses its dragoons, doing less damage than it should.

dragoons keeping their distance

In a broad sense, this is why I haven’t implemented runby in Steamhammer. Running by fixed defenses is easy, but playing well after you have run by is not so easy. The runby units become desperadoes, expecting to die and seeking to deal as much destruction and distraction as possible until then. Steamhammer’s units normally retreat from too much danger; desperadoes may be able to retreat, but can’t count on it. They have to make different decisions about what to shoot at, when to run away, and where to run to.

In this case, the important thing to shoot at is the tank, which limits the dragoons’ freedom too much. The dragoons should rush inside the sieged tank’s minimum range. They’ll win the fight and live to cause more trouble. Dragoons that wander too far off or take potshots at SCVs are not contributing as much as they could.

I think it’s complicated to handle all the defenses terran might try. I guess it’s a matter of taking one step at a time.

Microwave beats Iron

Locutus is doing great. What I find more interesting is that Microwave is also doing great since its update yesterday. In particular, Microwave seems to have improved enough to beat Iron consistently. I thought the most interesting game was the most recent one.

Furthermore, Microwave played more than one opening against Iron in its recent winning streak. Its favorite, though, seems to be 9 pool with a fast 2nd hatchery. The game plan has not changed much, only the execution is improved. Early zerglings hammer on the terran wall, occasionally breaking it down but usually only sapping the terran income. The lings don’t care if the wall is open, or if they come under fire, they only want to hit those supply depots. Microwave defends against the vulture runby with sunkens up front plus a sunken in the main. Iron usually appears surprised by the sunken in the main and fails to cope with it. Microwave follows up with hydralisks and later mutalisks, switching flexibly between hydras and mutas and preventing Iron from gathering its forces—especially targeting tanks so that they don’t build up to large numbers. Eventually Microwave reaches a critical mass of hydras and wins.

Even if you are as good as Iron, that is what happens if you always play the same and don’t update for a long time.

Locutus and Microwave are both Steamhammer forks. I’m pleased that they’re doing well. I see it as partly my success, too.

Locutus has a pylon harassment feature

Bot authors do a lot of creative stuff. Sometimes they are so creative that I can’t figure out the idea. Like this game between Locutus and Iron: Why did Locutus’s scout probe build pylons all over Iron’s territory?

too many pylons in the wrong place

It’s not a bug. It’s an intentional feature in this version of Locutus—here is the commit. It’s called “pylon harassment” and in this version it is hardcoded to happen only against Iron. A comment says:

    // We want to build a pylon. Do so when:
    // - We have enough resources
    // - We are not close to the enemy mineral line
    // - We are in sight range of an enemy building
    // - Nothing is in the way

“In sight range of an enemy building.” The pylons are meant to be seen. The intention must be to direct the opponent’s attention, to somehow divert it from doing something Locutus doesn’t want it to do, such as leave its base and attack Locutus.

In this game, Iron was not diverted at all, and won easily since Locutus had wasted a ton of minerals on pylons. I can imagine that some bots would go wrong. Those that pull workers to defend against proxy buildings might pull too many workers and stop mining, for example. Still, if your bot does make a mistake like that, it shouldn’t be hard to fix. So if pylon harassment is useful at all, I guess it must be a trick to easily defeat some weaker bots, or bots which make a certain class of blunder and are not being updated. Or possibly it is an unfinished feature, and the way it worked in this game is not how it is intended to work. I like the second theory better.

Another comment says

    // In the future, recognize how opponents react to pylon harass and store it in the opponent model

So in its final state, it is not intended to be hand-configured, but automatically selected. It could use code similar to the auto gas steal code already in Steamhammer, which decides whether to steal gas. Or it might use code similar to the plan recognizer to decide whether the opponent made a sensible or a silly reaction, and repeat if the opponent was silly.

new bot Locutus

I like the new protoss bot Locutus by Bruce Nielsen. It is a Steamhammer fork which uses BWEB for building placement. That means it includes BWEM, which BWEB depends on, though I don’t notice any use of BWEM for pathfinding. (If it used BWEM for pathfinding, probes would not have gotten stuck behind a mineral block in this game against Bereaver.) It also has some good extensions to Steamhammer.

Locutus has a favorite build order that it uses against all races, a forge expand build that was originally designed for use against zerg. It uses BWEB to place a reasonably good wall with forge, cannons, and gateway in front of the natural, not a wall that is optimized for the terrain but one that is about as good as the walls of other protoss bots. As a new bot, it has little ability to adapt its unit mix to the situation, so it follows up with universal units, dragoons. Like Steamhammer, it eventually adds reavers and observers and a few dark templar. The dragoon micro inherited from UAlbertaBot is one of Steamhammer’s best skills, so that’s another reason dragoons are a good choice.

a wall on Destination

Locutus does know other build orders, and uses certain ones against specific opponents. [Update: I misread the configuration! It does not actually play enemy-specific build orders; the feature is turned off.] It does not use Steamhammer’s opponent model.

The forge expand build was designed for zerg opponents, but in bot world it works well against other races too. Locutus has wins over strong opponents like Bereaver and TyrProtoss. Building cannons willy-nilly has an advantage: The cannons stop most early rushes, common bot strategies. For example, PurpleSpirit tried its SCV-marine rush and failed hard.

Also visible in the PurpleSpirit game is Locutus’s changed probe micro. Probes come to defend the wall when necessary, a critical skill that Steamhammer does not have. Unfortunately, they also come to defend when it is not necessary, and Locutus tends to send too many probes and delay mining too much. Sometimes Locutus pulls probes into the middle of the map and loses them for no apparent reason.

Locutus appears to still be using BOSS for production, because it adds more gateways than it can keep busy, a typical BOSS misbehavior. But Locutus has good macro, so if so, it is using BOSS more carefully than Steamhammer (I’m going to dump BOSS so I don’t care about using BOSS carefully). Locutus can almost keep up with BananaBrain in macro, which points to good skill.

Using BWEB for building placement means that buildings are laid our more nicely than in Steamhammer. Locutus’s base is more pleasant to look at and fits more buildings. It is still possible for dragoons to get trapped between buildings, though. It may be a bug in BWEB, or in Locutus’s use of it. The 2 dragoons on the left in the picture cannot get out.

2 dragoons are trapped

Locutus retains Steamhammer’s recon squad that performs reconnaissance in force. It’s usually good at finding and knocking down undefended expansions. Locutus also retains Steamhammer’s inability to defend its own expansions, leaving it vulnerable to an opponent that also scouts and destroys bases.

Looking into the configuration file, I see 2 nice extensions to Steamhammer’s configuration syntax. The build order is given in the usual concrete Steamhammer way, but a new location allows it to place buildings in its wall. I may adopt the same syntax for Steamhammer itself, when I get to walls.

"pylon @ wall"

There is also new “then” syntax that lets you chain actions together. I take it to mean “then with the same probe, do this next action.” Otherwise the code will assign a new probe, causing inefficient probe movement. You can chain as many actions as you like (or at least, I see an example where Locutus chains 3 actions). I can only assume that it is smart enough to assign a new probe if the first one is lost in the middle of the chain. This is a cool idea that I didn’t think of. It only seems useful for protoss, though.

"pylon @ wall then go scout location"

or

"photon cannon @ wall then photon cannon @ wall"

Overall, Locutus is a promising new bot. It has good ideas and good execution, and it already plays well. The author’s note says that new builds are coming. As Locutus gains more skills, it could become fearsome.