Google Play服务 - 会议室 - 创作者ID不是唯一的

时间:2013-10-20 19:40:03

标签: android google-play-services google-play-games

只是我或者房间里的getCreatorId()方法对于自动游戏来说不是唯一的吗?

我的游戏中有一些逻辑基于决定事物的独特实体,例如哪个玩家属于哪个团队。在启动并设置游戏之前,每个客户等待从“主机”(在这种情况下是房间创建者)接收此信息。

@Override
public void onRoomConnected(int status, Room room) {
  // Game Lobby is full
  if (status != GamesClient.STATUS_OK) {
    return;
  }

  this.room = room;

  // Assign the players teams
  if (room.getParticipantId(activity.gameHelperManager.gameHelper.getGamesClient().getCurrentPlayerId()).equals(room.getCreatorId())) {
  // Some logic here
  activity.androidManager.sendMessage(Data Sent Here);

  activity.game.startGame(GameType.MULTIPLAYER);
  }
}

另一方面:

@Override
public void onRealTimeMessageReceived(RealTimeMessage message) {

  // Get Message from host about game specific properties is here
  if (data.contains(Message Tag Here)) {
    // Parse information
    activity.game.startGame(GameType.MULTIPLAYER);
  }
}

但是,在自动匹配类型游戏中,每个客户端都将自己视为onRoomConnected()方法中的主机。

是否有解决方案,或者我缺少一些基本的东西?

1 个答案:

答案 0 :(得分:3)

不可否认,我们的文档有点误导(我正在请​​求修复),但是我们在设计时解释了我们的想法:-D

自动匹配真正做的是连接由不同人创建的不同房间,并将它们分成几个房间,每个人都在其中。因此,房间里不同的人可能会对房间的创建者有不同的看法。因此,使用房间的创建者来决定谁先行,通常不是一个好主意。

直接使用参与者ID也不是一个好主意(因为具有词典编码非常高的参与者ID的人会发现他们在他们玩的每一个游戏中都是最后一个)。

请参阅我对以下问题的回答,了解有关如何决定谁先行的更多想法:

How to decide who is the first player when user plays quick game?