archive by month
Skip to content

about Steamhammer 1.1

stand by for bug fix version 1.1.1

Steamhammer 1.1 is losing game after game to the infinite creep colony bug. Apparently I ran the wrong test games to see it. There will be a 1.1.1 release to fix the bug.

version 1.1

Steamhammer 1.1 had a shorter development period (compared to the previous version) than 1.0 did, but it includes at least as many changes.

The primary goal of 1.1 is not to play better, it is to raise the ceiling on potential performance by playing more flexibly. Every time you add flexibility you run the risk of playing worse: The bot could misuse its flexibility. Flexibility makes more mistakes possible.

1.1 includes enough strength improvements that I think it probably does play better overall, or at least fixed version 1.1.1 should. Its rating went down at first, partly due to losses to Neo Edmund Zerg (which seems to be by the same author as Newbie Zerg, 5 Rax Newbie, and 5 Pool—what is it with all this coming and going? [it is partly explained in a comment]). Over time, I expect its rating to wobble over a range offset slightly upward from 1.0 (whose final elo of 2163 was above its average).

strategy boss

The headline feature of Steamhammer 1.1 is new macro code in the zerg strategy boss. It looks at the game situation and decides on a unit mix to produce now and a tech goal to work toward. It’s not very extensive; the possible tech goals are hydras, mutas, and ultralisks. Units allowed in unit mixes include those three plus zerglings. A unit mix is specific: It always includes one mineral-heavy unit and optionally includes one gas-heavy unit, and that’s all. The units are combined as resources allow. Some of the unit mixes, like hydra-ultra, are designed for rare circumstances, and I’ll be watching to see whether they ever appear in real games.

The strategy boss has a lot of tiny smartness improvements, mostly to avoid mistakes. Overlord timing is better. It copes more successfully with a wider range of emergencies (oops, lost the main? I’ll call this base my new main). When the enemy army looks big, it may build sunkens. There are no more random unused buildings (buildings may still go unused, but they are always made for a purpose). It no longer goes overboard on scourge (that was a bug). Few situations cause production freezes, though there are still some. It can upgrade in 2 evo chambers at once. It has fine control over the economic growth rate, though it doesn’t make much use of the ability.

All these improvements have surprisingly little effect on skill. They are weaknesses that need to be fixed, but not bottleneck weaknesses that lose many games.

tactical improvements

One big improvement is the worker harass defense as suggested by AIL. Steamhammer beats Stone. This defense skill helped 1.1 to a win over Bereaver in its first SSCAIT game, losing 0 drones where 1.0 often lost 2 or more.

Another big improvement is that Steamhammer is more cautious about the range of enemy units. It understands the range advantage given by a bunker, and assumes that enemy units have their range upgrades. Units less often suicide by dawdling under enemy fire. Steamhammer was able to play longer against Krasi0 before losing due to other weaknesses.

There are a bunch of other improvements, but they’re minor by comparison. Targeting is further improved. Zerglings and scourge are slightly less stupid. Stuff like that.

One improvement behind the scenes is used only by the strategy boss for a minor purpose, but should be valuable in the future: InformationManager tracks when its data about each enemy unit was last updated. You can tell if the data is fresh or stale.

the configuration file

You can specify repeated units in a build order: “4 x drone” gets you 4 drones. Or at the end of a rush build, “50 x zergling”. The openings become shorter and easier to read and edit. 1.1’s configuration file is less than 3/4 the size of 1.0’s, even though the bot plays more openings.

openings

The new strategy boss bring changes to openings. Since the bot can now adapt to the situation, a bunch of openings have been shortened to get out of the opening sooner and start adapting. A few openings have been lengthened because the boss was likely to do the wrong thing.

The opening selection changed. In earlier versions I rejected overpool openings for ZvP (even though they’re the top ZvP openings in human play) because they require adaptation to play well. Also the ZvZ overpool openings I tried were unconvincing. 1.1 plays 2 different ZvP overpool openings, and 3 ZvZ overpool openings plus an overgas opening.

Openings are still chosen randomly with weights. The number of openings per matchup:

matchup1.01.1
ZvT89
ZvP66
ZvZ711
ZvRandom34

I dropped the ZvP 3HatchHydra opening altogether. I wasn’t satisfied with the version in 0.2 and reworked it for 1.0, but I did a thoughtless job and the 1.0 version is worse. The bad opening is responsible for more than its share of losses. Now all ZvP openings stop at zerglings and let the strategy boss decide whether to go for hydras or mutas next. In my tests it makes mostly good choices.

