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.