85
Game Kit Lars Röwekamp | CIO New Technologies Mittwoch, 14. September 2011

iOS GameCenter: Nicht nur für Spieleentwickler

Embed Size (px)

Citation preview

Page 1: iOS GameCenter: Nicht nur für Spieleentwickler

Game Kit

Lars Röwekamp | CIO New Technologies

Mittwoch, 14. September 2011

Page 2: iOS GameCenter: Nicht nur für Spieleentwickler

Game Kit

Lars Röwekamp | CIO New Technologies

@mobileLarson@_openknowledge

Mittwoch, 14. September 2011

Page 3: iOS GameCenter: Nicht nur für Spieleentwickler

Mittwoch, 14. September 2011

Page 4: iOS GameCenter: Nicht nur für Spieleentwickler

Mittwoch, 14. September 2011

Page 5: iOS GameCenter: Nicht nur für Spieleentwickler

>> iOS Game Development

>> iOS Game Center App>> iOS Game Kit

>> iOS Game Kit Scenarios>> iOS Game Kit Testing

Mittwoch, 14. September 2011

Page 6: iOS GameCenter: Nicht nur für Spieleentwickler

>> iOS Game Development

>> iOS Game Center App>> iOS Game Kit

>> iOS Game Kit Scenarios>> iOS Game Kit Testing

Mittwoch, 14. September 2011

Page 7: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Development

Mittwoch, 14. September 2011

Page 8: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Development

A report by SNL Kagan said it expects U.S. mobile game revenues to top $1.53 billion this year, which is nearly double revenues in 2010.

Mittwoch, 14. September 2011

Page 9: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Development

A report by SNL Kagan said it expects U.S. mobile game revenues to top $1.53 billion this year, which is nearly double revenues in 2010.

Mittwoch, 14. September 2011

Page 10: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Development

Mittwoch, 14. September 2011

Page 11: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Development

Game CenterService

Mittwoch, 14. September 2011

Page 12: iOS GameCenter: Nicht nur für Spieleentwickler

powered by

iOS 4 Game Development

Game CenterService

Mittwoch, 14. September 2011

Page 13: iOS GameCenter: Nicht nur für Spieleentwickler

>> iOS Game Development

>> iOS Game Center App>> iOS Game Kit

>> iOS Game Kit Scenarios>> iOS Game Kit Testing

Mittwoch, 14. September 2011

Page 14: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Center App

Mittwoch, 14. September 2011

Page 15: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Center App

–Erstellen/Ändern von Spielern

–Spiele starten/kaufen

–Details der Spiele ansehen

–„Managen“ von Freunden

–„Details“ der Freunde ansehen

Mittwoch, 14. September 2011

Page 16: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Center App

–„Wie werde ich zur GC App?“

Mittwoch, 14. September 2011

Page 17: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Center App

–„Wie werde ich zur GC App?“

more to come ...

Mittwoch, 14. September 2011

Page 18: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Center App

–„Und was ist ein GC Player?“

Mittwoch, 14. September 2011

Page 19: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Center App

Mittwoch, 14. September 2011

Page 20: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Center App

Mittwoch, 14. September 2011

Page 21: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Center App

Mittwoch, 14. September 2011

Page 22: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Center App

Mittwoch, 14. September 2011

Page 23: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Center App

Mittwoch, 14. September 2011

Page 24: iOS GameCenter: Nicht nur für Spieleentwickler

>> iOS Game Development

>> iOS Game Center App>> iOS Game Kit

>> iOS Game Kit Scenarios>> iOS Game Kit Testing

Mittwoch, 14. September 2011

Page 25: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit

meets

Mittwoch, 14. September 2011

Page 26: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit

–Game Development Framework

–User Authentication

–Friends Management

–Score-Übertragung & -View

–Archievement-Übertragung & -View

–Multiplayer Game Support

–In Game Messaging & Voice Chat

Mittwoch, 14. September 2011

Page 27: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

–App „Gerüst“ im Store einrichten

–iTunes Connect einrichten

–Bundle Identifer definieren

–GameKit Framework einbinden

–GameKit/GameKit.h einbinden

–Game Center Key in info.plist einbinden (optional)

–Player authentifizieren

Mittwoch, 14. September 2011

Page 28: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 29: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 30: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 31: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 32: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 33: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 34: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 35: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 36: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 37: iOS GameCenter: Nicht nur für Spieleentwickler

>> iOS Game Development

>> iOS Game Center App>> iOS Game Kit

>> iOS Game Kit Scenarios>> iOS Game Kit Testing

Mittwoch, 14. September 2011

Page 38: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

AuthenticateLocal Player

Mittwoch, 14. September 2011

Page 39: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

AuthenticateLocal Player

Mittwoch, 14. September 2011

Page 40: iOS GameCenter: Nicht nur für Spieleentwickler

