archive by month
Skip to content

Tscmoo’s crazy hydra rush

Tscmoo zerg was reuploaded today and plays at least 2 crazy new rushes. The one that caught my eye was a hydralisk rush that has defeated SAIDA 3-0 so far: Tscmoo opens spawning pool on 8 supply, then 7 gas, 6 hydra den, and sends 1 drone to scout (which may or may not ever return), leaving 4 to mine both minerals and gas. Then it sends out unupgraded hydras as fast as it can! It constantly juggles drones onto and off of gas, stopping gas as soon as the available vespine goes over 50. 4 mining drones are not quite enough to produce hydralisks without losing the occasional larva spawning opportunity, but Tscmoo comes as close as it can. (I have a source that claims you need 6 on minerals and 1 on gas to produce hydras non-stop from 1 hatchery. I haven’t done the measurement myself, but I’m pretty sure that 5 or 6 drones total are enough if you can juggle the gas like Tscmoo.)

Here are the 3 wins over SAIDA. Maybe SAIDA looks at Tscmoo’s base and concludes “I see a hydra den, therefore it is not a fast rush and I have nothing to worry about.” Or maybe SAIDA doesn’t worry about fast rushes at all, since its worker defense is so strong, and concludes “the drone count is low, I have nothing to worry about.” In any case, SAIDA continues with its usual greedy build and falls into a hole when the hydras appear and sweep away the first marine and first vulture. The worker defense skills against zerglings are no use, and SAIDA does not appear to adapt its build order at all. In the one game where SAIDA was not overrun altogether, its build got discombobulated and it let thousands of minerals stack up as it tried to counter the hydras with tanks—then lost to mutalisks. The 3 games show no sign that SAIDA was trying to adapt to the danger.

The hydra rush is genuinely crazy. It can only work against a greedy build like the one SAIDA thinks it can get away with (and usually can), and then only if the opponent doesn’t understand what’s happening and adapt. Tscmoo also tried the rush against terran Tyr by Simon Prins, which played a slightly less greedy build and won. All that was needed was to keep making marines.

The hydra rush is unlike any strategy I have seen before. It is also not efficient as played. It didn’t take me long to code up a small family of related rushes to try out in Steamhammer. I got one version that starts the hydras at the same time as Tscmoo and produces them faster, and another that starts them earlier and still produces them faster (at the cost of needing to do more damage to be able to transition to a midgame build). Plus in some circumstances you can increase the punch by mixing in a few zerglings. I will likely end up keeping 2 or 3 variants permanently, for occasional use. It will be a fun challenge to get strategy adaptation to use them at appropriate times.

Still next: Longer-term plans for Steamhammer. It is taking me longer than I expected to gather my thoughts.

Update: I tested one of my variants, which I named 7-7HydraLingRush, against a few opponents. Though stronger than Tscmoo’s build, it scores less than 50% against the built-in terran AI—it is utterly weak against an opponent that makes units early. But—I love the contrast—it also breaks Iron bot like a toothpick. In a typical game, Iron smells it coming and walls in. Steamhammer hammers through the wall, killing the barracks and/or both supply depots and any SCVs that come to repair, then repeats the performance on the mineral line and command center while Iron’s few units shy out of range, unable to engage. Even in a test game where Steamhammer got confused and failed to attack, it held Iron in its base and won. I’ve configured it as a regular counter-factory opening; the development version of Steamhammer now has 6, up from 4 in the current release.

Tscmoo and squad coherence

In my post about independent control for unit micro I mentioned that Tscmoo can “lose squad coherence” without explaining what that is. I meant that Tscmoo likes to spread its units out instead of keeping them in a bunch, and sometimes units that start out working together end up separated and unable to cooperate. Here are a couple games from today to illustrate. I think the behavior is especially clear with zerg, so these are games of Tscmoo zerg.

the good side