I also fixed tuning mistakes in the ZvT 2HatchMuta opening; it hits harder. A number of the other openings are not quite optimized and could use tuning up.

Trackbacks

No Trackbacks

Comments

AIL on :

I'm interested in what exactly you did to allow upgrades in multiple evo-chambers.

I tried fixing this odd UAB-issue earlier but postponed it after I didn't see why it wouldn't work.

Jay Scott on :

Oh, it turned out to be simple. ProductionManager::getProducer does not realize that a research building may be busy, and returns the same one on every call. I added tests to “reasons a unit can not train the desired type”: if (unit->isUpgrading()) { continue; } if (unit->isResearching()) { continue; }

MicroDK on :

"Now all ZvP openings stop at zerglings and let the strategy boss decide whether to go for hydras or mutas next." Thats exactly what I have planned. TL also recommends that in the Protoss guide. Proposal: Could we add midgame build orders to the config file that are chosen based on information after the zerglings? Basically that could be Hydra Den first or Spire first midgame build orders.

Jay Scott on :

I’m thinking that way, but it requires fancy abilities so I hope you’re not in a hurry. The longer the build order, the less sense it makes to specify it exactly, unit by unit. I’m thinking I want opening stems: 9 pool, overpool, 10 pool, 11 pool.... And I want tech paths: 3 hatch ling, 2 hatch hydra, etc. (In the general case, primary tech + number of production buildings, e.g. 2 port wraith.) Each stem can follow any tech path, unless the stem makes too many hatcheries for it. Some stem + path combinations, like 12 hatch into 3 hatch muta, can have optimized build orders in case the opponent does not interfere, but the path should not need to specify an exact build order because adaptation could happen. To follow through on this, the strategy boss needs a lot more smarts.

MicroDK on :

Optimally, it would be great if we can specify opening builds and tech paths like this: 12 Hatchery @ natural, 11 Spawning Pool, 13 Hatchery, 12 3 x Zergling, 16 Extractor, 16 Overlord, @100 Gas Lair, @100% Lair Spire, @300 Min Hatchery. In between it will make drones. In this way we use the correct timing if no one interferes that is. ;)

Jay Scott on :

Yes, it would be nice to use standard notation.

krasi0 on :

Wow! You've been really busy here. And from my initial observations v1.1 plays *much* better than v1.0 (save for the mass creep colonies bug).

Also I've found the below comment hilarious: "Zerglings and scourge are slightly less stupid." LMAO

Newbie Zerg on :

Edmund is in no way related towards my bot.

The 5 pool was only submitted due to request of krasi0.

Please edit your post to make this clear and not confuse people, I do not have any bot submitted. (5 pool was 39-11 I believe aswell and both bots were top 5 in terms of mmr before takedown.)

Thank you. Glhf.

Jay Scott on :

Neo Edmund has the same dll as your bot, so it is closely related. Of course, anybody could download and resubmit.

Newbie Zerg on :

Just checked, It's not the same DLL. Does look like he took the buildorder for the 5 pool tho. (Not that hard to create your own 5 Pool tho but alright :P )

If you opened it and checked you could easily have seen that aswell...

His bot is more than likely made with Steamhammers Vanilla Version. My own 5 Pool had better micro implemented (Some other cute changes aswell) and that's why it performed better than Neo Edmund does.

However, nice catch. Idk why he'd want to copy my stuff which is pretty bad anyways lol.

Cheers, GLHF

Jay Scott on :

If you say so. For my part, I found neo2.dll from Neo Edmund to be byte-for-byte identical to Innovation.dll from Newbie Zerg, in the version that I archived on 8 February. Those who don’t want to dig that deep may observe that they both use a configuration file named “Innovation.txt”—a name that is hardcoded into the DLL. I make no accusation—the dll is public once it is posted.

Newbie Zerg on :

Yeah that's what I was saying. The config file is 100% copied from the 5 pool bot. It's the same configuration file but he just changed name.

As for the dll I could be wrong but It doesn't seem to be the exact same version. The differences are pretty minimal tho but I think there should be some micro differences.

Besides, blatantly copying others stuff and re uploading, is that even okay? Seems abit unethical. (Since at least configuration is a 100% match.)

I also had someone on twitch pming me about using an old version of my bot, perhaps that is what is uploaded? Without the fixes I added later on, could be very possible.

Like ur blog btw and as always, have fun and enjoy ^^ :)

MicroDK on :

At least it proves that rush bots are still relevant, and that all bots should improve anti rush strategies. UAB from Dave Churchill and Stone both have high ratings in the 2100s

Add Comment

E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Submitted comments will be subject to moderation before being displayed.