„Authenticate Local Player“

–Sobald die UI „da“ ist

–Asynchron - Connectivity

–Asynchron - Account Login

–Asynchron - Account Creation

–Player Unique ID

–Player Nickname

iOS 4 Game Kit Scenarios

Mittwoch, 14. September 2011

Page 41: iOS GameCenter: Nicht nur für Spieleentwickler

„Authenticate Local Player“

–Sobald die UI „da“ ist

–Asynchron - Connectivity

–Asynchron - Account Login

–Asynchron - Account Creation

–Player Unique ID

–Player Nickname

iOS 4 Game Kit Scenarios

] ^Blocks

als Callback

Handler

Mittwoch, 14. September 2011

Page 42: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

// How to authenticate a user/player?

- (void)authenticateLocalPlayer { GKLocalPlayer* localPlayer = [GKLocalPlayer localPlayer];

[localPlayer authenticateWithCompletionHandler: ^(NSError *error) { if (!error) { self.gameCenterFeaturesEnabled = YES; } else { self.gameCenterFeaturesEnabled = NO; } }];}

AuthenticateLocal Player

Mittwoch, 14. September 2011

Page 43: iOS GameCenter: Nicht nur für Spieleentwickler

// How to handle user state change (1/2)?

- (void)registerForAuthenticationNotification { NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

[nc addObserver: self selector:@selector(authenticationChanged) name: GKPlayerAuthenticationDidChangeNotificationName object:nil];}

State Change?Registration

iOS 4 Game Kit Scenarios

Mittwoch, 14. September 2011

Page 44: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

State Change?Handler

// How to handle user state change (2/2)?

- (void)authenticationChanged{ if ([GKLocalPlayer localPlayer].isAuthenticated) {

// Insert code here to handle // a successful authentication.

} else {

// Insert code here to clean up any // outstanding Game Center-related classes.

}}

Mittwoch, 14. September 2011

Page 45: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

Check forPlayer‘s Friends

Mittwoch, 14. September 2011

Page 46: iOS GameCenter: Nicht nur für Spieleentwickler

// How to „access“ my friends (1/2)?

