Tag: 游戏中心游戏

基于回合的Game Center游戏的不同版本不能看到彼此的比赛

每次我向testing人员部署一个新版本时,旧版本的游戏都不再可用。 作为testing,我在一个设备上安装了内部版本63(由agvtool编号),另外一个设备上安装了64版本。 我从64岁开始邀请。63人什么也没有看到(既没有Game Center邀请,也没有使用GKTurnBasedMatchmakerViewController )。 于是我安装了64个,邀请出现了。 我正在使用一个脚本来build立(使用xcodebuild来创build一个档案,然后压缩一个.ipa),虽然每次都是一样的脚本。 我还没有看到任何提到这个的文档,这让我担心一旦游戏在App Store中进行更新。 如果两个设备具有相同的构build,则一切运行良好。 (如果我从Xcode构build并将其复制到附加设备 – 这些不是存档构build虽然似乎没有相同的问题。)这使我认为这不是一个configuration问题(因为相同的configuration文件被一直使用)。

GKLocalPlayer身份validation不起作用,但isAuthenticated返回YES(游戏中心沙箱)

我正在整合我的游戏中的基于回合的比赛,并且几天前我开始从GameKit API中发现奇怪的错误,说本地玩家没有通过身份validation,即使他是。 当我启动应用程序时,调用authenticateHandler ,显示视图控制器,input密码后,再次调用authenticaHandler ,本地播放器似乎被authentication。 isAuthenticated返回YES 。 但是,一旦我开始使用任何GameKit API(例如loadFriendsWithCompletionHandler: ,就会返回错误信息,说明播放器尚未经过身份validation。 这是处理authentication更改的代码。 [[GKLocalPlayer localPlayer] setAuthenticateHandler:^(UIViewController *viewController, NSError *error) { if ([[GKLocalPlayer localPlayer] isAuthenticated]) { // Player authenticated } else { // Player not authenticated if (viewController != nil) { // Present view controller } } }]; 这是调用任何GameKit方法时收到的错误消息。 请注意,返回错误时, -isAuthenticated仍然返回YES。 找不到匹配项:Error Domain = GKErrorDomain Code = 6“请求的操作无法完成,因为本地播放器尚未validation。 […]

Swift显示游戏中心排行榜

现在我正在努力使我创build的排行榜显示出来。 玩家authentication很好,但是当游戏中心窗口打开时很奇怪。 这是一张图片: 这里是我用来显示这个图像的代码: override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { self.showLeaderboard() } func showLeaderboard() { var leaderView = UIViewController() var leaderViewController = GKGameCenterViewController(rootViewController: leaderView) leaderViewController.viewState = GKGameCenterViewControllerState.Leaderboards leaderViewController.leaderboardIdentifier = "High_Score_Board" self.showViewController(leaderViewController, sender: self) //self.presentViewController(leaderViewController, animated: true, completion: nil) } func leaderboardViewControllerDidFinish(controller: GKGameCenterViewController){ controller.dismissViewControllerAnimated(true, completion: nil) } 所有这一切都在我的GameViewController。 此外,即使这个工程,我将如何访问我的SKScenes这个方法? 谢谢您的帮助!

加载游戏中心的朋友和他们的分数到UITableView

所以我想知道阅读苹果文档( https://developer.apple.com/library/ios/documentation/GameKit/Reference/GKLeaderboard_Ref/Reference/Reference.html#//apple_ref/occ/instp/GKLeaderboard/category )如何创build一个UITableView并将其填充到localPlayers Game Center的朋友,并在特定的排行榜上得分。 我知道如何通过使用loadScoresWithCompletionHandler:方法来获取朋友列表和朋友分数。 编辑:到目前为止,我得到这个个人朋友的照片,得分和显示名保存到一个NSArray。 但我无法弄清楚如何在UITableView显示它们。 – (void) loadPlayerData: (NSArray *) identifiers { GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init]; if (leaderboardRequest != nil) { leaderboardRequest.playerScope = GKLeaderboardPlayerScopeFriendsOnly; leaderboardRequest.timeScope = GKLeaderboardTimeScopeAllTime; leaderboardRequest.category = @"MJ_IL"; [leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) { if (error != nil) { // handle the error. if (scores != nil) […]

处理Game Centerauthentication

根据苹果文档,我们应该这样做来处理GCauthentication: – (void) authenticateLocalUser { GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; if(localPlayer.authenticated == NO) { [localPlayer setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) { if (!error && viewcontroller) { DLog(@"Need to log in"); AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; [appDelegate.window.rootViewController presentViewController:viewcontroller animated:YES completion:nil]; } else { DLog(@"Success"); } })]; } } 我们给了这个信息: 如果设备没有authentication播放器,则游戏套件将视图控制器传递给您的authentication处理器。 呈现时,此视图控制器显示authentication用户界面。 你的游戏应该暂停其他需要用户交互的活动(比如你的游戏循环),呈现这个视图控制器然后返回。 当玩家完成与其交互时,视图控制器被自动解除。 我的问题是,我们如何知道这个视图控制器何时被解散,我们如何知道身份validation是否成功? 很明显,我需要知道身份validation是否正常工作,如果因为神奇的GC视图控制器的提示而不得不暂停游戏,我需要知道什么时候恢复游戏。

删除处于无效状态的GKTurnBasedMatch

我正在做一些尝试来学习GameKit,我做了一个简单的游戏和一个界面,列出了我的玩家的匹配。 我正在试图增加使用removeWithCompletionHandler:方法去除游戏的能力,但是我在删除似乎进入无效状态的GKTurnBasedMatch时遇到了问题。 有问题的比赛的po打印: $0 = 0x1d590d20 <GKTurnBasedMatch 0x1d590d20 id:858d8257-cc49-4060-b1d8-38c09a929e3c status:Ended message: taken:2013-03-08 18:08:47 +0000 created:2013-03-08 03:24:14 +0000 current:<GKTurnBasedParticipant 0x1d58c020 – id:G:1717956303 (local player) status:Invited outcome:None lastTurn:(null)> participants: <GKTurnBasedParticipant 0x1d58bc90 – id:G:1717239488 status:Done outcome:Quit lastTurn:2013-03-08 18:08:47 +0000> <GKTurnBasedParticipant 0x1d58c020 – id:G:1717956303 (local player) status:Invited outcome:None lastTurn:(null)> > 这似乎表明比赛已经结束。 然而,其中一个参与者的结果是:没有,我被文档领导认为是无效的游戏结束。 试图简单地删除游戏给出: 请求的操作无法完成,因为一个或多个参数无效。 尝试设定结果并结束游戏时,会给出: 请求的操作无法完成,因为会话处于无效状态。 我想也许我不能删除游戏,因为本地玩家是积极的参与者,但participantQuitInTurnWithOutcome:… endTurnWithNextParticipants:…和endTurnWithNextParticipants:…都给出了错误: 请求的操作无法完成,因为会话处于无效状态。 […]

GKMatchmaker的findMatchForRequest邀请从未收到

我正在尝试邀请附近的玩家进行比赛,但邀请不是发送就是没有收到。 GKMatchMaker startBrowsingForNearbyPlayersWithHandler工作并返回相同wifi上的附近玩家,但是接着我使用findMatchForRequest并返回一个没有任何玩家的比赛,而我尝试邀请的玩家从未收到邀请通知。 这是我的代码。 我从authentication本地玩家开始: GKLocalPlayer.localPlayer.authenticateHandler= ^(UIViewController *controller, NSError *error) { if (error) { NSLog(@"%s:: Error authenticating: %@", __PRETTY_FUNCTION__, error.localizedDescription); return; } if(controller) { // User has not yet authenticated [pViewController presentViewController:controller animated:YES completion:^(void) { [self lookForNearbyPlayers]; }]; return; } [self lookForNearbyPlayers]; }; -(void)lookForNearbyPlayers { if(!GKLocalPlayer.localPlayer.authenticated) { NSLog(@"%s:: User not authenticated", __PRETTY_FUNCTION__); return; } 我将我的视图控制器注册为GKLocalPlayerListener的委托: […]

一些开始浏览对附近的玩家有可接触的问题

我试图使用[[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:]在GameKit中使用本地匹配工作。 基本上,我试图实现无界面的本地匹配:只要在我附近有一个玩家,我想连接并开始比赛。 重要的是,我只想为本地玩家这样做:我从来不想通过互联网自动匹配。 我已经在iTunes连接中为我的应用程序启用了Game Center,并在我用来testing的每台设备上注册了不同的沙盒帐户。 我已经尝试了与GKMatchmakerViewController (authentication本地播放器之后)以及与startBrowsingForNearbyPlayersWithReachableHandler:编程匹配的匹配startBrowsingForNearbyPlayersWithReachableHandler:在iPhone 4上运行相同的代码,并在桌面上彼此相邻的第4代iPod Touch上运行相同的代码。 没有find对方; 当使用GKMatchmakerViewController ,用于查找附近玩家的界面仍然在 寻找玩家… 微调,并使用startBrowsingForNearbyPlayersWithReachableHandler: ,通知块永远不会被调用。 这是我目前的testing代码块: -(void)connectLocal { if( ![GKLocalPlayer localPlayer].isAuthenticated ) { // authenticateLocalPlayer calls connectLocal again after authentication is complete [ self authenticateLocalPlayer ]; return; } [[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:^(NSString *playerID, BOOL reachable) { NSLog(@"Reachability changed for player %@", playerID ); } […]

已弃用GKMatchMaker邀请处理程序

我有我以前用来处理邀请的以下代码: [GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) { // Insert game-specific code here to clean up any game in progress. if (acceptedInvite) { GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithInvite:acceptedInvite]; mmvc.matchmakerDelegate = self; [self presentViewController:mmvc animated:YES completion:nil]; } }; 但是,现在已经在iOS 7被弃用了。 在哪里以及如何在我的项目中注册GameKit邀请处理程序?