First a game to show what Tscmoo gains by scattering units over the map, Tscmoo zerg versus Wuli on Heartbreak Ridge. Tscmoo opened in a way that left itself vulnerable to Wuli’s zealot rush. When the first 4 zealots arrived, Tscmoo had 4 zerglings to try to keep its morphing natural alive. Wuli already had 2 more zealots on the way, so it was army supply 12 versus 2. It looked like the natural would fall for sure.

Well, the fight went on for a while, but Tscmoo’s basic method was to run away and lure zealots out of position, then mob any zealots that strayed and could be locally outnumbered. Wuli didn’t reinforce properly and let its units get distracted, so that its powerful army went on goose chases and accomplished little. In the picture, zealots are chasing a zergling away from the natural. Notice the yellow dots on the minimap; Tscmoo is scattered around.

Tscmoo leads goose chases

Eventually mutalisks came out and zerg won. Tscmoo prevailed because its willingness to run away in different directions confused Wuli, which did not know how to concentrate its forces on a vulnerable point like the natural hatchery. Goose chases confuse a lot of bots, including Steamhammer (so far), and they are responsible for a lot of Tscmoo’s resilience when facing defeat.

the bad side

The image I had in mind when I wrote “loses squad coherence” was a Tscmoo group coming under pressure and forced to retreat. Human players like to have lines of retreat if they are pressed back, so they can keep their units together. Tscmoo likes to form a giant concave and doesn’t seem to pay attention to lines of retreat. As the concave is forced farther back, different units may retreat through different exits so that what was once a group fighting together breaks up into subgroups that the enemy may be able to defeat in detail, or ignore and bypass. There is no longer one coherent squad.

The game Tscmoo zerg versus Krasi0 is not as clear an example as the last game, but it shows what I mean. Tscmoo went for a hydralisk all-in and laid on a punishing attack. The game was decided when Krasi0 held with strong tank placement. In the picture, Tscmoo’s retreating hydralisk group is forced off the central plateau on Jade and breaks up as I described above. The hydras took different exits and did not join up again.

Tscmoo’s forces retreat in different directions

Goose chases do not confuse Krasi0. Krasi0 goes for the throat.

Steamhammer-tscmoo games

When I first promised Steamhammer-Tscmoo games, Steamhammer had been winning most games against Tscmoo terran, despite dangerously aggressive terran play. Some of the games were good. Since then, Tscmoo has been updated, and now most of the Tscmoo bots (all except protoss) are ranked just above Steamhammer. Games have gone both ways, but I think Tscmoo has the edge overall.

a September game

In this game on Roadrunner Steamhammer played a 3 hatch lurker build that was a direct counter to Tscmoo’s fast academy. If zerg had played accurately, it would have been an easy win. As it was, zerg was unclear on the concept of defense and narrowly held by accidentally making just enough zerglings in a hardscrabble game. If Steamhammer had played a mutalisk opening, it would have lost, because the muta openings make fewer lings. Here Tscmoo’s last attack has broken through and the small terran force is frying drones—most of the drones in the picture died.

Steamhammer loses drones

But lurkers were already out, and Steamhammer broke the attack with a hammer blow and then turned the hammer outward.

Tscmoo loses everything

a recent game

Lately, Tscmoo terran has been playing sequences of tricky tech switches. Tscmoo played random on Destination in this game and got terran. It’s a 2 player map, and terran started with a barracks on 6 hidden in the corner of the zerg natural out of sight of the scouting drone, an early proxy that could be deadly. Luckily, Steamhammer tries to be ready for anything against a random player, and it opened with a safe overpool. Tscmoo in turn scouted Steamhammer’s safe opening and opted not to train marines right away (they would have died uselessly), but to move on to the next tech.

Early zerglings still did not spot the barracks. Tscmoo made marines in time for Steamhammer’s expansion; it may be a coincidence, but maybe Tscmoo is smart enough to know the timing. In any case, as you can see from the unit counts, zerg was more than prepared.

Steamhammer finds the barracks

