archive by month
Skip to content

cannon like Nal_rA

3 example games to give an idea how to cannon rush at the pro level, with lessons for bots in both offense and defense. This is only a taste of the range of variations—different timings and positions and mixes of techniques are possible.

a standard main-base cannon rush

This is the most recent pro cannon rush game: Jaehoon cannon rushed Shuttle in game 2 of their round-of-8 ASL match on 21 August 2016 (game 2 starts at 47:50 in the video). It’s an in-base cannon rush behind the main mineral line, and Jaehoon’s version is as standard as can be for a rare strategy. Call it a canon cannon rush. The requirements and steps were:

  1. it works on 2-player maps, where you don’t have to scout the opponent’s location
  2. there must be room to proxy where the opponent may not see
    • here, behind the opponent’s main mineral line
  3. send out one of your first probes: watch the north base in the minimap, a probe sets out immediately
  4. sneak the probe into position: Jaehoon skirted the edge of the enemy base in hope of staying unseen
  5. proxy a pylon, then a forge
  6. build 2 rear cannons first, to fortify the position before it is scouted
    • the rear cannons should be as sheltered as possible; Jaehoon used buildings and trees as shelter
  7. around the time the 2 rear cannons finish, add 2 front cannons in range to attack
    • the opponent will see the front cannons, but the rear cannons protect them

The opponent should know you’ve proxied as soon as they scout your base. They still have to find the proxy itself. If the opponent finds out in time to stop the 2 rear cannons from finishing, the cannon rush fails and the rusher is set far back.

In this case the cannon rush succeeded and Shuttle had to abandon mining in his main, but that was not enough in itself for Jaehoon to win. A pylon and 2 cannons already cost as much as a nexus, and the cannons can’t move. Shuttle canceled his gas and second gateway and built a nexus at his natural. Jaehoon was able to get gas and pull ahead in tech. Watch the rest of the game to see more followup!

These are the requirements and steps to cannon a pro. You see why it can’t be played often. It may be a little easier to cannon a bot!

Lesson for bots which cannon rush: Don’t go overboard. Jaehoon could have added more cannons and killed buildings, but the time and expense would have put him behind. Follow up with gateway units.

Lesson for bots which get proxied in any way: If the opponent’s base doesn’t have enough stuff in it, scout in and around your own base for a proxy. Ideally, count minerals and compare total mining to the buildings and units that you see. You may also want to scout the center of the map. If you want to be safe no matter what and don’t mind paying for it, don’t wait but always scout your own base (like some versions of Tscmoo).

Lesson for bots which get cannon rushed: If you can’t mine your main minerals, you still need to mine. Expand!

a Nal_rA natural cannon rush

In Nal_rA vs. Zergman from 2006 on Rush Hour 3 (a 3-player map), Nal_rA shows us a similar cannon rush, but executed later against the enemy natural instead of the enemy main. The requirements and steps:

  1. there must be room near the opponent’s natural to proxy where the opponent may not see
    • here, to the side of the opponent’s natural base location
  2. this build works against an opponent who can be expected to fast expand—mostly zerg
  3. scout at a normal timing
    • I suspect Nal_rA decided on the build when his scout crossed paths with the overlord
  4. build a pylon and forge in your main
    • Nal_rA built the forge in the back where it might not be seen at first
  5. sneak a second probe into position
    • Nal_rA sent the probe in a loop to avoid any zerg scouts
  6. build the pylon, 2 hidden rear cannons, and 2 front cannons as above
    • start the front cannons as the hatchery finishes
    • zerg benefits if the hatchery can be canceled in time

Zergman reacted in an interesting way, and the game is entertaining.

Lesson for bots that get cannon rushed: Zergman’s sunken colonies remind us that sunkens can keep cannons away. Zerg bots need to learn how to place sunkens to keep the cannons from pushing ever closer. Protoss bots can place counter-cannons for the same purpose. Terran... has more work to do until tanks come out. Terran should build away from the cannons and be prepared to float buildings to new spots.

a Nal_rA cannon containment

Not as standard as first two example games. In Nal_rA vs. Orion from 2007 on Blue Storm, Nal_rA shows us how to build up a cannon containment even against strategically correct counterplay, by also proxying gateways. Orion opened 9 pool, the best opening if you get cheesed, and still ends up crushed by Nal_rA’s strong creative play. The requirements and steps:

  1. it works on 2-player maps, where you don’t have to scout the opponent’s location
  2. send out a very early probe
  3. predict the overlord scouting path to avoid being seen
  4. build a pylon, then a forge
  5. Nal_rA made only one cannon before the first gateway
    • variations are possible
    • this variant emphasizes adding zealots in early
  6. add more cannons and zealots until the containment is tight
  7. after or while doing that, defeat any forces outside the containment
  8. if the last step is successful, then the enemy is weakened and the game is almost over

