archive by month
Skip to content

when the map is mined out

When the map is mined out and the game is not over, the nature of play changes a lot. Bots rarely get that far, of course—almost never. I’ve been trying to think of a bot game I’ve seen where the map was mined out, and I can’t think of one. But I claim that the example is still interesting to bot authors, as least as a sign for the future. Bots will need more flexibility and reasoning ability when they improve and do reach the utter endgame.

Instead of “when the map is mined out,” I should say: When the players run out of resources. There may be plenty on the map, but resources in the ground don’t help when the players can’t mine due to lack of workers, or lack of a command center/nexus/hatchery to return resources to, or lack of air transport to move workers to and from the resources. Horang2 vs Jaehoon in 2012 is an example. I don’t know of any games where both players could mine except that the opponent prevents it, but it is theoretically possible. For example, both players could have dark templar (unable to fight each other without detection) at the last remaining minerals, so that if either player tries to mine, their probes will die. In a mixed example, if the last resources are on an island, one player may be unable to mine due to lack of transport, but could have defenders at the island to prevent the other player from mining too.

As resources wind down, pro players start to get rid of the workers that they no longer need, to free up supply for more military units. They may send SCVs charging into the enemy army to be annihilated. I’ve also seen probes gathered and stormed to death. By the time all minerals are mined, depending on how the game went there may be only a skeleton crew of workers to use up the last banked reserves in construction or repair.

Players will evaluate whether they have winning chances. A player who can’t win, or who is risk-averse, will strive for a fortress that the opponent cannot break. Whether aiming to win or to draw, players will switch toward low-resource unit mixes. A low-resource mix usually includes many spellcasters, especially vessels, queens, and dark archons, but also high templar with hallucination and storm. It also usually includes fighting units that are efficient for whatever reason, tanks (for range and power), lurkers or dark templar (especially if they can stay undetected), hit-and-run units like wraiths that can escape pursuit, and so on. Reavers may run out of scarabs when there are no minerals, but can be worth it if they’re left over from earlier in the game. The mix depends on the situation; if zerg has queens, protoss wants archons that are immune to broodling. Figuring out a good low-resource unit mix for a given endgame is a different skill than figuring out a midgame unit mix.

You need reasoning ability to do this 100% right. If you have only a few buildings left, you have to figure out how to avoid being eliminated, and that controls your whole game plan: The opponent has these possible attacks specifically (I know because I’ve seen their last few units), so I should array my forces like this to have the best chance to ward them off. It’s another case where you want explicit goals that you can reason about.

double cannon contain

Here’s a funny game. Jakub Trancik’s “let there be cannons” bot and Tscmoo protoss each cannoned up the other’s entrance. Then they both got stuck on “uh oh, my probe died, I need to send another probe out now!”

Jakub Trancik contains Tscmoo

The green disk below marks the probe being sent out, about to come into cannon visibility and die. Notice the low supply count.

Tscmoo contains Jakub Trancik

Jakub Trancik’s bot eventually did its zealot switch and won. If you can’t recognize that you’re contained, at least you could figure that it’s about time to try something new.

means-end analysis

Here’s the secret connection between prioritizing your goals and novelty maps: Once you have explicit goals, another thing you can do is reason about them.

You’re playing on Crystallis. Human players somehow realize, without having to think about it, “I’ll need gas, so I should set workers to mine in the direction of a geyser.” How could a bot figure out the same thing? Imagine that you want to be able to play on any map, even a novelty map with strange features.

The bot should already know “I’ll need gas,” so the question is how it can figure out the way to get it. The bot also needs a model of the game, so that it can understand the effects of its actions and plan a sequence of actions to reach its goal. It needs to know that minerals can block movement and that workers can mine out minerals.

Means-end analysis was introduced into AI sometime around 1960 in the famous General Problem Solver program. It says, given a goal, seek means (aka actions) to reduce differences between the current situation and the goal. One way to put means-end analysis to work is in “plan repair,” which means finding workarounds for problems. It’s part of the AI topic of planning. If you like academic papers, here’s a list: Citeseer on plan repair.