- (void)retrieveFriends{ GKLocalPlayer *lp = [GKLocalPlayer localPlayer]; if (lp.authenticated) { [lp loadFriendsWithCompletionHandler: ^(NSArray *friendIDs, NSError *error) { if (error != nil) { // create player objects with friendIDs. } // else report an error to the user. }]; }

iOS 4 Game Kit Scenarios

Check forPlayer‘s Friends

Player‘s Friend IDs als Array laden.

Mittwoch, 14. September 2011

Page 47: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

// How to „access“ my friends (2/2)?

- (void)loadPlayerData: (NSArray *) friendIDs{ [GKPlayer loadPlayersForIdentifiers:friendIDs withCompletionHandler: ^(NSArray *players, NSError *error) { if (error != nil) { // Handle the error. } if (players != nil) { // Process the array of GKPlayer objects. } }];}

Check forPlayer‘s Friends

IDs verwenden, um GKPlayer Objekte zu laden.

Mittwoch, 14. September 2011

Page 48: iOS GameCenter: Nicht nur für Spieleentwickler

>> Game Kit

Mittwoch, 14. September 2011

Page 49: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

Leaderboard(s)Management

Mittwoch, 14. September 2011

Page 50: iOS GameCenter: Nicht nur für Spieleentwickler

–Standard UI

–Custom UI

–Filtern nach Freunden

–Filtern nach Zeit

–Abfragen von Bereichen

–Abfrage von Top X

iOS 4 Game Kit Scenarios„Leaderboards“

Mittwoch, 14. September 2011

Page 51: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 52: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 53: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 54: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit „Kickstart“

Mittwoch, 14. September 2011

Page 55: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

// how to report a score to the „leaderboard“?

- (void)reportScore { GKScore* myPlayerScore = ... ; // alloc myPlayerScore.value = ... ; // set score [myPlayerScore reportScoreWithCompletionHandler: ^(NSError *error) { if (error) { NSData* archivedScore = [NSKeyedArchiver archivedDataWithRootObject:myPlayerScore]; [self saveScoreToSendLater:archivedScore]; } else { // the score was submitted successfully } }];}

Eigenen Scoresenden

GKScore als „Magic Object“

Mittwoch, 14. September 2011

Page 56: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

// how to display default „leaderboard“?

- (void)showLeaderboard{ // view controller implements the // protocol <GKLeaderboardViewControllerDelegate>

GKLeaderboardViewController* lbViewController = [[ GKLeaderboardViewController alloc] init];

... // set some paramater, e.g. category, timeScope

[lbViewController setLeaderboardDelegate: self]; [self presentModalViewController:lbViewController animated:YES];

...}

Leaderboard„automatisch“

ViewController implementiertDelegate!

<GKLeaderboardViewControllerDelegate>

Mittwoch, 14. September 2011

Page 57: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

// how to query a „leaderboard“?

- (void)queryLeaderboard { GKLeaderboard* lb = ... // alloc

// interested in friends scores over the past week lb.timeScope = GKLeaderboardTimeScopeWeek; lb.playerScope = GKLeaderboardPlayerScopeFriendsOnly; lb.range = NSMakeRange(1,25); [lb loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) { }]; if (scores) { //display scores in custom UI } // handle error, if (error) }

High Score„manuell“

Mittwoch, 14. September 2011

Page 58: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

ArchievementManagement

Mittwoch, 14. September 2011

Page 59: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

ArchievementManagement

Mittwoch, 14. September 2011

Page 60: iOS GameCenter: Nicht nur für Spieleentwickler

–Standard UI

–Custom UI

–Vor und nach dem Erreichen

–Fortschritt beim Erreichen

–„Hidden“ Archievements

iOS 4 Game Kit Scenarios„Archievement“

Mittwoch, 14. September 2011

Page 61: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

// how to report „archievements“?

- (void)reportAchievements { GKAchievement* myAchievement = ... // alloc with id

myAchievement.percentComplete = 50.0; [myAchievement reportAchievementWithCompletionHandler: ^(NSError *error) { if (error) { // archive for later sending NSData* archivedAchievement = ... } else { // the achievement was submitted successfully } }]; }

Archievementsenden

GKArchievment als „Magic Object“

Mittwoch, 14. September 2011

Page 62: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

// how to display default „achievement“ view?

- (void)showArchievements{ GKAchievementViewController* acViewController = ...; [myAchievementsViewController setAchievementViewControllerDelegate: self];

[self presentModalViewController: acViewController];}

- (void)achievementsDidPressDismiss{ [self dismissModalViewControllerAnimated:YES];}

Archievement„automatisch“

ViewController implementiertDelegate!

<GKArchievementViewControllerDelegate>

Mittwoch, 14. September 2011

Page 63: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

Multi PlayerGaming / Chat

Mittwoch, 14. September 2011

Page 64: iOS GameCenter: Nicht nur für Spieleentwickler

–Spieler Einladen

–Server vs. P2P

–Manuelles Matching

–Auto Matching

–Multi-Player UI

– In-Game Voice Chat

iOS 4 Game Kit Scenarios„Multi Player“

Mittwoch, 14. September 2011

Page 65: iOS GameCenter: Nicht nur für Spieleentwickler

–GKPeerPickerController erstellen

–PeerPicker Connection-Option setzen

–GKSession erzeugen

–GKSession verwalten

–Daten via GKSession senden

–Daten via GKSession empfangen

iOS 4 Game Kit Scenarios„P2P Automatch“

Mittwoch, 14. September 2011

Page 66: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

// how to connect P2P?

-(void) connectP2P { // try to connect via p2p picker p2pPicker = [[GKPeerPickerController alloc] init]; p2pPicker.delegate = self;

// look for bluetooth connection p2pPicker.connectionTypesMask = GKPeerPickerConnectionTypeNearby;

// handle UI changes if necessary ...

// show peer picker dialog [p2pPicker.connectionTypesMask show] }

P2Pconnect

ViewController implementiertDelegate!

<GKPeerPickerControllerDelegate>

Mittwoch, 14. September 2011

Page 67: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

// how to connect P2P?

-(void)peerPickerController:(GKPeerPickerController *) picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session { // set session self.currentSession = session; session.delegate = self; [session setDataReceiveHandler:self withContext:nil];

// clear picker p2pPicker.delegate = nil; [p2pPicker dismiss]; [p2pPicker autorelease];}

P2PConnection

Callback

ViewController implementiertDelegate!

<GKPeerPickerControllerDelegate>

Mittwoch, 14. September 2011

Page 68: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

// how to send and receive data?

-(void)sendDataToPeers:(NSData*)data {

if (currentSession) { [self.currentSession sendDataToAllPeers:data withDataMode:GKSendDataReliable error:nil]; }}

-(void) receiveData:(NSData *)data fromPeer:(NSString *)peer inSession:(GKSession *)session context:(void *)context { NSString * message; message = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; }

P2PDatenaustausch

ViewController implementiertDelegate!

<GKSessionDelegate>

Mittwoch, 14. September 2011

Page 69: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

// how to disconnect P2P?

-(void) disconnectP2P { // try to disconnect via session [self.currentSession disconnectFromAllPeers]; [self.currentSession release]; currentSession = nil;

// update UI if necessary ... }

P2Pdisconnect

ViewController implementiertDelegate!

<GKPeerPickerControllerDelegate>

Mittwoch, 14. September 2011

Page 70: iOS GameCenter: Nicht nur für Spieleentwickler

–Match-Request erstellen

–Match-Request zum Server senden

–Server wendet Match-Logik an

–Server sendet Match-Response

–Warten auf Player Connects

–Spiel starten

iOS 4 Game Kit Scenarios„Multi Player Automatch“

Mittwoch, 14. September 2011

Page 71: iOS GameCenter: Nicht nur für Spieleentwickler

–Minimal 2 Spieler

–Maximal 4 Spieler (P2P) / 16 Spieler (Hosted)

–Bit Mask Attribute Match: AND 0x00000000

–Bit Mask Attribute Match: OR 0xFFFFFFFF

–Player Group Match

–Player IDs Match

iOS 4 Game Kit Scenarios„Match-Request“

Mittwoch, 14. September 2011

Page 72: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios

Multi PlayerAutomatch

„Multi Player Automatch“

Mittwoch, 14. September 2011

Page 73: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios„Multi Player Automatch“

Multi PlayerAutomatch

Mittwoch, 14. September 2011

Page 74: iOS GameCenter: Nicht nur für Spieleentwickler

Mittwoch, 14. September 2011

Page 75: iOS GameCenter: Nicht nur für Spieleentwickler

Mittwoch, 14. September 2011

Page 76: iOS GameCenter: Nicht nur für Spieleentwickler

Multi Playerautomatch

iOS 4 Game Kit Scenarios

// how to auto-match (without default view)?

- (IBAction)findMatchOnDemand: (id) sender{ GKMatchRequest *matchRequest = ... // alloc matchRequest.minPlayers = 2; matchRequest.maxPlayers = 2; matchRequest.playerGroup = level1MyGameGroup; matchRequest.playerAttributes = MY_FIGHTER; GKMatchmaker *matchmaker = [GKMatchmaker sharedMatchmaker]; [matchmaker findMatchForRequest:matchRequest withCompletionHandler:^(GKMatch *match, NSError *error) { if (error) { // handle error } else if (match!=nil) { // start the match } }]; }

„Multi Player Automatch“

GKMatchmaker als „Magic Object“

GKMatchRequestals „Magic Object“

Mittwoch, 14. September 2011

Page 77: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Scenarios„Multi Player Automatch - Testing“

Mittwoch, 14. September 2011

Page 78: iOS GameCenter: Nicht nur für Spieleentwickler

Multi PlayerInvitation

iOS 4 Game Kit Scenarios„Multi Player Automatch“

Mittwoch, 14. September 2011

Page 79: iOS GameCenter: Nicht nur für Spieleentwickler

>> iOS Game Development

>> iOS Game Center App>> iOS Game Kit

>> iOS Game Kit Scenarios>> iOS Game Kit Testing

Mittwoch, 14. September 2011

Page 80: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Testing„Development vs. Production“

Mittwoch, 14. September 2011

Page 81: iOS GameCenter: Nicht nur für Spieleentwickler

iOS 4 Game Kit Testing„Development vs. Production“

Mittwoch, 14. September 2011

Page 82: iOS GameCenter: Nicht nur für Spieleentwickler

–Game Bundle ID

–Game Version

–Game Status

iOS 4 Game Kit Scenarios„Development vs. Production“

] Sandbox?

Mittwoch, 14. September 2011

Page 83: iOS GameCenter: Nicht nur für Spieleentwickler

Und wie weiß ich, ob Game Kit unterstütz wird? –Ganz einfach ... „testen“

iOS 4 Game Kit

Mittwoch, 14. September 2011

Page 84: iOS GameCenter: Nicht nur für Spieleentwickler

Und wie weiß ich, ob Game Kit unterstütz wird? –Ganz einfach ... „testen“

iOS 4 Game Kit

// how to detect game kit FULL support?

BOOL isGameCenterAPIAvailable(){ // Check for presence of GKLocalPlayer class. BOOL localPlayerClassAvailable = (NSClassFromString(@"GKLocalPlayer")) != nil; // The device must be running iOS 4.1 or later. NSString *reqSysVer = @"4.1"; NSString *currSysVer = [[UIDevice currentDevice] systemVersion];

BOOL osVersionSupported = ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending); return (localPlayerClassAvailable && osVersionSupported);}

Mittwoch, 14. September 2011

Page 85: iOS GameCenter: Nicht nur für Spieleentwickler

Was sie im Hinterkopf behalten sollten:

– Infrastruktur für Single- und Multiplayer-Games– iTunes Connect zur Administration–GameCenter APP als Schaltzentrale–GameKit API zur programmativen Nutzung

–Default View Controller als „Easy“ Version–Eigene View Controller als „Fancy“ Version–P2P Features ohne GameCenter möglich

iOS 4 Game Kit

Mittwoch, 14. September 2011