Look at the beautiful placement of that first cannon, walled in by terrain, minerals, geyser, and the pylon and forge. That is what makes the build work; without that excellent placement, Nal_rA would have to build 2 cannons before the first gateway and would have fallen behind in mobile units. Even the next cannons are tucked behind gateways to reduce their attackable surface. Nal_rA did not build cannons in the open until there was enough defense to protect them as they warped in. At some point I will look into the wall-building code in LetaBot and see whether it can be adapted to uses like this.

Zerg opened with the safest anti-cheese opening, 9 pool, and followed up in a strategically logical way at every point. Orion did make tactical mistakes, though. The good moves:

  1. send zerglings across the map to force Nal_rA to warp cannons in his main
  2. get an expansion, so as not to be trapped on one base
  3. switch to hydralisks, which are more efficient against zealots and cannons

Zerg could have countered the proxy by scouting his natural: Hold the first overlord there for a while, or send an early drone to check it. When the proxy is found, pull drones to stop it, and zerg is ahead. But if protoss were playing normally, then the extra scouting effort would put zerg on the back foot.

Lesson for bots which get cannon contained: It’s important to have a worker outside the containment. Keep your scout alive, or send out a worker before the cannons finish. Cannons mean that your opponent has little offensive force yet, so you can fast expand at any convenient base. Produce forces at your new expansion and you can go for the enemy main, or sandwich the containment, or whatever you want. Other reactions may be good too depending on the situation, but this way is natural, and I’ve never seen a bot do it.

Update: Cannon like a newbie basher. This 3 minute video shows a cannon rush in which you block off a space behind the enemy minerals with 2 pylons and place a cannon between them, where it can’t be reached. You’ll never see this rush in a pro game, because it’s trivial to beat if you know how to push units through the minerals. But I have never seen a bot that knows how to push through the minerals.... This variant has the advantage of simplicity; it works on many maps and in a wide variety of situations.

cheesy goodness

“Cheese” is a put-down, and the proper definition of “cheese” has a flavor of “stupid trick that you shouldn’t have beaten me with.” But who cares? I can pretend to be objective, and define a cheese strategy as: A surprise strategy which is all-in and fails if the opponent scouts or expects it. If the opponent pays a cost to stay safe against cheese, then game theory says that you may want to take the risk to cheese a certain percentage of the time to force your opponent to pay. The cost can be the need to stick to rush-safe strategies, or only the cost of scouting for proxies. It depends on your risk of losing with risky cheese versus the opponent’s cost to stay safe, of course.

Another definition of “cheese” is: An all-in opening that sacrifices economy to an extreme degree. It doesn’t say how extreme, but it’s closer to how people use the word in practice.

Against a human you can’t play cheese often, because it fails if expected. By definition! But bots are not good at expecting things. Most bots are vulnerable to cheesy openings and only a few have strategy learning that may be able to learn to defend, so—why don’t other bots cheese more?

I’ll talk not only about cheese by my definition, but also other risks or tricks that seem cheeselike. I was only pretending to be objective.

cheese that current bots try

  • 4-pool, 5-pool, 6-pool
  • cannon rush, cannon contain
  • dark templar rush (not cheesy, but risky if it’s very fast)
  • hard zealot rush (not cheesy, but all-in when protoss commits to it)
  • SCV rush (in some LetaBot versions, and formerly by Stone)
  • BBS (two barracks before depot, played by Tyr)
  • marine rush (10 barracks into infinite marines, UAlbertaBot)

other cheese

  • offensive sunken in ZvZ (ASPbot did this in 2011)
  • proxy hatchery
  • proxy 5 rax (LetaBot used to do this with bunkers; variations are possible)
  • proxy factory (make super-early vultures to kill workers)
  • barracks float, factory float (into the enemy base)
  • proxy gateways (which can mix with cannons)

The offensive sunken in ZvZ can work when combined with another attack. By itself it just fails if the opponent reacts. The natural other attack is, of course, a 4 pool or 5 pool after you scouted with a drone.