Most of Steamhammer’s lings went to the terran main, as you can see in the minimap above. Tscmoo has strong worker defense, and the fight was not entirely one-sided. And of course Tscmoo had been preparing its next tech, vultures. When they were done, the vultures chased the lings out. Steamhammer knew what was coming, though, and put down a sunken in its main for safety, and one in the natural a little later when the natural finished. The vultures also did not achieve much.

Meanwhile, Tscmoo started a starport, the next tech switch. Steamhammer saw that too and put down a hydra den while trying to catch up in workers; despite killing a few SCVs, zerg was behind because it had made too many combat units. But instead of putting on wraith pressure, Tscmoo made an extreme move while waiting for wraith cloak research to finish: It added a tank (without siege) and pulled almost all its SCVs across the map for an all-in attack.

Tscmoo pulls SCVs

Steamhammer knew how to defend this one. Zerg made an emergency switch to mass lings with a few hydras, and with the help of the sunken the attack was beaten back with heavy losses. Zerg went from behind to ahead, plus Steamhammer started a spire and was able to safely return to droning up. Zerg had wasted money on lurker research, but it no longer mattered.

Tscmoo finally pulled the wraith switch, but the long delay meant that Steamhammer was again ready. The first wraith was able to kill a couple drones before scourge hatched. The wraith instantly cloaked when it saw the danger, but cloak is no use when you have chosen to fly right next to an overlord.

Steamhammer realized, more slowly than it should have, that mutas were the right choice, and brought pressure back to the terran. Tscmoo switched again, to valkyries for air defense, but zerg scourged most of them and terran could not hold the line long enough to build a stable force. (If it had, Steamhammer was still ahead and I think it would have switched to hydras and won anyway. It knows how.) Here scourge are intercepting the first valkyrie—by coincidence, the scourge were waiting by the starport (someday I’ll add code to do that on purpose).

scourging a valkyrie

I think Tscmoo showed greater ability, but it took big risks which did not pay off in this game. The SCV pull in particular was not a smart plan. Even so, you can see how easily zerg could have made a mistake and lost; Tscmoo earned its high place in the ranking.

Here’s a human game with a similar sequence of terran tricks: July vs Firebathero from 21 September, on the map Hitchhiker. Firebathero’s sequence of bunker to vultures to wraiths is 100% standard. July was ready and had some zerg tricks in response. Even if you don’t have much Starcraft expertise, it should be easy to see that this game is on a way higher level than the bot game.

tscmoop-Steamhammer hell-for-leather game

This game Tscmoo protoss vs. Steamhammer went back and forth, with both sides repeatedly decimating the other’s workers. On the one hand it’s kind of entertaining, but on the other it shows how weak both bots still are. Steamhammer was much too hesitant with its mutalisks, and Tscmoo did not make the right units to keep control of the situation. They both made plenty of mistakes.

Tscmoo went for a forge expand build, much safer than the bare expansions it has been opening with recently. Steamhammer opened 12 hatchery and got away with it because tscmoo didn’t scout early (if protoss scouts it in time the scouting probe can delay the hatchery, and even if that fails protoss can pull ahead economically by starting the nexus before any cannons, since zerglings will be delayed). Steamhammer has a partial understanding of how to counter forge expand, and it made extra drones and went up to 4 bases. But zerg was also clumsy around the cannons and lost zerglings unnecessarily.

Tscmoo built up zealot numbers while teching. It got a templar archives and high templar, plus a stargate that it never used (but which zerg had to prepare against). Steamhammer started with hydraling on the ground since hydralisks are good against cannons, but seeing the zealots it switched to mutalisks. Zerg started its carapace upgrade shortly after protoss started attack +1, which was correct timing, and later in the game drew ahead in upgrades.

The mutalisks cleaned up probes in the protoss main, apparently putting zerg well ahead. Notice the red zealots in the middle on the minimap.

mutalisks clean up

