【问题标题】:Photon Networking - Getroomlist()光子网络 - Getroomlist()
【发布时间】:2015-01-01 14:39:08
【问题描述】:

我使用获取房间列表功能来获取服务器中的房间。但是一旦我加入了特定的房间,我就看不到列表了?即使我连接到房间,我如何才能看到列表?

【问题讨论】:

    标签: networking unity3d photon


    【解决方案1】:

    简短回答:恐怕答案是您不能 - 它不支持开箱即用。

    长答案:

    其每个设计

    原因在于 Photon Loadbalancing 的可扩展架构 这是服务器端应用程序和 sdk 的一部分,通常是 与 PUN 结合使用。负载平衡也是驱动 Photon Cloud 的原因,以防万一您也提到了这一点。

    发生的情况是,您的客户端最初会连接到所谓的 Master,即进行配对的地方。您的客户可以使用房间列表或任何其他匹配选项(例如 JoinRandom)创建新房间或加入房间。

    一旦发生这种情况,主机将向您的客户端发送连接到托管游戏的 GameServer 所需的信息。 如果是新客户端,它会将您的客户端发送到负载最少的服务器。

    在加载下游戏列表和它们的属性可以很快改变 - 创建游戏 - 玩家加入和离开 - 游戏可以达到最大允许玩家数

    此更改从所有 GameServer 传播回 Master 但它不会传播到所有 GameServers,这意味着一旦它进入房间,它就不能对您的客户端可用。

    选项

    这里有一个关于这个主题的更长的线程: http://forum.exitgames.com/viewtopic.php?f=17&t=3093

    讨论的要点是:

    • 如果您使用的是自托管版本 Photon(不是 Photon Cloud),您可以扩展负载平衡。
    • 您可以连接第二个对等方并使其与主节点保持连接,但缺点是它被视为第二个 ccu,这可能是您的成本问题,因为它全部基于 ccu。

    游戏列表的缺点

    一般来说,在游戏中使用游戏列表作为设计组件往往被高估了 - 这是一种在开发过程中进行匹配的简单方法,但在上线时(对于大多数游戏)效果不佳。

    玩家通常不关心并匹配基于过滤器的游戏(由于 photon 支持使用过滤器进行匹配,因此不需要游戏列表),通常会导致玩家选择列表中的第一款游戏之一。在负载下,这通常意味着许多玩家尝试加入同一个游戏,这通常是一个问题,因为大多数游戏都需要某种最大玩家数。 BTW:如果他们在乎的话,通常是“我不想和朋友一起玩”,这也得到了光子匹配的支持。

    如果您有移动客户端,游戏列表可能会成为一个负担,特别是对于非常活跃的游戏,加载列表需要一些时间,并且它使用带宽来加载和维护它们。由于延迟,玩家也更有可能选择已经满员的游戏。

    【讨论】:

      【解决方案2】:

      您可以通过创建PhotonNetwork 的第二个实例并将其连接到托管游戏的所述服务器,并让此实例成为一个游戏对象,该对象也与具有您的大厅脚本的对象对话。不确定这是否会奏效或实施起来会有多难。我自己目前正在使用 Photon。

      【讨论】:

      • 这将使并发用户增加一倍,这是我负担不起的。 ://
      • 我怎样才能做到这一点?获取两个光子网络实例?
      猜你喜欢
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 2021-09-26
      • 2015-05-11
      相关资源
      最近更新 更多