You can make anything at a proxy hatchery. In the early game you make zerglings or sunkens. If you get burrow, a drone may be able to hide in the enemy base for a long time before proxying. If you somehow remain unscouted in the middle game, you might build lurkers. In the late game, drop a drone in for creep to support a nydus. All these are risky cheese plays; if scouted, they lose resources for nothing.

I think it’s strange that we see zergling rushes and marine rushes with BBS, but no zealot rushes with early forward gateways. On a 2-player map, building gates near the enemy base at 5 and 6 supply kills most bots effortlessly. Many other forward and center gate variations are possible, at least up to 9-9 center gates.

In another point, if you’re making an all-in rush, there’s no disadvantage to bringing some workers along for the fight, no matter your race. Terran of course can make bunkers. Protoss can make a proxy shield battery (typically in the enemy natural) to support the rush—the pylon is “free” since you need it anyway.

It’s also strange that we see no in-base proxies other than cannon rushes. Many bots will pop like a balloon when you hide a gateway or two in their base. Against a terran bot that doesn’t scout its base, you can hide a probe and make a late in-base proxy gate for dark templar. Or try this BBS variation as terran: Scout early, and build your first barracks in a distant part of the enemy base, near a cliff. Build the second barracks beneath the cliff and float it up beside the first.

Some slower tech rushes are so risky that you could call them cheese. 1-base lurker is one example. AIUR’s fast 4-zealot drop is another.

cheeselike tactics

You can block stuff with a worker/pylon/etc. It’s not cheese, but it’s tricky and cheeselike.

  • gas steal
  • mineral steal
  • manner pylon
  • pylon block of terran add-on (especially the first machine shop)
  • block natural hatchery/nexus (common against 12-hatch)
  • block opponent from walling
  • block opponent’s exit (on maps with a small exit like Heartbreak Ridge)
  • pylon prison, a crazy blocking trick

Bots still know how to steal gas, but I think they've given up on doing it because they stopped seeing advantage. I think that once bots can read and react to the opponent's strategy well enough, they should go back to stealing gas, but only at times when it will channel the opponent's strategy in a direction that the bot can exploit. Opponent modeling helps. If you know that your opponent’s tech causes you trouble, then steal gas to delay their tech.

You can order your scouting worker to mine an enemy mineral patch, and then the enemy can't mine it at the same time. You can steal 8 minerals or stop mining early and start again. It's mild harassment that slows down enemy mining slightly. If you also steal gas, you can steal 8 minerals, steal 8 gas, steal 8 minerals... which is not useful but is funny.

Manner pylon is advantageous if done at the right time and place. It can cause the opponent to lose more minerals in mining time than the pylon cost. The reason we only occasionally see manner pylons in pro games is that pros prevent it when they care, briefly idling a worker to stop it if necessary. Manner pylon can be worth it in the early game, and it can be worth it later in the game at expansions. I think it's safe to guess that very few bots will react correctly to manner pylon; they will not know how to prevent it, and they will lose more mining time than necessary when it happens. Bots with fixed build orders will mess up their timings. It can be a little tricky to pull off a manner pylon, though, because you can only build it when the spot is free of enemy workers. Good players can predict when the spot will be free and slide through the mineral line with the right timing to build the pylon in passing.

Cheese is healthy for bots because opponent bots need specific knowledge to respond well, and there are many kinds of cheese so much knowledge is needed. But cheese can also be difficult to play well. Current bot cheese is plain cheddar next to pro artisanal cheese. Tomorrow: Cannon like Nal_rA.

rushes, especially zergling rushes

LetaBot suggested I should write about the decline of the rushbots. He pointed out that ZZZKBot by Chris Coxe (the best of them) is no longer a top bot on SSCAIT, but has fallen to the middle of the pack, and that UAlbertaBot has lost ground too. I’ll add that cannon rushes were never reliable, but remain moderately successful.

It would be interesting to examine the decline in historical data, but I don’t have the historical data. I once thought of setting up a job to scrape the SSCAIT page once a day, to save the game results for analysis, but I decided there were better uses for my time.

The rushbots are failing because rushbots have not changed and their opposition has improved in defense. The defense improvements include safer openings, better worker micro, and more cautious play with early military units (such as Tscmoo stationing early units defensively in its mineral line). Also the SCV rushbot Stone has been replaced with the non-rushing Iron—if Stone were still playing on SSCAIT, maybe its results would still be good. Or maybe not, we don’t know; its disappearance reduced pressure to improve rush defense. The fact that SSCAIT admins are tired of zerg rushbots (as we all are) and have disabled many of them also reduces pressure to improve rush defense.