Suppose the bot is terran. It already knows a basic plan to get gas: 1. Send an SCV to a geyser. 2. Build a refinery. 3. Transfer gas from the refinery to a command center with SCVs. If bot uses its model of the game to see whether the basic plan works, it will find that the first step fails; the SCV can’t get to the geyser. Can the plan be repaired? Working backward from the goal of being at the geyser, the bot might reason: If I can mine out this mineral block next to the geyser, then I can reach it. Can I mine out that mineral block? No, but these other mineral blocks are next to it, can I mine one of them out? If the bot keeps searching backward (using a means-end heuristic to speed things up: the mineral block closest to the command center is the one that minimizes the difference between the current situation and the goal), it will eventually find a path of mineral blocks to mine out to reach the gas. Problem solved.

The bot might also ask: Can I fly an SCV to the geyser? To fly it by dropship, I would need a dropship, which costs gas; no can do. Or I could float a command center and make an SCV, but there’s no place to land it; no can do. Or the bot might figure out how to push SCVs through the minerals enough times to reach the geyser, which probably is part of best play. If it’s clever enough, it might be able to compute an efficient combination of mining out minerals and pushing SCVs through the last minerals to start getting gas a little earlier.

Plan repair can work to solve many kinds of goals in many kinds of situations. A bot with that skill could play novelty maps at least passably, and could solve planning problems that come up in normal games. Obviously it’s a very complicated skill, and one that bot authors will not be in a hurry to implement. But I think it’s a destination we should aim to reach eventually. And the first step, of course, is to make your bot’s goals explicit.

Next: After the map is mined out.

novelty maps

Humans can play on crazy novelty maps where normal play does not work. We don’t have much trouble inventing special strategies for special maps. It’s a more extreme example of the human adaptability that we see in normal play. Bots have too much scripted behavior and can’t adapt at all to extreme novelty maps.

On the Blizzard map (2)Crystallis distributed with Brood War, the players start out separated by deep maze-like formations of 48-mineral blocks. Gas geysers exist, but they are also behind minerals, so before you can tech you have to mine a path through to a geyser. It’s a playable map, and maybe fun once in a while, but the strategies are vastly different than on a competition map (and terran would seem to have a big advantage). Crystallis seems to be well-known for crashing the BWTA terrain analyzer, so I expect many bots can’t play it at all. In this picture, look at the minimap to see how far the SCV’s have come from the original command center.

Crystallis play, mining toward a geyser

On (6)Crazy Critters, also included with Brood War, the map is so full of critters that it is difficult to place buildings. Units face big delays in moving as the pathfinder struggles with shifting critters. Here I opened with a forge and cannon to kill enough critters to make space for a gateway—I couldn’t find a way to place a gateway otherwise, but the random shifting of critters sometimes made room for smaller buildings, when the probe could arrive in time. The terran opponent is a built-in AI, which built a barracks in my base not because it wanted to proxy, but because that was the first open space it found. Also notice my soaring mineral count; I found myself unable to place enough buildings to spend my income. The map is frustrating to play on, but people can do it.

Crazy Critters play, struggling to build

Less extreme concept maps from Blizzard include Blood Bath and Big Game Hunters. Both have been popular in their communities and people have developed specialized strategies.

Concept maps are rare in competition today, because they are difficult to balance, but they went through a period of popularity in pro tournaments around 2006-2008. Examples are Arkanoid, Demon’s Forest, Monty Hall, Plasma, Triathlon, Troy. Another interesting concept map is Fantasy, in which each quarter of the map has a different design, so that the map is not symmetrical and the game balance and strategy depend on the random starting positions. A lot of fun games with surprising strategies have been played on concept maps, and it would be cool if new ones were invented to meet today’s standards.

Here is Demon’s Forest as an example. Much of the 3-player map is covered by an array of doodads that block vision and sometimes bug out the movement of large units. Here an overlord off the top of the screen (visible on the minimap) provides vision of part of the array, and below two hydralisks are barely able to see beyond their snouts. I set up three other hydras in a triangle to show their lack of vision on the minimap.

Crazy Critters play, struggling to build

