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 5.3.6 of for AIIDE 2025. 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 version 5 and later, the races are roughly similar in strength, but 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.

Steamhammer’s tournament history since December 2016.

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

• Steamhammer’s machine learning component.

the latest: Steamhammer 5.3.6

The AIIDE 2025 version (identical except for a few configuration options for the tournament). I haven’t released source in a long time, and there are many, many improvements. The headline feature is a new macro system for terran and protoss, which hugely improves terran and protoss play. I removed Dave Churchill’s original BOSS code, which is buggy and needs careful use for decent middlegame macro, and wrote my own that makes it easier to get good results. Terran and protoss each has a new strategy boss which analyzes the game situation and decides what units, buildings, and upgrades it wants. It translates its decisions into production rules that are executed by a Maker subsystem which figures out how to produce efficiently. Macro is usually good and has stretches that are close to optimal. The zerg strategy boss is still written in the original style, which has not changed.

There are new skills to improve play for all races, especially terran (Steamhammer’s weakest) but protoss and zerg to a lesser extent. For example, marines are much better at engaging mutalisks or speed zerglings.

On the BASIL ladder, Randomhammer (Steamhammer playing random) surpassed Steamhammer zerg’s all-time peak Elo rating on 17 November 2025. It took at least a month for the learning system to figure out what terran and protoss builds work against each opponent.

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, carrier control, 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.

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 sharper micro. The squad structure needs to be revamped for greater flexibility and power. I have laid outline plans and some groundwork for all of them, but there’s a lot to do.

downloads

sc-docker provides a full environment and may be the easiest way to get moving. For manual setup, see Installation Instructions for UAlbertaBot’s setup instructions, which also work for Steamhammer. (You need Starcraft 1.16.1 specifically. BWAPI does not work with the Starcraft 1.18 patch or later, or with Starcraft Remastered. Instructions that say “connect to battle.net to update to 1.16.1” are long out of date.) Versions 2.1.4 and earlier require the BWTA2 terrain analysis library; versions 2.2 and later do not. The BWAPI version (included in the binary release) is 4.4.0 for versions 3.3 and later; 4.1.2 before then. To run a binary release, copy Steamhammer’s configuration file (the JSON file, named with the number of the version it goes with) to the folder bwapi-data/AI/. Binaries are of course most safely run under a virtual machine.

“Elo” below is elo ratings from BASIL. When there are two numbers, the top one is Steamhammer zerg and the other is Randomhammer (Steamhammer playing random). The opposition is always changing, so the longer the time period, the less comparable the numbers are. Before version 2.3, ratings were from SSCAIT and are not comparable with later ratings.

Missing time between dates in the table indicates when I was running versions which I did not release. Version 1.2.3 does not have a known elo rating because of an SSCAIT server fault on the day it was released. From now on I intend to only include start dates.

binary source docs elo date notes
5.3.6 binary 5.3.6 source - 2929
2905
10 Oct 2025 terran and protoss macro
4.0 binary 4.0 source - ? 16 Feb 2024 machine learning
3.6.1 binary 3.6.1 source - 2885
2812
22 Oct 2023-unrecorded date post-AIIDE 2023 fixes
3.5.10 binary 3.5.10 source - 2872
2800
1 Oct 2021-22 Oct 2023 AIIDE 2021 version
3.3.5 binary 3.3.5 source - 2599
2511
21 Dec 2020-19 Jan 2021 SSCAIT 2020 version
3.3 binary 3.3 source - 2673
2508
5 Dec 2020-21 Dec BWAPI 4.4.0
3.2.19 binary 3.2.19 source - 2678
2581
1 Oct 2020-5 Dec AIIDE 2020 version
3.1 binary 3.1 source - ~2650
~2550
12 Aug 2020-1 Oct raid defense
3.0.2 binary 3.0.2 source - 2701
2596
5 Apr 2020-12 Aug skill kit
2.4.2 binary 2.4.2 source docs 2577
2437
23 Dec 2019-5 Apr 2020 burrow skill
2.4 binary 2.4 source docs 2480
2336
28 Nov 2019-22 Dec
16 Dec
HumanOpponent setting
2.3.5 binary 2.3.5 source - 2480
2304
17 Sept 2019-24 Oct AIIDE 2019 version
2.3 binary 2.3 source - 2461
2356
2 Apr 2019-18 Aug
2 Apr 2019-17 Sept
fixes
especially terran and protoss
2.1.4 binary 2.1.4 source - 2263
2206
20 Dec 2018-2 Apr 2019 SSCAIT 2018 version
2.1 binary 2.1 source - 2145
2037
14 Nov 2018-20 Dec supports all races again
2.0 binary and source - 2164 6 Oct 2018-14 Nov AIIDE 2018 version
zerg only
1.4.7 binary 1.4.7 source - 2177
2009
13 Jul 2018-6 Oct (zerg)
-14 Nov (random)
critical bug fix
1.4.6 binary 1.4.6 source - 2140
2028
12 Jul 2018-13 Jul CIG version + trivial tweaks
crashing bug!
1.4.4 binary 1.4.4 source - 2185
2037
18 Jun 2018-12 Jul bug fixes
1.4.3 binary (no source) - 2087
2041
11 June 2018-18 Jun AIST S1 version
learning data cleared
1.4.2 binary 1.4.2 source docs 2148
2057
14 May 2018-11 Jun learned opening selection
1.4.1 binary 1.4.1 source docs 2158
2098
1 Apr 2018-14 May fixes
1.4 binary 1.4 source docs 2136
2144
1 Feb 2018-1 Apr opponent model
1.3 binary 1.3 source docs (data lost) 6 Aug 2017-8 Sep morphed zerg units
1.2.3 binary 1.2.3 source docs (unavailable) 13 May 2017-25 July drop strategies
1.2.2 binary 1.2.2 source docs 2232
2200
3 Apr 2017-13 May bug fixes
1.2.1 binary 1.2.1 source docs 2181
2057
27 Mar 2017-3 Apr basic skills, especially for terran
1.2 binary 1.2 source config 2291
2091
16-27 Mar 2017 supports all races
1.1.1 binary 1.1.1 source config 2285 28 Feb 2017-16 Mar 2017 critical bug fix to 1.1
1.1 binary (no source) - - 27-28 Feb 2017 adaptive strategy boss
(suffers a critical bug)
1.0 binary 1.0 source config 2163 28 Jan 2017-27 Feb 2017 randomized openings
0.2 binary 0.2 source - - 17 Dec 2016-28 Jan 2017 SSCAIT 2016 tournament version
0.1 binary 0.1 source - - 11 Dec 2016-17 Dec 2016

Jay Scott <jay@satirist.org>
page originally created December 2016
last updated 17 November 2025