This is going on a bit of a tangent, but I’ll tell a story. Once upon a time I was playing (on Lost Temple, it was that long ago) as zerg versus a protoss who was clearly better than me (which wasn’t saying much). I saw the protoss army move out toward my mineral-only. I had prepared a backstab: I ran a dozen speedlings past the protoss natural into the undefended main mineral line. Then I had to turn my full attention to defense, narrowly holding the attack, and I didn’t see what happened with the backstab. After I lost the game I watched the replay. I was astonished to find that the protoss had not lost a single probe to my backstab, but had microed probes to glitch out my lings and kill them safely. I hadn’t known it was possible. It was a memorable lesson: Micro can make the difference between losing everything and losing nothing.

Worker micro is a key skill, and it’s basic to good play. Even today’s best bots have visible flaws in their worker micro. As long as that remains true, the zerg rushbots have a chance to win even against some safe strategies, and they have a role to play as teachers. But if they want to keep that role they’ll have to improve their zergling micro. They need to know how to avoid defenders while attacking vulnerable workers, when to step back and change targets, and when to gather up a force before striking. At least they need to go around the bunker instead of running straight into it and dying.

For the rest of the post, I’ll concentrate on zergling rushes.

4 pool and 5 pool are objectively sound, and can be played at pro level. Like any playable opening, they counter some enemy strategies and are countered by others. If a pro plays a safe opening, then a 4 pool or 5 pool will lose. But pros are always looking for an edge, and they will correctly play unsafe greedy openings to get one—if you never play an unsafe opening, you are leaving money on the table. And if your opponent plays unsafe openings often enough, then it is correct to make them pay the cost for the risk they are taking. Also some openings are in-between, safe-ish but vulnerable to better micro or better luck.

4 pool comes in two variations. The build order for the more aggressive variant is: 4 pool, 6 lings. The other variant is: 4 pool, 1 drone, 6 lings; with the extra drone you have more economy but you can get 2 fewer lings before the first overlord. There is not much difference between the variants; they are both do or die. 5 pool is a little slower, but your stronger economy means that you need to do less damage to the enemy to break even. You can accumulate minerals while attacking, which gives options to transition into another strategy. 5 pool can be played against any race, but experts don’t 4 pool against protoss because protoss will normally survive and you need that touch of extra economy to make it to the middle game.

This old Team Liquid post lists pro games and statistics for 4 and 5 pool games between 2004 and 2009. There are not many; play them often and you’ll lose often; play them occasionally to punish greed and you’ll do well. 5 pool was played as recently as 17 July in Effort vs. Shuttle on the first day of the ASL (Afreeca Starcraft League). (It’s the first game of the cast, starting at 9:37 into the video. The English commentators didn’t count the drones and never realized it was a 5 pool.) Watch the game if you want to see the economic risk of a zergling rush. Effort got lucky and scouted the right way with his overlord, but Shuttle also got lucky and saw the lings in time to make a shield battery and pull the minimum number of probes to hold. Effort struggled for the rest of the game to catch up, but despite strong aggressive play in the middle game never drew even.

6 pool, 7 pool and 8 pool are considered inferior. They are seen as giving up economy without enough payback: The zergling attack at the later timing is too weak to be threatening.

9 pool is no longer a rush but a mainstream build. With 9 pool and zergling speed, the lings have greater potential to run by defenses, they can catch and kill fleeing workers, they can switch between targets with agility, and they’re generally more dangerous. And even this non-rush build is economically risky except in ZvZ. Overpool (overlord at 9 drones, then spawning pool at 9 while the overlord is in the egg) is the fastest build that is common outside ZvZ.

If you always play the same strategy, then you set yourself up for a counter. Bots with strategy learning will learn to counter you. If you always play the same cheese strategy like 4 pool or 5 pool, with standard hard counters, then you set yourself up to lose every game. Zergling rushes are sound, but not as your only opening.

If your bot has strategy learning, then I think it deserves at least one cheese opening to punish weak or greedy opponents. Zergling rushes are only one possibility—they are vanilla cheese, if the metaphor doesn’t make you gag. Tomorrow: More cheesy goodness. Cheese is great, cheese is good, and we thank it as our food.

keep your squads together

