Android Google Play Services-房间-创建者ID不唯一

Android Google Play Services-房间-创建者ID不唯一,android,google-play-services,google-play-games,Android,Google Play Services,Google Play Games,是我一个人,还是房间里的方法不是自动游戏独有的 我在游戏中有一些逻辑是基于一个独特的实体来决定事情的,比如哪个球员属于哪个球队。在启动和设置游戏之前,每个客户端都等待从“主机”(在本例中是房间创建者)接收此信息 @Override public void onRoomConnected(int status, Room room) { // Game Lobby is full if (status != GamesClient.STATUS_OK) { return; }

是我一个人,还是房间里的方法不是自动游戏独有的

我在游戏中有一些逻辑是基于一个独特的实体来决定事情的,比如哪个球员属于哪个球队。在启动和设置游戏之前,每个客户端都等待从“主机”(在本例中是房间创建者)接收此信息

@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);
  }
}
但是,在自动匹配类型的游戏中,每个客户端都将自己视为方法中的主机


是否有解决方案,或者我是否遗漏了一些基本的东西?

无可否认,我们的文档有点误导(我正在要求立即修复),但下面是我们在设计这个时脑子里想的解释:-D

automatching真正做的是将不同的人创建的不同房间连接起来,并使它们实际上成为一个房间,每个人都在其中。所以房间里不同的人可能对谁是房间的创造者有不同的想法。因此,使用房间的创建者来决定谁先去通常不是一个好主意

直接使用参与者ID也不是一个好主意(因为参与者ID在字典中非常高的人会发现自己在玩的每一个游戏中都排在最后)

关于如何决定谁先走,请参见我对以下问题的回答:


我已经找到了答案,至少可以说这是一个“api”错误或误解,请参见感谢Bruno,此信息非常有洞察力(特别是关于参与者ID不是真正的“随机”)。在我的例子中,谁做决定并不重要,只要参与者同意谁将做这些决定(没有优势,例如先走一步)。然而,如果你的第二条建议在将来有意义的话,我会记住的。所以。。。我们基本上没有可用的虚拟合并房间id?我需要一些字符串,数字,任何对游戏中的所有玩家都一样的东西,因为我需要用它作为种子随机()一些东西对游戏中的每个玩家都一样。在使用invite时使用了它,这一切都毁了:/