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.
Comments
LetaBot on :
krasi0 on :
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 :
Nathan Gamble on :
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 :
Jay Scott on :