如何在多人游戏中同步数据(游戏中心ios)

时间:2012-12-11 12:08:40

标签: iphone objective-c ios ipad game-center

我一直在为游戏中心开发游戏。

游戏说明: -

一个玩家是游戏的发起者,因为游戏有5个平铺地图(任何一个玩家(发起者)只能随机选择一个平铺地图)。发起者将选择的瓦片地图发送给第二个玩家,现在这个瓦片地图将在第二个玩家侧绘制。(此时两个玩家都有相同的瓦片图)

当我通过向玩家发送邀请开始游戏时,此功能正常。

但是当我通过“自动匹配”开始游戏时,我无法找到谁将成为发起者(谁将发送随机选择的图块地图)。

我已通过此代码制作了一名玩家发起人:

isThisInvited_Player = YES;  
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_INVITATION_ACCEPTED object:nil];


- (void)authenticationChanged {    

    if ([GKLocalPlayer localPlayer].isAuthenticated && !userAuthenticated) {
       userAuthenticated = TRUE;  

    [GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) {

        isThisInvited_Player = YES;
        self.pendingInvite = acceptedInvite;
        self.pendingPlayersToInvite = playersToInvite;
        [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_INVITATION_ACCEPTED object:nil];

    };

} else if (![GKLocalPlayer localPlayer].isAuthenticated && userAuthenticated) {
   userAuthenticated = FALSE;
}

}

如果在“自动匹配”中无法进行数据同步,那么请告诉我,如何禁用游戏中心视图控制器中的自动匹配(播放)按钮。

1 个答案:

答案 0 :(得分:1)

您可以通过播放器ID对两个播放器进行排序,然后始终让排序后的阵列中的第一个播放器成为发起者,从而选择发起人是谁。