2012-07-26 28 views
1

我正在測試一個遊戲中心遊戲,特別是當玩家臨時退出時(電話,背景等)會發生什麼情況我希望能夠暫停遊戲並在玩家重新連接時再次活躍起來。重新連接到超過兩名球員的GKMatch

在雙人遊戲中這很好地工作,因爲匹配:shouldReinvitePlayer功能導致玩家被重新邀請,但這是蘋果公司指定的,只能在雙人遊戲中工作。

在一個三人(或更多)的遊戲中,我正在appDelegate applicationWillEnterForeground中處理此操作,如下所示;

GKMatchRequest *comebackRequest = [[GKMatchRequest alloc] init]; 
    comebackRequest.playersToInvite = [NSArray arrayWithObjects:[[[[KYTGame instance] players] objectAtIndex:1] peerId], [[[[KYTGame instance] players] objectAtIndex:2] peerId], nil]; 
    comebackRequest.minPlayers = 3; 
    comebackRequest.maxPlayers = 3; 
    comebackRequest.playerGroup = [[[KYTGame instance] gameCategory] playerGroup]; 

    [[GKMatchmaker sharedMatchmaker] addPlayersToMatch:[[KYTGame instance] match] 
              matchRequest:comebackRequest 
            completionHandler:^(NSError *error) { 
     NSLog(@"%sPlayers are %@", __PRETTY_FUNCTION__, [[KYTGame instance] match ].playerIDs); 
    }]; 

什麼情況是,現有的兩名球員「平」掉令人高興的是,當應用程序委託代碼被調用(在再次活過來的球員)的比賽是不是零,並沒有什麼在playedIDs數組,但完成處理程序似乎永遠不會被調用,並且「再次活躍」的玩家再也不會重新連接。

我還在'現場'玩家的調試日誌中看到一個特殊模式,表明進入後臺的玩家在兩次之間沒有任何「連接」的情況下,已經將狀態更改爲「斷開連接」。

所以......當GKMATCH被推入背景然後復活時,可以期待GKMATCH有意義。我如何重新連接?可能嗎?

回答

2

我已將此提交給Apple支持,但不幸的是該功能不可用;儘管遊戲套件最多支持4個對等網絡玩家,但如果遊戲中有多於2個玩家,那麼在任何一個玩家斷開連接的情況下,api不能提供重新連接的方式。

+1

從2012年9月份起,這個變化了嗎?看起來像其他應用程序(特別是我的)可以真正使用的功能。 – PWiggin 2013-04-13 00:27:08