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 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.
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.
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.
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