Steamhammer

A BWAPI bot to play Starcraft Brood War. See Starcraft AI Blog for related stuff. For more info, see blog posts related specifically to Steamhammer with far more detail than this overview page. (Though for now the blog is broken. Oops.)

Latest version: Steamhammer 6.2.4 of for AIIDE 2026. Downloads and documentation links are at the bottom.

Steamhammer is descended from the open source C++ bot UAlbertaBot by Dave Churchill. Steamhammer retains UAlbertaBot’s MIT open source license.

Steamhammer is a full-featured starter bot that can play every race, and it should be a sound launch pad for any C++ Brood War bot. In versions 6.x, its strength puts Zerg > Protoss > Terran (in versions 5.x it was Protoss > Zerg > Terran). Steamhammer has more features and more specific Starcraft skills than its parent UAlbertaBot or other versatile starting points like OpprimoBot. On the downside, Steamhammer is also more complicated. Some alternatives to Steamhammer as a starter bot are Locutus, which is itself a Steamhammer fork, and concentrates on protoss skills; and Iron, which has great terran skills but is complex; authors starting with Iron have struggled to make early progress. These choices lock you into a complex starting point; if you want more freedom to set your own direction, you might prefer Dave Churchill’s minimal STARTcraft starter bot. With AI coding, you can start anywhere.

• Steamhammer’s tournament history since December 2016.

• Steamhammer’s version history. Each old version has a brief writeup.

• Steamhammer’s machine learning component, the evaluator.

the latest: Steamhammer 6.2.4

The AIIDE 2026 version. The major feature of the version 6 series is Teams, which are meant to eventually replace the legacy Squads. Squads are for combat units, and Steamhammer has accumulated too much special-case Squad code. Teams are potentially for all units and all purposes. Teams are managed by the OpsBoss (operations boss). Units not placed into a Team, and not handled by another legacy special case, fall through to the CombatCommander, which puts them in legacy Squads. A team gains its identity through injected TeamDNA, which assigns it one or more Aims, which in principle can do anything with the assigned units. For now, only a few teams are supported, and not all the needed features exist to convert a combat Squad to a Team.

I wanted to submit version 6.3 for AIIDE, with a new air team that has improved mutalisk control, but it was not even close to ready in time.

There are many improvements, though most are minor. Highlights: The evaluator is updated. Air units are less bad about retreating. Fixed bugs in bypassing the combat sim. Terran: Fixed a production bug making addons. Protoss: Carrier Team improves carrier play from absurd to poor (still good enough to beat most bots). Somewhat better early-game defense against infantry or zerglings. Zerg: Fixed a production freeze with a greater spire. Stronger ZvP due to better spending—Steamhammer’s strongest race is back to zerg.

the name

I intend several points with the name “Steamhammer”. A steam hammer is forceful and single-minded. Doesn’t it sound scary to battle against? Primarily, the name is a reference to the story of John Henry. John Henry defeated the steam hammer in competition, but he died of it. You can take it as a metaphor for the state of Brood War, or for the state of humanity relative to AI. Today we see steam hammers as old-fashioned technology, which is also a metaphor.

development roadmap

Next up: Steamhammer primarily needs better tactical and micro skills. Tactically, runby is a key skill, but for some reason I feel more like working on drop, so I expect to write a drop controller first. For terran, tanks and medics desperately need improvement. For protoss, reaver micro and corsair tactics need work. For zerg, mutalisk and lurker control are high on my list. Better scourge micro would save Steamhammer a lot of gas. All races need sharper combat micro. All these things are best implemented by switching from Squads to Teams, which will take time.

In the long term, major features on my list include opening timing, abstract strategies, a flexible building placement and unit positioning planner, a more capable operations boss, and micro improvements. There’s a lot to do.

downloads

sc-docker provides a full environment and is one way to get moving. For manual setup, see Dave Churchill’s STARTCraft README for instructions that also work for Steamhammer. The correct BWAPI version 4.4.0 is included in the binary download. To run a binary release, copy Steamhammer’s configuration file (the JSON file, named with the number of the Steamhammer version it goes with) to the folder bwapi-data/AI/. Binaries are of course most safely run under a virtual machine.

To see what the bot is doing in games, look into the JSON configuration file under the debug section, and change some of the false entries to true. I recommend the DrawGameInfo, DrawProductionInfo, and DrawStrategyBossInfo flags.

The distribution does not include Steamhammer’s machine learning evaluator data. That’s because I figure you’ll make your own bot, or at least run it against a different mix of opponents, so you’ll have to train the evaluator yourself. Just check that using and updating the evaluator are turned on in the configuration, and let it play games.

“Elo” is elo ratings from BASIL. The top one is Steamhammer zerg and the other is Randomhammer (Steamhammer playing random). This version has a lower rating for Randomhammer compared to the previous release, despite improved play, because the opposition has improved rapidly in recent months. I expect it’s due to AI coding.

binary source docs elo date notes
6.2.4 binary 6.2.4 source - 2929
2806
15 Oct 2026 AIIDE 2026 version

• Download past versions.


Jay Scott <jay@satirist.org>
page originally created December 2016
last updated 16 October 2026