Steamhammer 1.2 and Randomhammer
Steamhammer 1.2 is out. Headline feature: It plays random (like UAlbertaBot). Steamhammer continues to play as zerg, and Randomhammer is the same code playing random. In its first game, thanks to the voting system, Randomhammer played Steamhammer. Randomhammer rolled protoss, opened 10-12 gate, and won easily.
Randomhammer’s elo is likely to end up lower, since zerg is way more polished. But the protoss is not bad, and it will be a good test. Terran and protoss hit bugs more often than zerg.
The change list is not long.
- In the configuration file, you specify the target number of workers per mineral patch separately for each race, as a floating point number. I set it to 1.8 for zerg, down from 2.
- New middle game production code, with longer tech paths than UAlbertaBot.
- Openings.
- 4 terran openings and 7 protoss openings, with random choice.
- Terran and protoss openings use the
OpeningGroupfeature to share middle game production code. - Fixed a bug that prevented “2 x dark templar” from working due to the space character in “dark templar”.
- Zerg’s 9 pool speed opening is updated to fix a mistake introduced in 1.1.1.
- Worker defense: Attack stuck as well as non-moving enemies. (An unnoticeable tweak—for now.)
- Emergency cloaked unit defense: Fixed a bug that caused the queue to explode.
- Terran resumes construction after a building SCV is lost. (UAlbertaBot leaves the incomplete building there forever.)
- Small updates to the zerg strategy boss.
- Fixed a potential crashing bug.
- Fixed a bug that could explode the queue when there were fewer than 3 drones.
- Fixed a bug that could cause double ultralisk caverns.
- Minor adjustments to the heuristics.
It was not hard to get protoss to play a decent game, but terran is tough. In my tests, Steamhammer 1.2 terran scores much worse than zerg or protoss. In a random-on-random test with a development version versus UAlbertaBot, Steamhammer protoss scored 8-1 and terran scored 1-7 (there were no mirror matchups). Another example: Against Stone, Steamhammer protoss survived on the first try. Terran did not, because Stone gangs up on building SCVs. Resuming buildings which lose their building SCVs was a necessary skill to give Steamhammer terran any chance at all; it can survive Stone occasionally. Terrans that beat Stone reliably have 2 other skills that I did not implement, replacing the building SCV when it gets hurt and pulling SCVs to drive the attackers off.
UAlbertaBot’s building placer started to show problems in longer games. UAlbertaBot plays rushes and doesn’t see many long games. The building placer wants to build everything in the main; when the main fills up, placement slows down drastically and may overstep the time limit.
I made a forge fast expand opening for protoss, but I have reservations because of other limitations of the building placer. In Steamhammer, you can ask for buildings to be made in the natural, and it works. The building placer knows to leave the nexus spot open. But it doesn’t know the plan, and may place the pylon in a spot without room for a forge, 2 cannons, and a gateway. If there’s no room, the build freezes and the bot will lose. I worked around it for now by inefficiently building extra pylons in the main for the gateway and everything after. Even so, it fails sometimes on SSCAIT maps when it can’t place the forge. Someday I’ll drop the building placer for a building planner, but that will probably be a long time from now.
version 1.2.1
I didn’t get everything done that I wanted, so I’m changing my plans for future versions. 1.2.1 will be mainly a feature version. Here are the features I hope to add, in order of priority.
- loading and unloading for terran bunkers
- simple measures so zerg can better survive vulture attacks
- basic drop skills for terran and protoss
- reavers
- psionic storm
- stim for marines
- mixed strategies versus specific opponents when playing random
- generalize certain zerg smarts so that terran and protoss can benefit
It seems to me the best tradeoff between getting key skills and getting finished. I’m leaving out a bunch of other basic skills: Overlord hunting (needed for wraith and corsair play versus zerg), mine laying, keeping medics close to marines, carriers, picking up dropped units....
There are also critical problems I want to fix. Others are likely to come up.
- the bot falsely believes that mining SCVs block the comsat from being added
- aimless play when the army gets distracted by units all around
version 1.2.2
Then the following version, 1.2.2, becomes the cleanup bugfix version. There are 2 bugs that pass invalid parameters to Micro::SmartMove(), at least 3 bugs that cause expansions to fail to be made, and 2 bugs that cause workers to go idle unnecessarily. I hope to stomp at least 5 of those 7, plus of course anything that turns up from playing random on the server.
version 1.3
Version 1.3 will be my start on mutalisk skills.
Comments
krasi0 on :
"It was not hard to get protoss to play a decent game, but terran is tough." I hope that Xilmi and others who believe than authors of Terran bots have it easy because Terran is OP, reconsider. It may look easy when you see a resulting bot like Iron or Leta play on the SSCAIT stream, but the reality is that it's a loooong a bumpy road to get to that level of play. You only realize this during the first few weeks of working on a Terran bot though ;)
Jay Scott on :
MicroDK on :
Jay Scott on :
MicroDk on :