Left to itself, a group of units sent across the map will tend to string out into a line, often with gaps. If that line runs headlong into waiting enemies, it will be eaten alive. The enemy “crossed your T,” as in battleship tactics. The whole enemy force can fire, while only the front units of the approaching line can engage, so you get defeated in detail.

tactics diagram: crossing the T

Some bots keep their squads in compact formation as they move. They stay ready to engage any enemy that may suddenly appear. Other bots don’t care. They let their units string out and take the risk of being caught off guard.

AIUR is an example of a bot that doesn’t care about formation. It will happily attack in single-file and be ground up like sausage. In fact, I think that’s one of the main ways that it loses won games: Instead of gathering up its superior force and attacking with a coherent army, it fights with dribs and drabs as they arrive.

A number of terran bots that train marines and medics let the two get separated. The marines and medics form up into a squad and set out for a distant destination. Along the way, the marines find something to shoot at and stop to do that, while the medics continue on to the original destination. Separated, of course, they all die.

Exceptions. Letting units string out into a line is not always bad. If you’re in a hurry, then run run run at full speed. Staying compact would mean slowing down.

The line formation can be good.

tactics diagram: equals sign

Run your line of units parallel to the enemy formation, and when you’re in position, converge on them. In human play, this tactic is common with zerglings and zealots, whose melee attacks are most effective when they approach in shallow formation across the breadth of the enemy army. I haven’t seen any bot do this skillfully, even though it’s basic micro. For example, lining up zealots is key to breaking a terran tank push.

Tomorrow: The old terran bot Nova keeps its squads compact while moving. I’ll look into that.

local preponderance of force

I want to borrow a term from the real life military again, an organizing principle for thinking about many kinds of tactical maneuvers.

Remember Lanchester’s Square Law as used by MaasCraft? It is an approximation which says that the power of a force of ranged units is proportional to the square of the number of units. According to this, a force of 6 dragoons is not twice as strong as 3 dragoons, it is 6^2 / 3^2 = 4 times as strong.

In other words, outnumbering the enemy by a little more can be a lot better. 6 dragoons versus 5 is 36/25 ~ 1.4:1 power ratio by the square law, and 7 dragoons versus 5 is 49/25 or nearly 2:1 power ratio. Though it’s good to remember that there are simplifying assumptions behind the derivation of Lanchester’s Square Law. It breaks down if, say, the rear dragoons have to maneuver to get into position. Even in the ideal case it’s not exact; it’s a continuous approximation of a discrete situation.

Having a local preponderance of force is the technical military term for outnumbering the other side. You’ve got more oomph in the fight. If you have a local preponderance of force then you usually want to join battle, because it will help you pull ahead globally and eventually win. That’s the thinking behind UAlbertaBot’s tactical decision making, which amounts to “if it looks like I’ll win then fight, else run away.”

Preponderance of force is why you often want to keep your army together. If you get into a battle, you’ll have the biggest force you could have.

• Killerbot, tscmoo zerg, and Overkill retreat zerglings to their sunkens when faced with a bigger force. Zerglings and sunkens together are more than their sum.

• LetaBot can spread out its army when defending, but when attacking usually tries to concentrate it into a single force for the strongest possible strike. Sometimes LetaBot misbuilds its wall or otherwise leaves some units behind in its base. When that happens, it’s plain to see that the divided army is vastly weaker.

But preponderance of force is also why you often want to split your army, on the principle “hit ‘em where they ain’t” or “fight the base, not the army”.

• Fast units like vultures and mutalisks go harassing on their own because they can race to undefended spots, where they have local preponderance of force, and cause trouble until defenders catch up.

• Ranged units can achieve preponderance of force over units with shorter range by standing back out of reach: They can shoot you and you can’t shoot them because of a cliff, or intervening forces, or whatever. This is the idea behind tank drops on a cliff (which I’ve seen only from IceBot), and it is why LetaBot puts its infantry in front of its tanks.

• Overlord hunting and depot sniping are extreme cases of local preponderance of force. Shoot stuff that can’t shoot back.

• Air units of all kinds often split from the ground army because they are not hindered by terrain. They can achieve local preponderance of force by outmaneuvering ground units, for example using cliffs.

• Drops work best when the drop lands far from defenders and close to juicy targets like workers. It’s true both for harassment drops and doom drops.

Anyway, preponderance of force is a key organizing principle for tactics, an idea that you can use to understand many kinds of tactical choices.

A bot with a strong enough understanding of preponderance of force (maybe from a combat simulator) could theoretically figure out for itself all the uses above, and more beside.

