1

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

4

2 回答 2

2

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

长答案:

它的每个设计

这样做的原因是 Photon Loadbalancing 的可扩展架构,它是服务器端应用程序和通常与 PUN 结合使用的 sdk 的一部分。负载平衡也是驱动光子云的原因,以防您也提到。

发生的情况是,您的客户最初连接到所谓的 Master,即匹配发生的地方。您的客户 cn 要么创建一个新房间,要么使用房间列表或任何其他匹配选项(例如 JoinRandom)加入一个房间。

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

在负载下,游戏列表及其属性可能会迅速变化 - 创建游戏 - 玩家加入和离开 - 游戏可以达到允许的最大玩家数量

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

选项

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

讨论的要点是:

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

游戏列表的缺点

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

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

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

于 2015-01-21T13:54:18.007 回答
0

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

于 2015-02-28T11:37:27.170 回答