An AI that chooses moves in turn-based games using a deterministic strategy.
- iOS 9.0+
- macOS 10.11+
- Mac Catalyst 13.0+
- tvOS 9.0+
To use this strategy, you provide scores that rate possible states of your game model for their desirability to a player, and the strategist exhaustively searches all possible game model states in order to make choices that maximize the rating for its own moves and minimize the rating for an opponent’s moves. You provide information about your game model to the strategist by implementing the
GKGame protocols in your custom classes, and then use the strategist’s methods to find optimal moves.
Choosing a Strategist
GameplayKit provides multiple strategist classes. The advantage of the
GKMinmax class is its deterministic, exhaustive strategy: If allowed, the minmax strategist searches the entire space of possible moves and the game states they lead to, so it can find the best possible move at any time. The cost of this strategy is performance: searching every possible game state takes time, especially for complex games where many moves are possible at any given time. Additionally, this strategy requires that your game model implement the
score(for:) method to rate the desirability of each game state.
GKStrategist protocol for alternate strategies, as well as the methods and properties supported by all strategist classes.
Using a Minmax Strategist
Using the minmax strategist in a game requires the following steps:
Point the minmax strategist’s
gameproperty at the instance of your game model class (that is, your class that implements the
GKGameprotocol) representing the current state of the game in play.
bestmethod to select the best possible move for the current player. This method returns a move object (that is, an instance of the custom class you create to adopt the
Move For Active Player()
Examine the move object to make use of the move selected by the strategist. You created this instance in the
gamemethod of your game model class to describe a possible move in your game, so examining the object gives you the information needed to perform that move.