But the zealots were too strong for the ground army and returned the favor. The mutalisks indecisively moved back and forth, taking occasional swipes at protoss stuff but reacting late to the zealots. Here zerg seems to be fighting back, but at the 3 o’clock expansion zealots are ravaging drones with little opposition.

zealots clean up

Zerg ingeniously transferred drones between bases during the fight and lost more than it should have. When the smoke cleared, zerg had 9 workers and protoss had 12. By the numbers, zerg was narrowly ahead in army, but protoss was merging archons and if the archons maneuvered well then Steamhammer would have to back off while both sides rebuilt. The game was still on.

archon fails to clean up

Well, the archons did not maneuver well. The first one tried to engage the mutalisks by itself, instead of retreating to the cannons to wait for the second archon. That would have been a difficult move for a bot to find. Protoss lost more probes and the templar archives came under fire.

At the same time, zealots returned and killed more drones. This time Steamhammer had the sense to defend its natural with a sunken, and the zealots could not land a killing blow. Steamhammer was able to restore a modest economy while Tscmoo kept losing probes, and archons, and high templar before they could merge, and finally buildings.

Tomorrow: Steamhammer wants opening learning 2.

Tscmoo zerg is back!

Tscmoo zerg had been disappointing recently, but today it was updated and went on a rampage, scoring 4-2 against Killerbot, Bereaver (2 games), LetaBot, Krasi0, and Iron.

Tscmoo played similarly against all opponents, no matter the race. It opened 9 pool, safe against cheese and intimidating some enemies into overcommitting to defense. The rest is adaptive, but when the coast was clear, it followed up with two more hatcheries before getting gas and a hydralisk den—no matter the opponent. It dedicated itself to the long game by starting carapace upgrade before hydralisk speed or hydralisk range, an unusual and risky decision. And it took a distant “hidden” third base before spreading to the rest of the map, adding to the risk (Bereaver took advantage in one game).

Hydralisks were not always the right choice, but Tscmoo made them work with good surrounds, careful micro versus shuttle-reaver and spider mines, and distraction plays like 4-hydra drops. It made fewer mistakes.

Will Tscmoo zerg will fall back to another strategy if the hydras don’t work against some opponents? I guess we’ll see.

SSCAIT 2016 round of 8 - second half

Here is the second half of the SCCAIT round of 8. Today I’ll go over the later 2 matches of the 4, from the second video.

Bereaver vs XIMP

The newcomer protoss Bereaver versus the old school carrier bot XIMP.

XIMP always cannons itself in and goes carriers. The strategy seems easy to counter, and yet somehow it is not so easy; XIMP is still highly successful. I think protoss has the most difficult time countering the carriers. Terran can make tanks and blast down the cannon wall, and zerg can stop the carriers and prevent all expansions with hydralisks. Protoss has counters too, but they are not as simple to execute.

In game 1, Bereaver opened with two gates. On seeing the cannons it had the sense to immediately start its own natural and soon take its 3rd as well, pulling ahead in economy. Bereaver added some scattered cannons of its own, which seems strange and inefficient to me, but also got templar tech and started storm research, which is good play.

When the carriers arrived, high templar apparently did not yet have storm energy. Bereaver caught XIMP’s third starting and stopped it, which was necessary, but had made too many zealots and cannons and not enough dragoons, which was not promising against carriers. If Bereaver had mineral excess and gas shortage, then it probably should have taken a 4th base sooner.

But Bereaver did get a 4th soon enough, built more goons, and with help from some poor tactical decisions by XIMP, defeated the carriers using dragoons and storm. Bereaver had held off the carriers and stopped expansions, so it won.

Game 2 followed a similar course, but XIMP’s carriers took the long way around the map and XIMP successfully started a 3rd base (on its second attempt), while Bereaver saw nothing and opted to attack the cannon wall, setting itself back. Bereaver ignored the 3rd too long and XIMP got cannons up there, while Bereaver didn’t spend its extra money on a new 4th base after losing its first attempt to the carriers. Bereaver’s game plan failed and XIMP won.

