README.md
# HelloGameKit: A skeleton app for turn based games on watchOS |
This sample is an implementation of a simple turn based game for watchOS. It demonstrates the following technologies: |
* Game Center turn based multiplayer |
* SpriteKit Scenes/Nodes/Actions |
* Haptic Feedback |
* WatchKit gestures |
## Description |
This is a simple turn based game that lets the user record tap and pan gestures. A turn consists of recording any number of gestures followed by a long press gesture to indicate the end of a turn. |
A turn consists of recording a series of taps and pan gestures and ending with a long tap. |
If you tap on Pick Opponent it will bring up an interface that lets you choose to Auto-Match (let Game Center pick a player) or choose from a list of players that you recently played. When you pick a player they get assigned to the opponent field. However the turn based game does not actually start until you create a match |
Swiping left accesses the match list giving you the option to create a new match or choose an opponent. If you choose create a new match it will a player that you have chosen as an opponent or Auto-Match if you have not. |
## App Structure |
The app is structured using the Model/View/Controller design pattern |
### InterfaceController |
The top level controller that presents the main game scene it responds to various gestures |
### GameModel |
This contains a list of moves which are a collection of points recorded as part of a single gesture. It implements logic for making a move and ending a turn. It also provides means for loading and saving data to a GKTurnBasedMatch. |
### GameScene |
This provides the main user interface. It has label nodes indicating you and your opponent on the top and bottom. It has a green counter that indicates the total number of gestures recorded. |
### ListWithButtonInterfaceController |
This is a base class that provides a simple tableview that provides a single action button row plus displays a lists of items with title/detail information. You adopt ListDataSource for loading data and to provide text for the button table. You adopt the ListItem protocol for your items |
### PlayersInterfaceController |
Specializes ListWithButtonInterfaceController to load a list of recent players |
### MatchesInterfaceController |
Specializes ListWithButtonInterfaceController to load a list of turn based matches |
## Requirements |
iOS/watchOS device only. Simulator is not supported at this time. |
### Build |
Xcode 8.0 or later; iOS 10.0 SDK or later; watchOS 3.0 SDK or later |
### Runtime |
iOS 10.0 or later; watchOS 3.0 or later |
Copyright (C) 2016 Apple Inc. All rights reserved. |
Copyright © 2016 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2016-10-27