我正在测试游戏中心游戏,特别是当玩家暂时退出时(电话,背景等)会发生什么事情我希望能够暂停游戏并在玩家再次活跃时重新连接。
由于匹配,这在双人游戏中运行良好:shouldReinvitePlayer功能会导致玩家被重新邀请但Apple指定这只是为了在双人游戏中工作。
在三人(或更多)游戏中,我在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);
}];
当现有的两名玩家快乐地“ping”时,当app代理代码被调用时(在再次活跃的玩家中),匹配不是nil并且在READIDs数组中没有任何内容但是完成处理程序似乎永远不会被调用,再次“活着”的玩家永远不会重新连接。
我在“现场”播放器的调试日志中也得到了一个特殊的模式,告诉我已经进入后台的玩家已经多次将状态更改为“已断开连接”而没有任何“连接”。
所以...当GKMATCH被推入后台然后复活时,可以期待GKMATCH有意义。我该如何重新连接?有可能吗?
答案 0 :(得分:2)
我已将此提交给Apple支持,但遗憾的是功能无法使用;虽然Game Kit在对等网络中最多支持4个玩家,但如果有超过2个 游戏中的玩家然后api没有提供重新连接的方式,如果他们中的任何一个断开连接。