Island maps were abandoned in competitive play after the early years, because they were imbalanced against zerg. But I wonder—today we know a lot more about how to balance maps. I don’t have the expertise to try it myself, but I would be interested to find out whether an island or semi-island map could be balanced today, using some variety of pro-zerg tricks: Smaller buildable areas, so that protoss and terran are forced to spread buildings across different areas; gas-only or low-mineral expansions, which zerg gets “for free” because zerg needs the hatcheries anyway; expansions or other areas with neutral creep colonies that zerg can use right off, but where other races need to kill the colonies first. The terran late-game information advantage could be reduced by putting a map doodad where the comsat would go in some expansion spots. There are more, you get the idea.

How do humans adapt their play to unfamiliar map features? I don’t know, and it seems like it must be complicated. I picked novelty maps as an extreme example, but humans (given time to learn) adapt their play to all map differences, and in fact to all aspects of the situation. Circuit Breaker and Fighting Spirit are both standard maps and play similarly, but features of the maps—like the mineral-only on Circuit Breaker and its position next to a low-ground expansion—make for important strategy differences. In an example of a different kind of adaptability, Last gained an advantage over Flash in their recent ASL match by recognizing Flash’s habit of building his barracks forward, to lift off and scout sooner. Last scouted for the forward rax and harassed the building SCV. I’m very interested in understanding that kind of human adaptability so that bots can eventually reproduce it. I think bots won’t catch up with humans strategically until bots can adapt broadly and deeply by learning over time.

How can a bot even get started on a map like Crystallis? Without being told, how could it figure out what to do to get gas? Next: Means-end analysis.

Zia and its coat of many strategies

I had been hoping that Zia would start to choose between its openings, and now that it has I want to see how it’s doing. So I watched a bunch of replays. It’s using strategy learning, though I can’t say in what form. I predicted that choosing between its strategies would be advantageous, and it’s true to an extent.

With more variety, Zia has become more entertaining to watch. I like it. Zia plays these openings that I’ve seen:

  • 5 pool
  • 9 pool
  • 9 pool speed
  • 12 hatchery

I didn’t catch it playing overpool or 12 pool, which you might expect to be common.

Zia’s opening chat message gives a hint about its opponent model. It says “Nice to meet you!” for new opponents and “Hi again!” for opponents it has met before. And it either predicts a “harsh game” or claims “I may overwhelm you.” I think it picks the second message when it believes it has found a strong counter strategy.

Against opponents with a single strategy which is directly countered by one of these openings, like ZZZKbot’s 4 pool (hard countered by 9 pool plus a sunken so that the trickle of attacking lings has no chance whatever), Zia seems to learn the counter and should then win every game. Zia even managed to find a strategy that gives it a chance against IceBot—Zia won a game which brought out weaknesses in both bots, weaknesses I didn’t realize IceBot suffered from.

And I see signs that Zia adapts after the opening. For example, I saw it add a spire when it needed scourge for air defense. I get the impression that it decides flexibly between hydralisks, mutalisks, and lurkers for the middle game—at least it’s not hardwired, maybe it’s random, I hope it’s learned. I have seen it play 12 hatch, 11 pool, 10 gas and also 12 hatch, 11 gas, 10 pool; I hope it’s foreseeing how much gas it will want to boot up its future unit mix.

Playing many openings does have a disadvantage: It’s harder to play all of them well. It’s not enough to know the build, you have to know how to play it, and it adds up to a lot of knowledge. The worst is Zia’s 9 pool speed opening, which it plays in a strange way as a late zergling all-in: It makes 100% zerglings until it attacks around supply 20-24; if it fails, Zia doesn’t have enough economy for the middle game. (I expect a 9 hatch build would strike harder if you want to play that way.)

Zia still plays poorly overall, if you ask me. It needs to brush up on skills like not sending drones through the enemy army. It needs better scouting (it doesn’t send out its initial overlord), better tactics (no, don’t run up the ramp to fight the bunker! Hit the SCVs in the expansion first!), better engagement skills (big groups of zerglings should surround before attacking), and better micro (in lings versus zealots, retreat a ling that will die in 1 more hit). And stuff. It’s a hard game.

Zia’s current description is “Implementing more strats . . .” I guess the author has the most fun with that, which is all that really matters, but it’s not the way to a winning bot. Breadth of skills, not depth of skills: You gain more by reducing your weaknesses than by increasing your strengths. Zia already has relative strength in strategy, and will improve most with other skills.

