A BWAPI bot playing zerg in Starcraft Brood War. It can also play terran or protoss, though less skillfully. 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.

Latest version: Steamhammer 4.0 of 15 February 2024. 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. As zerg, Steamhammer is a performance program; version 1.2 ranked a stable #3 out of over 60 rated bots on the SSCAIT server. Steamhammer’s opponents have improved since then and it no longer ranks as high, but its absolute skill level has increased hugely—progress in the community is rapid. Playing terran, protoss, or random, Steamhammer is an adequate starter bot, with 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.

the latest: Steamhammer 4.0

At long last, it has a pilot version of a machine learning position evaluator, specialized for ZvZ only. It works by reservoir computing with updates from temporal differences over each game. If it works reasonably well, I’ll extend it to the other matchups and starting using it to make decisions. Other improvements include more drop skills, fixes for retreating, coordinated sunken micro to kill attackers faster, and better decisions on when to build static defense for all matchups, including predicting when defense will be needed based on past games.

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

I am testing machine learning for evaluation in ZvZ. If it works well, the other matchups will follow not long after. I would like to use it to improve opening choices before this year’s AIIDE tournament.

In the short term, 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 polish up the current rudimentary drop ability first. Mutalisk and lurker control are high on my list. Better scourge micro would save Steamhammer a lot of gas.

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 it will be long work.


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 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 the final elo rating from BASIL. 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.

binary source docs elo active notes
4.0 binary 4.0 source - - 16 Feb 2024- machine learning
3.6.1 binary 3.6.1 source - 2885
22 Oct 2023-unrecorded date post-AIIDE 2023 fixes
3.5.10 binary 3.5.10 source - 2872
1 Oct 2021-22 Oct 2023 AIIDE 2021 version
3.3.5 binary 3.3.5 source - 2599
21 Dec 2020-19 Jan 2021 SSCAIT 2020 version
3.3 binary 3.3 source - 2673
5 Dec 2020-21 Dec BWAPI 4.4.0
3.2.19 binary 3.2.19 source - 2678
1 Oct 2020-5 Dec AIIDE 2020 version
3.1 binary 3.1 source - ~2650
12 Aug 2020-1 Oct raid defense
3.0.2 binary 3.0.2 source - 2701
5 Apr 2020-12 Aug skill kit
2.4.2 binary 2.4.2 source docs 2577
23 Dec 2019-5 Apr 2020 burrow skill
2.4 binary 2.4 source docs 2480
28 Nov 2019-22 Dec
16 Dec
HumanOpponent setting
2.3.5 binary 2.3.5 source - 2480
17 Sept 2019-24 Oct AIIDE 2019 version
2.3 binary 2.3 source - 2461
2 Apr 2019-18 Aug
2 Apr 2019-17 Sept
especially terran and protoss
2.1.4 binary 2.1.4 source - 2263
20 Dec 2018-2 Apr 2019 SSCAIT 2018 version
2.1 binary 2.1 source - 2145
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
13 Jul 2018-6 Oct (zerg)
-14 Nov (random)
critical bug fix
1.4.6 binary 1.4.6 source - 2140
12 Jul 2018-13 Jul CIG version + trivial tweaks
crashing bug!
1.4.4 binary 1.4.4 source - 2185
18 Jun 2018-12 Jul bug fixes
1.4.3 binary (no source) - 2087
11 June 2018-18 Jun AIST S1 version
learning data cleared
1.4.2 binary 1.4.2 source docs 2148
14 May 2018-11 Jun learned opening selection
1.4.1 binary 1.4.1 source docs 2158
1 Apr 2018-14 May fixes
1.4 binary 1.4 source docs 2136
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
3 Apr 2017-13 May bug fixes
1.2.1 binary 1.2.1 source docs 2181
27 Mar 2017-3 Apr basic skills, especially for terran
1.2 binary 1.2 source config 2291
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 <>
page originally created December 2016
last updated 16 February 2024