Interest Groups

您可以把Photon的 "興趣小組 "想象成一個房間裡的對話的子頻道。
客戶端只收到他們訂閱的興趣小組(和0組)的信息。
他們可以把任何事件發送到他們想發送的任何組。

這個簡單的功能可以用於基本的興趣管理或任何您認為合適的方式。
請猜考下方用例。

可取得組

客戶不需要明確地創建興趣小組。
興趣小組是按需求創建的;當actor訂閱了一個新的小組號碼,伺服器就會創建它。

Photon最多提供256個興趣組。
組號0是保留的,用於廣播。一個房間內的所有actor(客戶)都訂閱了0號組,不能取消訂閱。
其他255個組可供開發者自由使用。
任何分配給組>0的事件將只被傳送給對該組感興趣的客戶,並且在伺服器轉發該事件時在房間裡。

Important: You can only cache events sent to interest group 0! No other group has an event cache.

全局設置

訂閱組的列表可以在房間內隨時更新,通過添加或刪除他們的號碼,使用:

C#

bool LoadBalancingPeer.OpChangeGroups(byte[] groupsToRemove, byte[] groupsToAdd)

Notes:

  • 優先權總是在組的添加上:如果同一個組的號碼被添加到兩個數組中,那麼這個組將被添加。
  • 一個null 矩陣作為 "無組",一個空矩陣(new byte[0])作為 "所有組"。
  • LoadBalancingPeer.OpChangeGroups(new byte[0], groupsToAdd)將刪除所有組,除了groupsToAdd中的組。
  • LoadBalancingPeer.OpChangeGroups(groupsToRemove, new byte[0])將添加所有組,不管groupsToRemove的值是什麼。
  • 由於ChangeGroups操作不返回回應或觸發事件,如果需要,每個客戶端應該在本地緩存他感興趣的組。

案件用例

每個客戶端要訂閱的興趣組,可以在運行時動態定義,也可以在編譯時靜態定義。
興趣小組的設置可以在所有的客戶端上都是一樣的,也可以在每個客戶端上都是不同的。

興趣組對於降低房間內每秒的信息數量非常有用。
通過降低流量,您可以保持在信息/秒的限制之下,削減成本,有時它可以幫助您增加每個房間的最大玩家數量。

但您也可以想出其他巧妙的方法,在您的游戲中使用興趣小組。

網絡刪減

興趣小組的最常見的使用情況是網路刪減。
興趣小組可以被映射到您的遊戲中感興趣的區域。
例如,如果您有一個 "巨大的世界",您可以把它分成小塊,我們稱之為 "區域",並為每個 "區域 "指定一個興趣小組。

團隊活動

如果您的遊戲中有團隊,並想實現團隊專屬的事件,您可以為每個團隊指定一個興趣小組。
所有的團隊成員都應該訂閱該團隊的興趣小組。
團隊間的事件應該使用團隊自己的組號來發送。
團隊內部的事件應該使用對手團隊的組號來發送。

Back to top