Hmm, I should write a post about The Winning Attitude for authors of game programs. Only for those who seek the winning attitude, of course; it’s optional.

Tomorrow: Novelty maps.

give your goals priorities

This post is for people who want to move their bot’s decision making beyond chains of if-then rules and hadn’t realized how easy it is to start.

As I mentioned in a comment a few days ago, I watched a game in which a protoss bot’s base was under attack by dark templar. The defender had a robotics facility and observatory, and it either had the smarts or got lucky enough to produce an observer during the attack. The new observer instantly set sail for the far side of the map to scout expansion spots, and the unopposed dark templar soon tore down everything, gg.

Well, maybe the defender didn’t how to use detection at all, but I want to draw a different lesson: Do the important stuff first. Defending your base is more important than finding out whether the opponent has expanded. Attach priorities to your goals.

From what I’ve seen, most bots make most of their decisions by if-then rules, and they do the important stuff first by checking the important rules first. And that’s a good start, but I think that adding a little more smarts can give a lot more adaptability.

Separate goals from their priorities. Every goal has an importance: Defending your base is necessary, it keeps you alive; scouting is less urgent, and so on. If you have an if-then chain, you can easily re-architect it as a goal priority calculation. Each rule, instead of performing its action, assigns a priority to its goal, or adjusts its goal’s priority. At the end, accept the top goal. Once you’ve done this mechanical code refactoring, your decision architecture is more flexible and you’re free to make decisions in more complicated ways without messing up your code.

I think of it as a simple kind of search. It’s a search over goals where the evaluation function tells you the goal’s importance. The evaluation function might do something complicated, but the decision architecture is easy to understand.

Once you’ve separated goals from priorities, a further step could be to separate goal priority from goal feasibility. Every goal needs some resources to accomplish. If you can figure out what those resources are, then you know how to divide your resources to accomplish multiple goals at once and move up to a whole new level of capability. Of course it can be hard to figure out the resources needed. What constitutes enough base defense? But if you can do it, then you can split your army in a principled way: These units to defend the main base, those split off to defend the new expansion—or those go to harass, or whatever. Or: This goal cannot be accomplished, give up on it. Or: These two minor goals can both be accomplished, and together they weigh more than the one major goal.

This goes, of course, for goals at all levels of abstraction: Strategic, tactical, unit control.

Tomorrow: Checking in on Zia again. After that: Novelty maps (a topic secretly related to this one, gnekh gnekh).

specific knowledge

This rule of thumb occurred to me: Every strategy or tactic that requires specific knowledge to defeat, is likely to beat many bots.

If you don’t know how to fight carriers, then carriers beat you, and XIMP knows it. If you don’t know how to fight lurkers, then lurkers beat you. If you don’t have specific knowledge of dark templar, zergling rushes, or cannon rushes, then they’ll beat you.

“If you see an enemy structure in your base, kill it now even if you have to pull workers” is general knowledge and stops all kinds of proxies that are scouted, including cannon rushes. But if the cannons come up, to work around them or fight them you need specific knowledge of that situation.

Bots start out ignorant and adding knowledge is hard, so each bot tends to have only the knowledge that its author thinks crucial. So if you know any trick or tactic (no matter how crude and noobish) that you can defeat only with specific knowledge (no matter how little or how simple), then why not try it? Maybe your bot will be the next Stone, which had a frivolous strategy but a top score.

Tomorrow: Give your goals priorities.

counters 3 - detection

About detection as a counter—I didn’t find much to say. Get it when you need it, or that is, when you expect to need it (react to the future).

I do have a few general observations. Each race has invisible stuff that’s valuable even when the opponent can detect it. Invisibility is a force multiplier, but wraiths, spider mines, dark templar, and lurkers can remain strong when seen.

Also, detecting invisible stuff is not the only way to cope with it. The area spells nuke, storm, maelstrom, stasis, ensnare, and plague do not care whether units in their area of effect are detected. Maelstrom, stasis, ensnare and plague make cloaked units visible. Only nuke and storm affect underground units. Walling or physically blocking with units can keep dark templar from crossing a choke—they’ll have to fight their way through, gaining time to get detection. Terran spider mines can defend against dark templar without needing to detect them.

