I agree that it's a tricky framework to learn – I just finished writing a tutorial about GameplayKit and GKMinmaxStrategist and it was no mean feat. If you follow the tutorial it builds a complete game from scratch, explaining how it all fits together. You might find it useful as a starting point, at the very least.
I'm hopeful that Apple will improve its documentation before iOS 9 is final!
If you want to dive straight in, here's the least you need to know:
- Ensure your game model (data) and view (layouts) are kept separate.
- Make your model implement the
NSCopying
protocol, because it will be copied many times as the AI runs.
- You should also make it implement the
GKGameModel
protocol, which requires that you be able to enumerate the available moves, apply a move on a board copy (virtually, not for real), then judge the players scores afterwards.
- Each "move" (for whatever that means in your game) needs to conform to the
GKGameModelUpdate
protocol, so it'll be a class you create that defines a particular move. You'll be given this back when you the best move has been chosen, so it will contain something like "move the knight to E4".
- If your game does not have a score (in my tutorial I used Four in a Row, which has exactly this problem) then you need to come up with a heuristic estimating roughly how good a move was.
- Run the AI on a background thread to ensure your UI remains responsive, then push the result back to the foreground thread when you're ready to make UI changes.
If you find the AI is running slowly, either restrict the number of moves it can make or reduce its look ahead depth.
GKMinmaxStrategist
in the view controller class in Apple's FourInARow sample – Gerrald