Notes about breaking the general rule: 1. Often it’s correct to fight immediately when you have a preponderance of force, but not always. You may do better by waiting until your advantage is bigger. “I could break this static defense, but I’ll have more left over and end up stronger overall if I wait for the reavers.” Or: “This is a good angle for wraith harass, but now I see a better one.”

2. Sometimes you can come out ahead in a fight from behind, even without superior micro, provided you can engage and disengage at will. Suppose it’s mutas versus marines and the marines win a stand-up fight. The mutas may still be able to poke in and pick off a marine or two before they dance back out of range, taking damage but no losses. The mutas are willing to fight (briefly) because they can come out ahead. It works because the mutas are fast and have more hit points. A similar idea is to send in battlecruisers to fight until they start to take too much damage, then retreat and repair.

3. When you’re ahead in income, it may be faster and safer to win by attrition even if you lose more in every fight. Keep attacking so the enemy must make units and not workers, and can’t catch up in income. If your ratio of income (3:1) beats your ratio of losses (2:1), you’re making progress. And of course the reverse thinking goes for the other side: Fight only the most advantageous battles; you have to win battles by a wide margin to have a chance.

you need more than 1 strategy

Martin Rooijackers aka LetaBot read my posts about Zia and wrote to point out that a zerg bot facing terran wants both mutalisk and lurker options. The reason is that terran may counter the mutas. He mentioned 5 barracks with +1, which should hard counter mutas. He also called out valkyrie and goliath possibilities, specifically pointing out that valkyries force mutas to spread out, which reduces their potential. Zerg needs to scout the build and react before overcommitting to mutalisks—at the latest when the first fliers arrive at the terran base and see what’s up.

Zerg can’t stick with tier 1 units (zerglings and hydralisks) because any likely terran midgame army will walk over them. And hive tech takes time. Lair units are key to the middlegame.

If zerg always goes mutas, any terran with strategy learning will find a way to counter the mutas and gain an advantage every game. I think this has already happened with Zia and Tscmoo terran. If zerg sometimes opens mutas and sometimes lurkers, then terran faces a risk trying to counter mutas with marines—the lurkers counter marines. Terran’s best play becomes less committal and more cautious, and that favors zerg.

Mainline pro play has the zerg starting with a limited number of mutas and using the time they buy with cautious harassment to get lurkers and rapidly tech to hive. But pros of course are totally comfortable with adaptation and tech switches. Not all games follow the main line. Today’s game of Flash (T) vs. Zero (Z) was a great example: Flash opened 14 CC, Zero responded logically with 3 hatcheries before pool and went lurkers while Flash prepared for mutalisks.

Any bot with only one strategy stands at a disadvantage against bots with opponent modeling. It’s true for all matchups. Today’s simple strategy learning will find a counter-strategy within a dozen games, usually less. Humans, and tomorrow’s sophisticated opponent modeling bots, may counter the strategy of the first game in the second, and should quickly find strong counters to most fixed strategies.

To beat humans, or to beat opponent modeling bots, you’ll need strategy flexibility plus either learning or a dose of randomness, ideally both. I promise. If sophisticated opponent modeling doesn’t arrive fast enough for me, I’ll provide it myself. It will make bots much more interesting to watch and to play against.

drop idea 4: ferry

A ferry drop is when you use the same transport (or transports) repeatedly to bring more units over. If it’s across a single cliff, you can also call it an elevator. A ferry drop is usually over a short distance, of course.

See the video of Oriol defeating Krasi0 in 2010 (!) by constantly ferrying units on Python from 6 main to 9 main. Oriol is a zerg player and went off-race with protoss this game. The bot lost because it kept units at the front of its natural instead of defending its main with enough forces. I’m sure Krasi0 today would put up a tougher fight, but bots still don’t try to interpret their opponent’s intentions so they are easy to take off guard.

Bots that invest heavily in static defense at their natural are likely to be vulnerable to early ferry drops into their main. XIMP is the obvious example. Also Killerbot seems vulnerable in ZvT before its lurkers are out, and in ZvP before its mutas are out. Where ferry drop works in the early game, other early flying tricks like zerg slow drop and terran factory float are also likely to work.

A ferry drop is more likely to succeed if you can keep it unscouted, whether by distraction or by force or by knowing where your opponent can’t see. Of course those are advanced skills.

