archive by month
Skip to content

SSCAIT Steamhammer-PurpleWave games

Those who saw today’s stream of the second half of the SSCAIT round of 16 in the elimination bracket may be wondering why Steamhammer played the same losing opening three times in a row against PurpleWave. It’s easy to explain.

Before the tournament, PurpleWave was playing forge expand game after game against Steamhammer. Steamhammer experimented and found that it could win with 9 gas 9 pool, which is a strong ZvZ one-hatch mutalisk build. It is not a strong ZvP build, but before the tournament, the fast mutas scored 13-0 against the fast expands, not a single loss. PurpleWave was not ready to defend against air.

In the round robin phase, PurpleWave again opened the first game with forge expand, and lost to the one-hatch mutas. The score was 14-0. But PurpleWave had been updated for the tournament, and forgot whatever bug or other fixation had caused it to stick to the same strategy. In the second game, protoss varied, and the score went to 14-1. PurpleWave is ranked higher than Steamhammer and usually wins. 14-1 was statistically far and away the best available opening, so Steamhammer stuck with it. It saw during play that it had gotten into trouble and tried desperately to save itself, but the mischief came in the early opening and there was nothing for it; at best it could have lost more slowly.

An RPS analyzer that better predicts the enemy’s opening plan could have helped. Steamhammer would also have to pay more attention to the enemy’s predicted strategy; it deliberately ignores the prediction against long-familiar opponents. The only general way that I know for a bot to be sure that it’s time to switch plans is for it to model the game events and understand why it lost (“oh yeah, you can beat that every time”), which is much more powerful than comparing statistics. I hope to do that eventually, but it’s beyond the state of the art for now. Anyway, opening timing is first, and that feeds in too.

Trackbacks

No Trackbacks

Comments

Dan on :

PurpleWave has different learning parameters based on the format it's competing in, specified in the JSON configuration it's packaged with. The round-robin/ladder configuration is designed to avoid catastrophic forgetting; the elimination configuration is geared to avoid catastrophic stubbornness. So for elimination formats PurpleWave weighs recent history much more heavily than in round-robin/ladder formats, which is probably what caused it to switch gears so quickly after the initial loss.

Good luck in the rest of the bracket!

Jay Scott on :

Ooh, that’s interesting. Steamhammer suffered exactly that catastrophic stubbornness.

MicroDK on :

My update for SSCAIT also added weighing recent history more heavily. But I don't have a mechanism to turn it off.
The reason was that Microwave had learned to play 9PoolSpeed vs Dragon because it was winning like 90%. Then Dragon was updated and the 9PoolSpeed began to loose 100%. So I wanted Microwave to switch strategy faster.

MicroDK on :

How does the bot know if it is playing in the round robin or in the elimination phase of SSCAIT?

Jay Scott on :

They both allow few games to react against any given opponent, so it makes sense to react to the most recent games for both.

Bruce on :

I think I remember Dan writing at some point that it assumes the first two games post-update are RR and the rest are elimination.

Dan on :

This year: It doesn't know the difference between SSCAIT round-robin/elimination; it treats everything after the update like elimination games and applies the rapid learning decay. This allowed it to use prior learning to inform its selections, but strongly favors information from recent games.

Some previous years: The learning files have a version number so the bot only uses games played on a specific version. For the tournament I upped the version number and treated the first two games as round robin.

Dan on :

Take a look at the JSON file PurpleWave ships with -- it includes parameters for adjustments to its play, including round robin/elimination flags, vs-human flags, frame performance requirements, etc.

Tully Elliston on :

That sounds worth emulating

MarcoDBAA on :

Bad luck, that the bot with about 220 (as you said) openings repeated the same one without any hope (because it wasn´t even an opening, that lets you adapt to the game) of success for 3 games on the "big" stage.

MicroDK on :

Not bad luck... It was programmed to do that like Jay wrote. It was in front 13-0 with that opening.

MarcoDBAA on :

As far as I understood, this only can happen, if the bot was clearly winning with that build before, no other good winning builds are available and a new update from the opponent makes it a hopeless losing build. Should not happen that often?

But sure, what we consider "bad luck" might just be different.
You would want to have a random function there probably, whose output was unfortunately the same each time, even though that is improbable.

Jay Scott on :

It doesn’t happen often in the general run of things. But in a tournament that people specifically prepare for....

Add Comment

E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Submitted comments will be subject to moderation before being displayed.