I noticed movement on the minimap which looked like a failed reaver drop in XIMP’s main, but we didn’t get to see it in the video.

In Game 3 Bereaver got confused by the map, Heartbreak Ridge: It sent a probe to take a 3rd but was unable to navigate the mineral block. The probe wandered aimlessly. “This way! No, it’s closed off. This way! No. This way!” Bereaver went down without much fight.

XIMP, by the way, understands mineral blocks and is able to mine them out. A bot has to do a lot right to play well, and XIMP does a lot right. Bereaver is strong but doesn’t quite have the same robustness.

Krasi0 vs Tscmoo protoss

Krasi0’s game plan is to expand and build up while holding off any attacks with efficient terran defense, then move out with a large force that is difficult for any enemy to oppose directly. Tscmoo protoss is unpredictable, but it has played many games lately with ceaseless pinprick harassment. The clash of styles between two top bots promises to be fun!

Game 1. Tscmoo opened with scouts, expensive units with powerful air attack and puny ground attack. On the one hand, objectively scouts are poor at harassment. On the other hand, opponents have proven weak against widespread harassment and protoss has few other options for it. Tscmoo has won games this way, including against Krasi0.

As the game went, the scouts stopped mining at Krasi0’s natural for too long; air defense took a while to kick in. Tscmoo quickly went up to 5 bases with a fleet beacon to upgrade the scouts and shuttles with reavers to add firepower to the harassment. Krasi0 was satisfied with 3 bases for the time being, which seems fine to me.

Well, Krasi0 built many turrets and had good enough positioning, and Tscmoo’s harassment achieved nothing. Krasi0’s first push won outright. Oh well.

Game 2. This time Tscmoo went dark templar. Krasi0 the strong defender was of course prepared, and the dark templar never got close.

Tscmoo followed up with arbiters and researched recall. Arbiters started flitting irregularly across the map looking for openings, but Krasi0 had again built many turrets in its main and there were few openings to find. An arbiter finally recalled the 3rd. It stopped mining for a time but was not fully successful because the zealots in the recall did not feel like giving their lives for Aiur. Units with no escape route need the all-in mentality: “Die I must. Let me sell my life dearly.”

Krasi0 pushed out and started taking down bases, and Tscmoo never made a strong move to defend itself. Arbiters flew around stasising random units but not firing. Krasi0 built an absurd number of turrets but was too far ahead to suffer from the needless expense. Tscmoo's play was not focussed enough to make progress; it came across as scattershot and ineffective. Of course, that is largely because Krasi0 defended with cautious thoroughness.

Next I’ll cover the round of 4, likely tomorrow on the same day that the finals are broadcast. I didn’t catch up with real time after all.

Tscmoo terran apparent neural network output

I was watching the new Tscmoo terran with its reputed neural networks.

screenshot showing what looks like neural network output

Hmm, what are those red and blue dots?

detail of apparent neural network output

I read that as the output of the neural network. The dot diagram is incomprehensible unless we know about the network layout. The text is the interpretation; it looks like strategy instructions or hints to the rest of the program. I timed a couple of updates and found them 15 seconds apart, which fits with strategy information.

I can’t tell what the details mean. How can the army composition be tank-vulture if you open with two starports (see those wraiths on the screen)? Is that a prediction for the opponent, maybe? What does “support_wraiths” mean, since I didn’t notice the wraiths seeming to support or be supported by anything?

crazy new Tscmoo protoss strategy

Whoa, did y’all see that? Tscmoo protoss has a hilarious new strategy: Cannon contain into mass dark archons with mind control!

The cannon contain may win a lot of games against unprepared bots, but the dark archons—I’ve never seen that many at once.... This is even wilder than Tscmoo terran’s nuke strategy.

dark archons and zealots

Update: An even funnier picture: Mass dark archons chasing after a floating engineering bay.

dark archons chase an ebay

Zia and mutalisk micro