Ferry drops are especially menacing if you can ferry a dangerous army into the enemy main before it is noticed. I could be wrong, but my guess is that the stratagem is more likely to succeed against zerg bots. Protoss and terran have spread-out buildings which give vision over more terrain in their bases. Zerg should have no trouble monitoring its borders with overlords, but most bots don’t.

drop idea 3: push up the cliff

Consider a terran bot which is on low ground under the cliff of its enemy’s base and pushing toward the enemy natural. Some bots bring vision along and fire on buildings in the enemy base. Because terrans are strong in defense, defeating the push needs either a greatly superior force, or a coordinated push-break which today’s bots can’t pull off. Looking at it from the other side, the attacker needs to move the push forward to tighten the screws, but every movement introduces some risk—the push is weaker while tanks are repositioning.

Instead of pushing the long way toward the natural, terran could bring a dropship and push up the cliff, the short way into the enemy main. Pros don’t do that—they go for more dynamic dropship play. But players who are at the level of bots often like the cliff push. It’s hard to defeat at that level. The units dropped on high ground are somewhat cut off but are supported from below, and if they are lost the cliff protects the low-ground units and the cliff push can be resumed with reinforcements.

drop idea 2: zealot and other bombs

Tanks have long range. Tanks cannot shoot up. Dropping stuff on tanks is a standard way to fight them without getting blown to bits on the way in.

Protoss usually drop zealots: “zealot bombing.” Dark templar are also okay, and they’re especially okay against bots which are quick to scan when a dark templar walks into range. Zerg usually drop zerglings or ultralisks. (Fancy twist: Add a defiler for swarm. Drop other units first to soak up shots.) Terran can go with whatever mech units are convenient. But any units threaten to wreak havoc—probe bombing can be effective.

Here are IceBot’s undefended cliff tanks all but calling out to be bombed.

cliff tanks ripe for bombing

Sieged tanks have a minimum range, so drop right on them, ideally spreading your units to drop one or a few on top of each tank. The terran will be faced with a dilemma: Unsiege and lose defensive power, or stay put and let the tanks inflict splash damage on each other. Either way, this would be a good time for the rest of your army to rush in and break the push (a more advanced skill).

Terran has defensive options, of course. Anti-air can make drops impossible (you could go drop on an expansion somewhere instead). If the terran mix is tanks and vultures, then it may be inefficient to drop zerglings, but you could try ultralisks. If the terran mix is tanks and infantry, as LetaBot often favors, then dropping on the army may be a bad idea. But notice: Even the threat of bombing the tanks constrains the terran’s play. Anti-air and tanks must stay together for the defense to work. Whatever gives the terran enemy fewer choices gives you more.

The idea behind the protoss bulldog opening is to defeat rear tanks with zealot bombs while dragoons overrun frontal defenses. Bulldog would be a difficult opening to code because of the army coordination it calls for, but it would be cool to see a bot play it. Bulldog counters LetaBot’s siege-expand opening.

drop idea 1: take the islands

Drop has countless uses. A lot of the uses are complex and tough to code, though (I dare you to do reaver drop with all the trimmings). Right now, a few bots do simple harassment drops. No bot has much fun with other drops. I’m going to spend a few posts on drop ideas that seem to me like cool next steps. Who knows, I might even be right!

If you have a macro bot, why not take island expansions?

The SSCAIT map pack, as distributed, includes 3 maps with island expansions, out of 15 maps total (20% of the maps have islands). In all 3 cases, to take an island, you have to drop a worker, mine out the blocking minerals, and then build or float in the expansion. It makes a pretty small state machine. Maps without blocking minerals are thought to favor terran because command centers can float, so they are little used nowadays.

The SSCAIT maps with islands:

  • Andromeda
  • Empire of the Sun
  • Python
Andromeda island Empire of the Sun island Python island

Probably the hard part is not taking the island, but populating it efficiently. You want to be able to schedule a task to transfer workers when the expansion is ready to mine—whether by drop, nydus, or recall. (And if you’re thorough, you might want to be able to transfer the workers elsewhere when the island mines out. Nydus and islands are in love and belong together.)

Since no bots take islands yet, surely few bots are capable of attacking islands—probably only bots that already go air. Against many opponents you can get one or two invulnerable expansions, which ought to be a winning edge.

Of course most maps don’t include islands, and if opponents do attack then islands are harder to defend. But a chance at a big macro edge on 20% of maps is nothing to sneeze at. How many opponents will even scout the island?

spider mine placement

I’ve been thinking about mine placement. Where do you lay spider mines? It’s a tiny part of Starcraft, but even by itself it’s super complicated.

