archive by month
Skip to content

Steamhammer 1.1.1 retrospective

Now that Steamhammer 1.2 is out, I want to think back over the lessons of version 1.1.1.

Steamhammer 1.1.1 was shockingly successful. The high end of my expectation was that it might reach an elo a little over 2200, and that seemed unlikely. In fact it had a final elo of 2285 and maintained a position as the #3 bot on SSCAIT, behind only Iron and Krasi0. Even when it hit a losing streak (which I helped along by voting for lower-rated opponents that were likely to beat it), it quickly bounced back. What did I accidentally do right?

Compare Steamhammer to AILien. They’re about the same age and both are descended from UAlbertaBot. We’ve helped each other out with bug fixes and ideas. AILien is ahead of Steamhammer in most zerg skills: It has better scouting, better tactical decisions, better building placement, better worker defense, better overlord safety, better cooperation of mobile units with sunkens—I have a lot to do to catch up with it, if I ever can. And yet Steamhammer is stronger by 100 elo, a large difference. What’s going on?

I didn’t expect it and I can’t explain it. Some of the bugs introduced in this version seem devastating, but they turned out to hurt results only against a small number of opponents. All I can do is explain my choices and conclude that somehow they were good choices.

1. Play efficient openings. Steamhammer’s builds are not all perfectly tight, but they’re pretty good and they put pressure on the enemy. I haven’t seen such good builds from any automatic code, whether BOSS or AILien or Steamhammer’s own strategy boss or any other bot. Handmade is still better—so far!

2. Keep the pressure on. Steamhammer plays the full range from fast rushes to economy-heavy openings, but it prefers low-economy pressure builds. I thought: Bots are good at attack and poor at defense, so keep attacking! AILien prefers a strong economy; it’s not a mistake, but it may be less effective at exploiting weaknesses in other bots.

3. Stay strategically crisp. Zerg larva management means that zerg can switch its unit mix suddenly to push the opponent off balance. I took the attitude: Don’t adapt to the situation, drive the situation so that the opponent has to adapt. That’s why Steamhammer makes explicit unit mix and tech target decisions. I directly coded in bias and hysteresis, so that it doesn’t change its mind lightly:

bool StrategyBossZerg::vProtossDenOverSpire()
{
	// Bias.
	int denScore   = 3;
	int spireScore = 0;

	// Hysteresis. Make it bigger than the bias.
	if (_techTarget == TechTarget::Hydralisks) { denScore   += 13; };
	if (_techTarget == TechTarget::Mutalisks)  { spireScore +=  9; };
	...

4. Fix bugs and stay resilient. As it stands, at least half of Steamhammer’s lost games show severe bugs—maybe not game-losing bugs, but deeply harmful bugs that destroy resilience and take away opportunities to come back. The bugs I fixed between version 1.0 and 1.1.1 likely made a big contribution to Steamhammer’s strength.

Are these the real reasons? Well, I already said that I don’t know. If you’ve watched the games, what do you think?

Tomorrow: Early returns from Randomhammer.

Trackbacks

No Trackbacks

Comments

Ail on :

A big part of the reason is also that Ailien about 2 weeks ago was super buggy and lost almost 300 Elo, which takes a long time to recover from.

Also Ailien contains a crash bug that struck about every 10th game. Not much but enough to drop quite a bit of Elo.

You say Ailien has better scouting and better overlord safety? I think this contradicts a little. McRave is particularly avid to punish my better scouting by viciously hunting down every overlord it sees. Luckily he's the only one doing it in this manner.

But overall you are spot on with the handcrafted aggressive low-economy builds. A good trick to beat Ailien is a timing push where you don't let it see your units until it is too late. Letabot does it all the time.

BTW. About Randomhammer: When it rolls Protoss and does that 9-10 build I have a really hard time. I play my 9 pool opening against random and it is much worse at holding the Fastexpand than is 12hatch.

Jay Scott on :

Playing versus random really puts a premium on adaptation! Steamhammer is not going to be good at it until it has online opening adaptation. Objectively, I think overpool is better than 9 pool versus random, but in practice it depends on how well the bot plays the different cases.

krasi0 on :

I guess all 4 points make their own significant contributions to the overall success. But one thing that I've noticed is really outstanding is your mutalisk play - they come very early and they hit really hard. Aside from the bunker obsession, the mutalisk attacks are usually devastating for the opponent.

Jay Scott on :

That’s due mostly to the good openings, and partly to improvements in targeting. The actual mutalisk micro is unchanged from UAlbertaBot and is thanks to Dave Churchill.

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.