archive by month
Skip to content

Steamhammer (Z)

ZerGreenBot was re-uploaded today. I hope it’s much improved! And I uploaded my bot for the first time today, not because it plays an interesting game (because it doesn’t) but to start getting my hand in and see what’s up.

My bot is named Steamhammer, a reference to the legend of John Henry. Steamhammer plays zerg.

Steamhammer’s play is crude, at the level of figuring-out-how-this-stuff-works. I hope to squeeze in one more update before the SSCAIT deadline and put the fear of zerg into at least a few opponents. Steamhammer won’t begin to resemble my intentions for it until some time next year. While SSCAIT is running I should be able to get the first fun ideas in place.

UAlbertaBot

I chose UAlbertaBot as my base, because UAlbertaBot seems neatly organized, comes with some documentation though never enough, and is designed to be flexible and extensible. It’s basically designed to be a research platform for trying new ideas, and that’s what I want. It can play any race, though it seems best tested for protoss. I find its code more readable than other bots I’ve looked at; only Skynet comes close, and Skynet is specialized for protoss and has a more rigid design.

UAlbertaBot has more bugs than I expected. Well, it was developed by one person and never widely tested, so maybe I should have expected them! A number have me baffled. The most devastating bugs have to do with build order. UAlbertaBot usually automatically schedules overlords when needed, but sometimes makes 2 instead of 1 (often a serious mistake) or doesn’t realize it has hit a supply block, makes no overlord, and freezes the build in its tracks (rare but usually fatal). The build order search BOSS usually behaves sensibly, but sometimes schedules extra buildings which are not implied by the build order goal, such as an extractor or a lair or a hydralisk den. These bugs can be seen occasionally in SSCAIT games. One you won’t see on SSCAIT is that if UAlbertaBot has a lurker on the field, then BOSS falls into a fit of terror and is unable to solve any goal, no matter how simple [the bug is real, but I misidentified the cause; see comments].

UAlbertaBot also has limitations. It can theoretically make any unit (I haven’t tried them all yet, and I had to fix a bug before I could make sunkens or spores), but it can’t use all of them. When I tried making lurkers I found that UAlbertaBot was unable to micro them; they sat around. Well, it’s designed to be easy to extend, and it only took me 20 minutes to code up a simple lurker controller. Not that it helped, with the lurker bug in BOSS! I also suspect that SparCraft does not know how to burrow lurkers, because a squad with lurkers runs away more often than it should.

UAlbertaBot behaviors high on my to-do list to fix: Improve base defense, improve scouting, add building placement code for static defenses and macro hatcheries.

UAlbertaBot as a test opponent

I find that UAlbertaBot makes an excellent test opponent for trying out opening build orders, because it is easy to configure it to play whatever opening you like. Edit the configuration file, add a build order as a list of units and buildings to build and tech to research, and set UAlbertaBot to follow it. No need to recompile.

UAlbertaBot may play the opening poorly, but it will follow the build order efficiently and you can catch the timings.

status

Steamhammer has different builds versus terran, protoss, zerg, or random. All the matchups are poor. ZvRandom is particularly awful—I couldn’t find a sensible build within the existing limitations. One step at a time!

In the next week or so I’ll make a dedicated web page for Steamhammer and put its code up.

Next: Outline development plan.

Trackbacks

No Trackbacks

Comments

LetaBot on :

Might want to go 9 pool versus zerg to counter all the 4 pool bots out there.

krasi0 on :

Before reaching this post (I read them in a chronological fashion), I've already posted the following as a reply to another post:
Also, congrats on your first uploaded version! It plays so well, that our first game almost ended up as an embarrassment for me! I should admit that I really got lucky after your initial muta rush. Keep up the good work! ^^

----------------
When considering the alternatives to UAB, have you looked into the Opprimo framework (former BTHAI)? It's an open platform meant to be extended and from what I've seen, it plays in many very diverse styles and seems to support a lot of functionality out of the box?

----------------
BTW, I like your rapid muta BO, how can I play against your bot locally? It looks like I need a special config file? My bot relies on the availability of config files, too, but for the sake of easier distribution, I just hardcode the contents of those files as strings inside the .exe so that people can run it without much hassle.

Jay Scott on :

1. I like the Opprimo framework but there is not as much to it. BOSS and SparCraft are good stuff, even if troublesome. Of course, they could be integrated independently.... 2. The ZvT build is a classic hell-for-leather 12 pool. Terran has to be careful because the early pressure is scary. But zerg sacrifices economy and must play super-aggressively to stay even, and so far Steamhammer doesn’t quite. I’m pleased with the build and might be able to improve the muta play some before the deadline. Overkill has the right mutalisk skills and would probably swat terrans like flies with this build. 3. I’ll post the config file to the blog today. I don’t have time now, but this weekend or so Steamhammer will get its own web page and I’ll post versions as they come out.

Nathan Gamble on :

I'm currently watching a Steamhammer vs ICEbot game.
I've noticed a few bad decisions that steamhammer makes, that look like they should have fairly easy fixes that could significantly improve play.

Steamhammer scouted a bunker with zerglings while it was under construction, but acted as if the bunker was already built and ran away from it. If the bot had recognised that the SCV and bunker were vulnerable, and attacked immediately, a significant advantage could have been made early in the game.

Steamhammer then transitioned into mutas, but ICEbot built 3 missile turrets in front of the bunker, which repelled the attacks for the majority of the game. A different path could have bypassed this entirely, and caused huge damage to the opponent's economy.

Eventually, enough mutas were massed to overwhelm ICElab and win the game, but it's worth noting that the game could have ended far sooner, and that a more competent opponent (e.g. Iron, krasi0, Leta, etc) would likely have been able to take advantage 0f steamhammer's tactical errors.

I believe that you've said that a bot's biggest weaknesses are the easiest points to improve, but I actually disagree. Minor weaknesses which only happen in certain situations often have easier fixes than major ones, and once y0u add up enough minor tweaks and additional heuristics, you can end up with an incredibly versatile bot that can recognise and adapt to pretty much all enemy tactics.

Jay Scott on :

What are the biggest mistakes I can fix before the deadline? It’s not so easy to answer, and I’ll probably get it wrong! Re the bunker: Steamhammer makes a lot of mistakes in categorizing and assigning priorities, and it will take me a while to get all the important ones. Re the mutalisks: Yes, IceBot cleverly exploits bot psychology and Steamhammer falls for it. IceBot builds a strongpoint defense, and bots tend to be attracted to fights and want to fight the strongpoint instead of the undefended base. I did think of a simple way to improve it, but outright fixing the bad behavior is not so easy. Overkill knows how to circle around with its mutas to probe for weak points, and that’s fancy stuff.

Jay Scott on :

I misinterpreted the bug relating to lurkers. It is actually caused by having a lair and no hatcheries, just as serious a bug but not the one I thought it was. There’s an issue filed against it on UAlbertaBot’s github.

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.