Decidir quem é o jogador 1 e 2 em um jogo baseado em rodada com o Google Play Game Services
Tenho um jogo multijogador baseado em rodadas para Android que já funcionou no XMPP e quero mudar para o Google Play Game Services. Na versão antiga, havia um bot XMPP, decidindo qual jogador seria o jogador 1 ou 2. Isso é importante para saber qual jogador deve fazer o primeiro movimento.
Com os serviços relacionados a jogos do Google Play, encontrei uma solução que quase funciona:
@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();
}
Desta forma, funciona bem ao convidar outro jogador. No entanto, muitas vezes falha quando ambos os jogadores selecionam a correspondência automática. Neste caso, ambos os jogadores estão na mesma posição nos participantes ArrayList. Portanto, ambos aparecerão como o mesmo jogador em seu dispositivo atualmente usado.
Qual é o caminho certo para selecionar o jogador 1 e 2, sem instância central para decidir isso. Existe algum dado útil na lista de participantes que não encontrei com o depurador?