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 3.5.10 of 1 October 2021. 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 AIIDE 2023 tournament version was 3.6. It has improvements to pathfinding with many, many potential uses—though only a few of them are implemented. It has a couple key bugfixes too, but unfortunately it adds a critical bug in the new code. The current version 3.6.1 fixes that bug among others. It cleans up the pathfinding and uses it in a couple more cases. The change list is not written yet, but there is more to it.
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 is machine learning for evaluation.
Following that, major features on my list include opening timing, abstract strategies, a flexible building placement 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 battle.net to update to 1.16.1” are now 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.
“Results” below are the win-loss record on SSCAIT while the bot version was active, and “elo” is the final elo rating when available. The opposition is always changing, so the longer the time period, the less comparable the numbers are. Starting with version 2.3, ratings are from BASIL and are more stable over time, though not comparable with earlier 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 |
3.6.1 binary | 3.6.1 source | - | (in progress) | 22 Oct 2023- | 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 24 October 2023