Attack units or see the map? IceBot lays mines in a wide grid pattern, each mine in sight range of its neighbors, that gives plenty of warning of incoming attacks or drops. But the mine grid doesn’t kill many units. WOPR lays mines in dense bunches along the shortest path between main bases. Bunched mines don’t scout as widely but are dangerous to force because they trigger in groups. Tyr lays mines in a tighter grid pattern, which could be a compromise between the two goals.

Offensive or defensive placement? IceBot and Tyr lay mines outside their own base to defend. Iron lays mines aggressively outside the opponent’s base as part of a containment game plan. Another good offensive mine placement is up ramps, taking advantage of high ground and vision. I haven’t seen any bots seem to do that intentionally.

Strategic versus tactical area denial. Iron’s containment mines are laid for a strategic purpose. “If you ever want to leave, you have to pass my minefield.” It’s also possible to lay mines for short-term tactical purposes: to block a retreat, to hinder reinforcements, to keep vultures unmolested for a short time while they massacre workers.

Strategic/tactical versus combat mine use. IceBot, WOPR, and Tyr lay mines to be triggered later. Tscmoo and Iron not only do that, but also attack sieged tanks by laying mines next to them that trigger immediately. In human play it’s popular to attack dragoons with mines, but that attack is trickier to pull off because the vultures have to coordinate to block the dragoons from running away.

Blocking an expansion. Several bots, including IceBot and Krasi0, lay mines at expansions. The mine scouts the expansion and delays the opponent from taking it. (By the way, dark templar or burrowed zerglings could do the same.) In principle, mines could block other buildings, but what other opponent building appears in a predictable place? Well, you could use mines to delay terran add-ons.

Luring is still too fancy for bots, but they’ll get there someday. For example, lay a mine in the enemy probe line and then try to entice a zealot in. Devastating when it works.

Mines can also be used to bypass map obstacles, to attack drones when triggered by a larva, and more. Besides the positive uses, a complication is that mines can harm friendly units, which the opponent may try to exploit by mine dragging. Skynet knows how to drag mines (at least its code says it does).

How will PerfectBot lay mines? Being perfect and all, PerfectBot knows the uses of mines and can judge which uses are more important when. I have to imagine that PerfectBot does all the things I mentioned above, and probably in an unpredictable adaptive way. I can’t wait until the end of time to see what it looks like!

going random

I get the impression that the decision to go random is fundamentally similar for a bot and for a human. Going random is cool and offers a potential advantage, but it’s hard. From a practical point of view, most bot authors and most human players will be more successful if they settle on one race and concentrate on playing their race well.

The observation that people repeat is that if you play one race, you have to learn three matchups, each with unique strategies and timings and tactical possibilities and so on. If you play random, you have to learn six matchups. Watching the three different random bots now playing at SSCAIT (UAlbertaBot, OpprimoBot, and Travis Shelton’s bot), to me they seem shallower than the race specialist bots. That’s my impression.

Also, if you can play 3 races, then you probably don’t play all of them equally well. Tscmoo, with its large selection of strategies for all races, is an example. It can play random, but usually doesn’t. It usually goes with whichever race it plays best at the time.

Just an observation. Do whatever you like, but notice the tradeoff.

Race picking is another issue. That means choosing a race depending on the map and opponent. Of current tournaments, I think only those organized by LetaBot and run by hand (see the YouTube channel) allow race picking. I think the other competitions require you to stick to terran, protoss, zerg, or random.

hunting overlords

Why do so few bots go overlord hunting against zerg?

I've only seen Skynet do it, later in the game and not efficiently. Quite a few bots make corsairs, or scouts, or wraiths, or even valkyries, and then keep the air units together with the main army where they get bored and turn to drink. Then when a battle comes up, I often see scouts or wraiths tickling ground units with their feathers and not blasting air units with their deadly missiles. Alcoholism really messes up your personality.

Modern protoss versus zerg play often has protoss fast expanding and then building up a corsair fleet that sweeps the skies of stray overlords and shuts down mutalisks. And forces zerg’s strategic hand. And can set things up for drops and dark templar raids. And incidentally scouts everything the zerg does. Bots should be able to learn at least one or two of those tricks!

If you’re terran and make wraiths, for Boxer’s sake please don’t use them to plink zerglings when there’s an overlord to be found. At least go bother some drones.

Zerg versus zerg is a whole different barrel of monkeys holding kettles of fish, of course.