Steamhammer 2.4.1 change list
Steamhammer 2.4.1 is the version for the SSCAIT 2019 tournament. Version 2.4.2 with source release should follow shortly with only one significant change, SCHNAIL recognition.
For the tournament, I replaced the SSCAIT learning data with data from BASIL, because BASIL has more games that are recent. There are downsides; it could be that it was a mistake. I made a small number of hand edits to the learning data. For example, for StyxZ, I deleted games from before Styx was updated and suddenly became strong. I edited data for 7 opponents in total, usually just altering one game record.
First an explanation of my supposed Killer Feature, then the change list proper.
the Killer Feature
The “Killer Feature,” which is no more deadly than your average killer app, is to burrow zerglings at bases that the opponent is likely to want to take soon. CherryPi did this a couple of years ago, and I was surprised that bots which know how to cope with spider mines laid to block base locations were often unprepared for burrowed zerglings doing the same thing. Two years later, bots which remain unprepared may get into trouble. Burrow has many many uses, and Steamhammer will take advantage of more of them in the future; in choosing a burrow skill, I am looking ahead. There are 3 parts to the system.
The strategy boss by default researches burrow after Steamhammer takes its third base. If the opening build takes three or more bases, it starts the research shortly after the opening. This is late enough in the game that the research is not a major expense, but it does lose the opportunity to exploit burrow early on.
The 9PoolHatchBurrow
opening researches burrow much earlier. It is for use against opponents which may be vulnerable. 9PoolHatchBurrow
is a variant of the Styx opening which collects 200 gas instead of 100 and researches burrow immediately after zergling speed, trading some of the zergling punch for the burrow ability. The two upgrades finish at almost the same time, because burrow (1200 frames) doesn’t take as long as speed (1500 frames). The aim is to get burrow early while pressuring with zerglings, and try to burrow a zergling in the enemy’s natural to delay or displace the expansion and mess up the enemy’s build. Burrow normally finishes before the enemy has scan or observers, so even an opponent which knows how to react may be delayed.
I tweaked the learning data so that this build will be given a try against a few opponents.
The Watch squads are for scouting and base denial. The design attempts to gain the most impact with the least investment. The combat commander creates from 0 to 4 Watch squads (depending on Steamhammer’s ground strength and other factors) of 1 zergling each, and assigns the squads to watch the bases closest by ground to the enemy main. It may also assign overlords to watch further bases, but usually by the time there are overlords to spare, it is not safe to assign them. A Watch squad behaves like any other squad, except that if a squad member finds itself at the order position and is able to burrow, it does. (It’s literally a few lines of code.) Once at least one zergling is under the ground, the combat commander attempts to keep the most important Watch squad on station despite any reverses, because to disband it would throw away the investment.
When Steamhammer decides to expand to a base, any Watch squad stationed there is disbanded immediately. The zergling unburrows and joins the ground army long before the drone trundles in to make the hatchery. The disbanding is 1 line of code in a condition in the combat commander, and the unburrowing and leaving is standard behavior that was written into the squad long ago. The whole Watch implementation is as simple as I could make it.
I’m eager to see how the Watch implementation works in practice. When Steamhammer faces a full range of opponents, the results of a new feature are always more complicated than I see in my testing.
configuration
• I added a new configuration section Skills
which is intended to separate out some items from the long Strategy
section. For now, it has Burrow
, MaxQueens
and MaxInfestedTerrans
items. Later I’ll move some items over from Strategy
.
For this SSCAIT, Burrow
is true, MaxQueens
is 1, and MaxInfestedTerrans
is 0. The strategy boss is willing to make up to 2 queens, but I decided that the second one probably costs more than it is worth for now. Steamhammer has a bug in the production system that prevents it from making infested terrans, so it’s better not to try.
infrastructure
• UnitInfo
keeps track of whether a terran building was lifted when it was last seen. For some reason I resisted doing this earlier, but it’s important information. The first use is in squad targeting, when checking whether an enemy building is a good target for a given squad.
• Another use of the terran lifted building info is a new skill: If all known enemy buildings are lifted and all known enemy units are air units, Steamhammer will only include anti-air units in its unit mix. It sounds obvious, but ultra-ling is a potent way to finish off a zerg or protoss which has only air units left, and is only weak versus terran that has lifted buildings. This skill is intended to solve a rare difficulty in finishing off a terran—I have seen it happen in only 2 games.
• Don’t try to expand to a base which is known to be blocked by an enemy building or burrowed unit. There’s no point in sending a drone to build on top of a spider mine which has been scouted. This also, of course, checks whether the building is lifted.
• Efficiency fix: Use base->getTileDistance()
precalculated ground distances in some places instead of recalculating the distances.
• Config::Debug::DrawMapDistances
now draws tile distances from its current main base rather than from its starting base. You can see what Steamhammer considers to be its current main base, which may change during the game.
• I removed the unfinished and unused Region
and Regions
classes. I had forgotten they were there.
zerg
• Research Burrow, if enabled in the configuration, usually just after the third base is taken. The strategy boss will delay the research for some emergencies or if the economy doesn’t justify it.
• The Watch squad scouts and denies bases. It is implemented for zerg only. Other races don’t have enough cheap units to dedicate some to sitting around, and are better off with the Recon squad alone.
• A critical bug in upgrade checking could cause production freezes. Ouch. Fixed.
• In ZvZ, get +1 melee attack instead of +1 ground carapace as the first ground upgrade. It’s cheaper, and it’s what humans usually do. I think the theory is that killing drones faster is more important than a small edge in resisting mutalisk bounce attacks.
openings
• The 9PoolHatchBurrow
opening is added. See above.
• Minor tweak to ZvP_3BaseSpire+Den
. It gets 1 more drone.
Comments
Yegers on :
Good luck in the tournament and happy holidays!
Dan on :
Good luck in the tournament!
Jay Scott on :
MarcoDBAA on :
Already have a favourite game (for now):
http://www.openbw.com/replay-viewer/?rep=https%3A%2F%2Fsscaitournament.com%2FReplays%2FZNZZBOT%2F0027-ZNZZ_Simp-PvZ.rep
Who wins? National University of Defense Technology (NUDT), China and Nanjing University (NJU), China protoss bot ZNZZBot based on Da Quin
MarcoDBAA on :
Who wins? National University of Defense Technology (NUDT), China and Nanjing University (NJU), China protoss bot ZNZZBot based on Da Quin, based on Locutus, based on Steamhammer, based on University of Albertabot, or a zerg bot simply called "Simplicity"? ;)
Best parts:
@ 12:00 The fear is real. xD
@ 15:30 You want to run again? Sorry, but I won´t let you this time.
Jay Scott on :
MarcoDBAA on :
And Simplicity becomes really dangerous now, not only fun.
Maybe a bit too late to get into the top 16 this year however.