Android用のラウンドベースのマルチプレイヤーゲームが以前XMPPで動作していましたが、Google Playゲームサービスに切り替える必要があります。古いバージョンでは、XMPPボットがあり、どのプレイヤーがプレイヤー1または2になるかを決定しました。これは、どのプレイヤーが最初に動くべきかを知るために重要です。他のプレイヤーを招待するときGoogle Playゲームサービスのラウンドベースのゲームでプレイヤー1と2を決定する
@Override
public void onRoomConnected(int statusCode, Room room) {
ArrayList<Participant> participants = room.getParticipants();
Participant first = participants.get(0);
if (first.getPlayer() == null || !first.getPlayer().getPlayerId().equals(myPlayerId)) {
LaskaField.HUMAN_PLAYER = 2;
LaskaField.OTHER_PLAYER = 1;
opponent = first.getDisplayName();
} else {
LaskaField.HUMAN_PLAYER = 1;
LaskaField.OTHER_PLAYER = 2;
opponent = participants.get(1).getDisplayName();
}
setPlayerNames();
}
この方法では正常に動作します:Google Playのゲームサービスで
は、私はほとんど機能するソリューションを見つけました。ただし、両方のプレーヤーが自動マッチングを選択すると、しばしば失敗します。この場合、両方のプレイヤーは参加者のArrayListの同じ位置にいます。したがって、両方とも現在使用されている端末に同じプレーヤーとして表示されます。プレイヤー1とプレイヤー2を選択する正しい方法は、これを決定するためのセントラルインスタンスがないことです。参加者リストにデバッガで見つけられなかった有用なデータはありますか?
ああ、私はparticipantIdsがランダムであることを認識しませんでした。それは私の問題を解決します:) –
参加者IDは完全にランダムではありません:https://www.youtube.com/watch?v=yIY1zsZ2yCU – janst
クライアントは何ですか? –