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

確かに、私たちのドキュメントは少し誤解を招くものです (私はすぐに修正を要求しています)。

自動マッチングが実際に行うことは、さまざまな人によって作成されたさまざまな部屋を接続し、それらを実質的に 1 つの部屋にして、全員がそこにいるようにすることです。そのため、部屋にいる人によって、誰が部屋の作成者であるかについて異なる考えを持っている可能性があります。そのため、誰が最初に参加するかを決定する方法としてルームの作成者を使用することは、一般的には良い考えではありません。

参加者 ID を直接使用することも良い考えではありません (辞書編集的に非常に高い参加者 ID を持つ人は、プレイするすべてのゲームで自分が最後になることに気付くからです)。

誰が最初に行くかを決定する方法のアイデアについては、次の質問に対する私の回答を参照してください。

ユーザーがクイックゲームをプレイするときに最初のプレイヤーを決定する方法は?

于 2013-10-21T16:48:21.347 に答える