【问题标题】:Multiplayer waiting room does not show connected players when it is more than 2 players多人等候室在超过 2 名玩家时不显示已连接的玩家
【发布时间】:2014-02-10 04:59:16
【问题描述】:

我正在尝试测试多人游戏的自动化功能。如果没有 4 个人,我的游戏就无法开始。我这里调用方法

Bundle am = RoomConfig.createAutoMatchCriteria(3, 3, 0);

            // build the room config:
            RoomConfig.Builder roomConfigBuilder = makeBasicRoomConfigBuilder();
            roomConfigBuilder.setAutoMatchCriteria(am);
            RoomConfig roomConfig = roomConfigBuilder.build();

我尝试在 2 台设备上进行测试。候诊室没有显示其中任何一个相互连接的问题。但是,当我将代码更改为“仅限 2 名玩家”的游戏时

Bundle am = RoomConfig.createAutoMatchCriteria(1, 1, 0);

然后两个设备都连接了,一切都像一个魅力。

这是为什么?我原以为候诊室会在玩家连接时显示他们

谢谢

【问题讨论】:

    标签: android google-play-services


    【解决方案1】:

    这是正常行为。当玩家在等候室(如果您决定选择包含的等候室)进行自动匹配场景时,直到服务找到将在该房间中的所有玩家,自动匹配玩家都不会看到任何其他连接自动匹配。

    现在,如果您在同一个房间里有 INVITED 和 AUTO-MATCH,那么当邀请被接受时,INVITER 和 INVITEES 将显示等候室。

    所以,在你的 4 人场景中。如果 INVITER (Cheetah) 邀请 Tarzan 和 Jane 进入房间(并且您的程序选择 4th 作为自动匹配)然后您开始等候室序列,Cheetah 将有一个等候室,每个等候室为 Tarzan 和 Jane 提供一个插槽,和等待填充的自动匹配。

    现在假设一个随机玩家也按下了加入游戏。他们将有一个空白等候室,其中有 3 个显示“自动选择”的插槽。

    Tarzan 首先获得邀请并进入。Cheetah 和 Tarzan 现在都将拥有等候室,Tarzan 和 Cheetah 会说“已接受邀请”并等待 Jane 和“自动选择”。随机玩家仍将拥有 3 个插槽。

    然后简收到邀请并加入战斗。 Her、Cheetah 和 Tarzan 现在的等候室将为他们中的 3 个显示“已接受邀请”,并且由于自动选择的人仍然在那里,Google 将抓住他并立即填补第 4 个空位。因此,Cheetah、Tarzan 和 Jane 会在第 4 个插槽中看到类似 P_4356 的内容,而自动选择的家伙会同时看到 3 个插槽,其编号与 P_4356 名称相似。

    如果在我们的丛林三人组进入房间时没有可用的 AutoPick 播放器,那么他们将使用第四个“Auto-Pick”盯着屏幕,直到有人加入。

    我不确定这是不是最好的行为,但它就是这样......

    【讨论】:

    • 您好,非常感谢您的解释。这种行为很糟糕。因为如果没有 4 个玩家并且所有玩家都是自动匹配的,游戏就无法开始怎么办。但是只找到了 3 个,现在您想用机器人填充第 4 个位置。没有办法做到这一点!它将是 0 名玩家或 4 名自动玩家。我希望能够启动一个计时器,并且在时间到期之前可以使用任何可用的位置,以用机器人填充它们。我想我必须使用不同的多人 api :( ..offcourse 除非你能说出解决方法
    • 您可以对受邀玩家使用时间到期。但是不,对于自动选择行为,没有那么多。我能想到的唯一解决方法变得非常复杂(再次因为 api)。如果您确实与最多 4 名玩家进行了自动匹配,那么如果只有 2 或 3 名玩家自动匹配加入,那么您可以使用该信息来启动您的机器人。然而,不利的一面是,谷歌不保证如果有 4 个人同时进行自动匹配,他们不会继续匹配 2 和 2(甚至是 3,而将 1 排除在外)在寒冷中直到另一个出现)。
    • 这就是问题所在,Google API 不会告诉您 2 或 3 是自动匹配的。它要么告诉您“找到所有 4 个”,要么告诉您“找到 0 个”。连接一个或多个时不会调用侦听器或通知
    • 哦,我明白你在说什么。我的意思不是使用 createAutoMatchCriteria(3, 3, 0) 进行连接。我的意思是你可以试试 createAutoMatchCriteria(1, 3, 0)。或 (2,3,0)。然后,如果你真的很幸运并得到了一个完整的房子,那就太好了。当 RoomConnected 时,您可以知道您拥有多少最终“现场”玩家,并根据该信息启动机器人..
    • 我明白了。没错,但根据布鲁诺在一篇帖子(谷歌人)上的回答,他说算法不会努力最大化连接。因此,如果它在 (1,3,0) 组合中找到 1,那么它很可能会停在那里
    猜你喜欢
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    相关资源
    最近更新 更多