3

只是我还是 Room 中的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()方法中的主机。

有没有解决方案,或者我错过了一些基本的东西?

4

1 回答 1

3

诚然,我们的文档有点误导(我要求立即修复),但这里是我们设计此文档时所经历的解释:-D

自动化真正做的是连接不同人创建的不同房间,并将它们变成几乎一个房间,每个人都在里面。所以房间里不同的人可能对谁是房间的创造者有不同的看法。因此,使用房间的创建者来决定谁先走通常不是一个好主意。

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

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

当用户玩快游戏时,如何决定谁是第一个玩家?

于 2013-10-21T16:48:21.347 回答