谷歌实时多人游戏自动匹配不适用于超过1个对手。

时间:2017-07-08 10:00:30

标签: android google-play-games

我遇到了一个奇怪的问题。在我的多人游戏中,用户决定他们想要玩多少对手(最多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尝试了它,并且奇怪的是它适用于每个对手的数量。

所以,如果有人能指出我做错了什么,那将是一个很大的帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

基于此thread,如果您将min设置为1并且max设置为3,则可能会获得2人游戏。要让玩家最多3个,请将MIN_OPPONENTSMAX_OPPONENTS设置为3,并从代码中处理游戏启动逻辑。 如果逻辑变得更复杂,选择一个"服务器"可能是有意义的。例如,您可以通过说具有最低Participant ID(按字典顺序)的客户端是服务器来执行此操作。说"创造游戏的人是服务器"不好,因为在自动匹配时,每个人都认为他们创造了游戏。希望这有帮助!