/Skywalker

Mini game to figure out Game Center logic along with decoupled UI, replays and other turn based game requirements

Primary LanguageSwift

Skywalker

Simple rock-paper-scissor-spock-lizard game to figure out various parts involved in making a good turn based game using GameCenter

Requirements

  • Create new matches
  • Join existing matches
  • Saving turn to GameCenter
  • Saving match result to GameCenter
  • Decoupling slow moving UI with animations vs fast moving game logic
  • Handling state advancement with multiple clients running their own state machines
  • Updating current running game with latest data
  • Handling auto match players properly
  • Add ability to rematch after the match has ended
  • Pausing game and resuming UI from that event
  • Positioning local player at the primary position on screen (e.g. bottom)
  • Local game against AI without changing any of the game logic
  • Keeping match data local for a quick glance
  • Notifications for turns on inactive matches
  • Handling GameInvite/turn notifications properly
  • Handle players quitting the game

Game Center Quirks

  • GameCenter auto match players have nil identifier
  • The person initiating the game always get the first turn
  • There has been a case where the match loaded and it had no participants