我有一个基于轮次的Android多人游戏,之前一直使用XMPP协议运行,现在我想转换到Google Play游戏服务。在旧版本中,有一个XMPP机器人来决定哪个玩家将成为玩家1或2。这很重要,以确定哪个玩家应该先走。
通过Google Play游戏服务,我找到了一个几乎可用的解决方案:
@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();
}
当邀请另一个玩家时,这种方式运行良好。然而,当两个玩家选择自动匹配时,它经常失败。在这种情况下,两个玩家在参与者ArrayList中处于相同的位置。因此,在他们当前使用的设备上,他们将都出现为同一玩家。
没有中央实例来决定选手1和2的正确方法是什么?在参与者列表中是否有任何有用的数据我没有通过调试器找到?