我遇到了一个奇怪的问题。在我的多人游戏中,用户决定他们想要玩多少对手(最多3个),并在他们决定创建像这样的autoMatchCriteria之后 -
Bundle am = RoomConfig.createAutoMatchCriteria(opponentCount, opponentCount, 0);
创建一个房间 -
// build the room config:
RoomConfig.Builder roomConfigBuilder = makeBasicRoomConfigBuilder();
roomConfigBuilder.setAutoMatchCriteria(am);
RoomConfig roomConfig = roomConfigBuilder.build();
// create room:
Games.RealTimeMultiplayer.create(((MainActivity) getActivity()).getGoogleApiClient(), roomConfig);
这会相应地触发RoomUpdateListener的onJoinedRoom()或onRoomCreated()。当用户在waitingRoom中等待时,他们会在对等连接时在RoomStatusUpdateListener的onPeersConnected()中获得房间状态更新,并且在连接了最低要求的玩家后,可以开始游戏。
但是当用户选择多个对手时,onPeersConnected()只会被调用一次,并且连接的玩家会无限期地等待他们离开房间。
我用谷歌的等候室ui尝试了它,并且奇怪的是它适用于每个对手的数量。
所以,如果有人能指出我做错了什么,那将是一个很大的帮助。谢谢。
答案 0 :(得分:0)
基于此thread,如果您将min设置为1并且max设置为3,则可能会获得2人游戏。要让玩家最多3个,请将MIN_OPPONENTS
和MAX_OPPONENTS
设置为3,并从代码中处理游戏启动逻辑。 如果逻辑变得更复杂,选择一个"服务器"可能是有意义的。例如,您可以通过说具有最低Participant ID(按字典顺序)的客户端是服务器来执行此操作。说"创造游戏的人是服务器"不好,因为在自动匹配时,每个人都认为他们创造了游戏。希望这有帮助!