与超过两名玩家重新连接到GKMatch

时间:2012-07-26 18:17:01

标签: ios5 game-center gamekit reconnect

我正在测试游戏中心游戏,特别是当玩家暂时退出时(电话,背景等)会发生什么事情我希望能够暂停游戏并在玩家再次活跃时重新连接。

由于匹配,这在双人游戏中运行良好: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有意义。我该如何重新连接?有可能吗?

1 个答案:

答案 0 :(得分:2)

我已将此提交给Apple支持,但遗憾的是功能无法使用;虽然Game Kit在对等网络中最多支持4个玩家,但如果有超过2个 游戏中的玩家然后api没有提供重新连接的方式,如果他们中的任何一个断开连接。