Steamhammer opponent modeling goals
Next up for Steamhammer is opponent modeling. Some version of it will be ready for AIIDE, deadline 1 September. Opening learning methods that we have seen so far implicitly assume that the bot knows a small number of strategies and that one of them is the best counter for the opponent’s play. I want Steamhammer to be able to cope with opponents that are reactive (Iron), multi-strategy (Zia), or both (Krasi0). My goals for opponent modeling are something like this:
- Play a wide range of strategies. It has been part of my plan from the first.
- Learn from the events of the game, not only from the outcome. That way the bot can learn more and faster.
- Learn from one trial: See an opponent’s strategy in the first game and counter it in the second, or at least make a good try. Fixed-strategy bots that Steamhammer knows a counter for should stand at a disadvantage from the second game on.
- React by both choosing a counter opening and later choosing a counter unit mix in the middle game.
- As more games are completed, recognize the range of the opponent’s play.
- If no one opening strategy counters the full range of the opponent’s play, use game theory to estimate the best mix of openings.
It’s fancier than the strategy learning we’ve seen before, but it doesn’t seem hard to me. It’s straightforward, at least in principle. The key element is a model of game strategy. Already last night I wrote a GameRecord
class that keeps a simplified description of what happens. That will be the basis for reading the opponent’s strategy over the game. As soon as we have one game record for an opponent, we can check our openings against it to predict which openings will succeed, and we can also use the record to make middle game decisions about what to produce.
Against opponents with a fixed play style, like XIMP, I expect this to be fast-acting poison. Steamhammer won’t react “Oh, carriers, I’d better make some scourge,” it will prepare ahead of time, “4 carriers will be coming in a minute or so, let me make the right amount of scourge to explode them all.” Against opponents that vary their play, it will take more games to formulate effective venom.
If I have time, I’ll do more. There is no chance that I can get all of these ideas implemented in time for AIIDE, but I’ll make what progress I can.
- Generalize across opponents, so that an unknown opponent faces play that has proved strong before. If you play a lot of openings, then some of them are weak in most circumstances; so far I have accepted that.
- Take more information into account, including map and starting positions.
- Integrate scouting information with the opponent model to get the best possible prediction of what the opponent is aiming for this game.
- Arrange the known opening lines into a tree, and use the integrated prediction to make decisions at every branch. Opening play will become reactive moment by moment, more like pro play.
- Use the same mechanism to decide when to break out of the opening book.
- Record the decisions made just after leaving the opening book as a new opening line to be added to the book and possibly played against other opponents. With breaking out plus adding opening lines, Steamhammer gains the ability to invent its own openings.
Comments
jtolmar on :
Jay Scott on :
krasi0 on :
Let the opening learning wars begin! Good luck! :D
Jay Scott on :
krasi0 on :
Jay Scott on :
MicroDK on :
Joseph Huang on :