Reputation: 161
I'm attempting to write an AI for a Pokemon like game except all moves are known by both players before hand (everything is visible to both players). I've recorded all the information I'm going to need such as damage, accuracy, critical chance, etc.
I thought I would be aiming towards an Expectiminimax (known algorithm) solution which seemed reasonable but I've hit a snag: How to handle ordering of who goes first. Sure, it's based on the speed of the current player and whoever is faster starts but some moves gain a priority and end up going first despite their speed.
An example would be that my opponent who is faster uses a really strong ability but I use a block which takes priority and negates his ability outright. I can't pretend he goes first anymore as my move will cancel his out.
Perhaps I'm simply over-thinking this but it's becoming a real problem when I try to write out my Expectiminimax on paper.
Upvotes: 2
Views: 1968
Reputation: 1895
The simplest solution for simultaneous move is to pretend that you move first, so-called paranoid assumption (since you pretend your opponent can read your mind and know what move you will make). You can make the paranoid assumption independently for every player by computing player-specific game trees. If you want to be more state-of-the-art, I have just googled these papers: Using Counterfactual Regret Minimization to Create Competitive Multiplayer Poker Agents, Comparing Uppper-Confidence-Tree versus CounterFactual-Rergret in Simultaneous Games.
Upvotes: 4