how to detect

Every race gets a static early detector (that also provides air defense) plus a flying detector. I assume that the combination static detector + air defense design is intended to balance wraith cloaking.

terran
turretearly
comsatmidgame
science vessellate

Because terran’s mobile detector is late, terrans get comsat for midgame detection. It’s part of the terran “low tech but adaptable” theme. Good opponents know how to exploit terran’s limited comsat energy: For example, dark templar can provoke scans at different places and times and eventually become able to get free hits. The more scans terran spends on cloaked units, the fewer are left to examine your base and your army composition and location.

protoss
cannonearly
observermidgame

The protoss twist is that observers both provide detection and are cloaked.

zerg
overlordearly
spore colonyearly

Zerg gets detection for free with overlords, so the main detection issue is usually whether and when to get overlord speed. For detection purposes, it’s a matter of weighing the safety of overlords and the ability to pre-position them where they may be needed. Whether and when you want to get drop also matters.

what needs detecting

terran
spider minesmidgame
cloaked wraithsmidgame
cloaked ghostslate

Spider mines are so numerous that opponents often don’t try to detect them but force them or sacrifice units to clear them in a hurry.

protoss
dark templarmidgame
observersmidgame
stuff cloaked by arbiterslate

Permanent arbiter cloaking more or less forces terran to get vessels and protoss to bring observers. Zerg usually has overlords all over anyway and doesn’t have much trouble.

zerg
burrowed unitsearly
lurkersmidgame

Burrow traps are rare because they don’t often work, but we do see burrowed hydralisk traps sometimes versus corsair-reaver strategies. And burrowed zerglings for map vision and to delay expansions do appear in human play.

Apparently I have no deep insights into detection, but it was a request so I tried. Maybe it will be of use to bot authors who haven’t mastered the game yet.

counters 2: ground versus air

Today’s topic of ground versus air is more complicated than yesterday’s topic of air versus air, so I don’t go into as much detail. Not that anybody was overwhelmed with details yesterday. It’s all Quite Abstract, ahem, allow me to adjust my spectacles.

Two systems of counters are designed into the game for ground units as a group versus air units as a group.

you need anti-air

The first and most basic system of counters is:

  1. Not all ground units can shoot upward.
  2. Those ground units that can shoot upward are more efficient than air units.

#1 means that as soon as the opponent has wraiths, your tanks need to bring goliaths along with them everywhere, or to stick to places where you can build turrets, or something. In every matchup, you have to worry about air defense. In PvZ, corsairs and not ground units are the favorite air defense, but that doesn’t change the principle.

#2 means that bringing goliaths is all you need. A few goliaths can beat a lot of wraiths, so you don’t have to give up on tanks altogether. Even if the opponent has mass carriers, goliaths are efficient and you can keep tanks. #2 also means that ground units tend to be more important than air units. The more efficient unit can overwhelm the enemy with strength; the less efficient unit will need to win with skill if it can win at all.

You may be surprised how thoroughly and carefully the units are designed so that ground has an advantage over air. 8 unupgraded marines, the same mineral cost as a battlecruiser (and much less gas cost), are about equal with a battlecruiser. 8 marines with stim can easily shoot down a battlecruiser. 2 hydralisks, the same mineral cost as a guardian, can shoot down a guardian. And so on.

air units have countervailing advantages

The second system of counters has to do with properties of air and ground units that hand air units an advantage sometimes, even though air loses head-to-head.

  1. Air units can go anywhere.
  2. Air units stack.

#1 means that air units can outmaneuver ground units to gain a local preponderance of force. They can make hit-and-run attacks, trying to stay a step ahead of the defenders, or to spread them thin so they can be defeated piecemeal, or to convince the enemy to spend on static defense. Ground beats air in a head-to-head fight, so air will avoid that and go for guerilla action until it gets far enough ahead to win straight up.

#2 means that air units can use mass more effectively than ground units. A group of mutalisks can stack up so that they all attack at the same time. If they are picking off marines, then rear marines may be unable to return fire—mutas will try to hit when marines are in poor formation. The same for other air units. This advantage of mass air is why each race has an air splash unit, as I talked about yesterday—the air splash unit means that the defender’s advantage remains even against mass air. Air splash at least forces mass air to scatter and lose its stacking advantage.