Zia’s mutalisk cloud is scary when it gets big. Eventually the mutas not only one-shot the units that they target, but their bounces instantly kill nearby units. The mutalisks sweep a path of destruction. But think about it—is that efficient? If mutalisk bounces at 1/3 power kill instantly, then the main attack must usually be gross overkill. Most of the firepower is wasted.

The idea of individual mutalisk control, as introduced by the Berkeley Overmind and copied by other zergs since, is to waste no firepower. Each flier independently dances in and out for safety and ideally attacks at near its maximum rate. But watch how Tscmoo zerg implements this: Its mutalisk cloud is also scary when it gets large, but usually not as scary as it could be, because it spreads out too much. Sometimes half the mutas are posing for pictures with the ground army while half are on the job. And the attackers often pick some targets over here, some over there, and don’t kill either as fast as they should. Tscmoo doesn’t focus its fire enough; it’s the opposite mistake from Zia.

Causing damage does not win games. Maximizing your damage output is not the winning move. You want to balance between killing the most important enemies and staying alive.

Try to imagine PerfectBot’s muta micro. Even PerfectBot can’t truly play perfectly, because calculating optimal micro is infeasible. But surely PerfectBot focuses fire efficiently, switching mutas fluidly between targets, taking into account importance and time to kill based on distance and damage rate and expected losses, to reduce overkill to near zero and spend less time flying between targets and strike a good balance between killing the most important stuff fast and staying alive. “This takes 5 more shots to kill, 12 are shooting, might lose 1, so switch 6 to new targets.” Zia and Tscmoo zerg are no competition for Jaedong, but I think Jaedong would boggle at PerfectBot’s mutalisks.

How close can we get to PerfectBot micro today? 1. Given a set of targets in priority order, calculating how to focus them down efficiently with minimal waste seems intricate but ultimately not that hard. 2. Folding in a desire to also minimize losses makes optimal decisions computationally infeasible. Even approximations seem tough. 3. Prioritizing the targets depends on the total game situation and will have to be done heuristically. For now I guess we’ll have to settle for a simplified algorithm.

Watching Zia last week, I thought it picked targets usually one at a time (simple 3) and once the target was chosen ignored damage taken while chasing it down (very simple 2), so the intricate-but-not-hard efficient killing calculation by itself should be a big improvement. Zia-this-week has been updated and has fancier micro than Zia-last-week, so I’m already behind the times! I got the impression that Zia-this-week is better about picking targets and switching targets and avoiding damage, but that it still wastes shots with too much overkill.

tanked and spanked

Here Tscmoo has discovered that Tyr built near the edge of its low-ground main base and is vulnerable to attack from outside. Blasting down buildings with no losses helped Tscmoo in its easy win.

Tscmoo’s tank fires into Tyr’s base from outside

Did Tscmoo’s tank just happen to wander into a good position, or did Tscmoo analyze the situation to find the opportunity?

Noticing when you can shoot across a barrier is a great skill. I’ve seen other bots miss chances for free kills with tanks and even with dragoons. And it’s not hard—all you have to do is figure out what’s in range from where, and recognize simple cases where it gives you an advantage. Human players are always on the lookout for chances like that.

recent developments

SSCAIT has binary bot downloads on the Bots & Results page. Binaries are of course most safely executed inside a virtual machine.

screenshot showing download links

Iron has continued to make progress but hasn’t yet lived up to its author’s hopes. It can now expand to its natural, though not beyond. Its game plan amounts to setting an elastic containment outside the enemy base, but its unit mix is not adaptive. An enemy that finds the right counter-mix and keeps pressure up can push the contain back and either break through or starve Iron out. Aggressive tscmoo zerg can’t be contained at all.

Tscmoo terran now knows how to kill tanks by laying mines next to them. The technique seems deadly effective. I also saw it chase down overlords with Napoleonic vigor, though only after the zerg was already toast.

Krasi0 and especially Tyr have both been playing more strongly after updates. I can’t pin down what they’re doing better, though.

Hmm, 4 terrans. Are we in for a terran renaissance?