Also, every race has an air siege unit that can win the game if unopposed. If the map is mined out and nothing is left but a couple battlecruisers for one side, the cruisers can slowly yamato away static defense and blast down everything else. Protoss has carriers and zerg has guardians. Even when opposed, the long range attacks make cliff positions valuable.

Tomorrow: Detection. Though I haven’t thought of much to say about it yet.

counters 1: air combat units

I got a suggestion by e-mail to theorize about ground, air, and detection. It’s a vague request, but I take it to be about the systems of counters designed into the game, many of which are arranged rock-scissors-paper style: valkyries counter wraiths, battlecruisers counter valkyries, wraiths counter battlecruisers. So, in hope that this will be of use to some people....

Instead of facing the question head on, I’ll start with air as an example. The design of the air combat units in Brood War is more straightforward than the design of the ground units. The terran and protoss designs are closely similar in outline:

terran unitground attackair attack
wraithweakstrongest
valkyrie-splash
battlecruiserstrongstrong

I’m leaving out spell units like science vessels and spells like wraith cloaking. Not to mention all the details that I’m not mentioning.

protoss unitground attackair attack
corsair-splash
scoutweakstrongest
carrierstrongstrong

Each has a ground harass unit with a strong anti-air attack, a splash anti-air unit to counter mass air, and a capital ship that is strong all-around and resistant to direct splash attacks. The difference is that for terrans, the ground harass wraith is cheap and the splash valkyrie is expensive, while protoss has it the other way around, a cheap corsair and an expensive scout. Corsairs counter scouts, scouts counter carriers, carriers counter corsairs—at least notionally. A carrier has base armor 4, so a corsair with attack 5 can barely scratch its hull, but corsairs counter interceptors, which can be as good. Head to head, 1 carrier can easily defeat 4 corsairs which cost more than the carrier and its interceptors. With enough corsairs and a situation that allows them to stand off and attack interceptors, the costs go the other way. The moral is, the outline is only an outline and details count.

“Corsairs counter scouts” is another simplification. Air units stack to attack together (and there’s a limit to how widely they can scatter and still act as a fleet), and air splash damage also stacks. So the anti-air splash units become more cost effective in relation to the enemy as the enemy fleet gets larger. The larger the fleet the harder it can be countered, so the net effect on strategy in terran and protoss matchups is to make ground combat more important, at least until late game when capital ships come out.

The zerg design is different—

zerg unitground attackair attack
scourge-strongest
mutaliskweakweak
devourer-splash
guardianstrong-

—because the strengths and weaknesses are split up differently and have some twists. As suicide units with low hit points, scourge are risky and difficult to use in large numbers, but they’re efficient when they hit. Devourers don’t do splash damage directly but by splashing acid spores, so that devourers become support units—that’s good game design, it means players have to coordinate units. Mutalisks are the only air unit of any race that is both cheap and versatile, and they’re faster than battlecruisers or carriers, but they are countered by scourge and by devourers plus anything that can attack air, and they don’t directly counter any air unit of any race except guardians.

Consider the timings of the anti-air splash units. Corsairs fly early, so terran and zerg should be reluctant to commit to large air fleets vP until late game. Valkyries are later and more expensive, so zerg can harass early with mutalisks vT; scouts are too expensive to be harassment units. Devourers fly late and zerg needs overlords, so opponents vZ can go air if they choose. That and the high mobility of air units is why ZvZ is usually a mutalisk-scourge battle until late game (which is not often reached).

The cross-race unit counters are understandable in outline from these tables plus a little background knowledge: Battlecruisers can one-shot scourge, so scourge counters carriers harder than cruisers. Devourers splash in a way that counters capital ships with their heavy armor, unlike valkyries and corsairs. That’s most of the greater-than/less-than knowledge of counters needed for air-to-air fights. It doesn’t say how much greater than; to code it, you need numbers. Knowledge of counters is about knowing which units to build and which units to send; combat itself ain’t so simple.

The idea of today’s post is to set a point of view. It’s like setting a nail. Now when I get down to it you should know what I’m hammering on.

Tomorrow: Air versus ground, in general terms.

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.