This document is about: SERVER 4
SWITCH TO

Webhooks FAQ

如何重新加入房間?

Actor可以在房間停用時間的RoomOptions.PlayerTTL毫秒之前通過調用SDK客戶端的OpReJoinRoom()來重新加入房間。
停用時間是指Actor在房間裡變得不活躍的時候。
當一個Actor意外地斷開連接或暫時離開房間(非捨棄)時,他就會在房間內變得不活躍。

如果我只是在創建新房間時將EmptyRoomTtl設置為int.MaxValue會發生什麼?

這是不可能的,Photon伺服器將返回一個錯誤,表明EmptyRoomTtl應該被修改為一個較低的值。
Photon伺服器中EmptyRoomTtl的閾值被設置為60000毫秒(1分鐘)。
要改變這個限制,請在LoadBalancing GameServer應用程序的配置文件("deploy\Loadbalancing\GameServer\bin\Photon.LoadBalancing.dll.config")中更新MaxEmptyRoomTTL,如下:

XML

<Photon.LoadBalancing.GameServer.GameServerSettings>
    <setting name="MaxEmptyRoomTTL" serializeAs="String">
        <value>60000</value>
    </setting>
    <!-- other settings -->
</Photon.LoadBalancing.GameServer.GameServerSettings>

對於實時遊戲,EmptyRoomTtl的最佳實踐值是12秒(12,000毫秒)。

webhooks可以修改房間的狀態嗎?

簡短的回答是不能。
但是,當您加載一個已保存的房間狀態時,您可以改變它的幾個_非二進制進階_屬性。

除了存儲和檢索房間的狀態,webhooks還有什麼有趣的用例嗎?

Well, there are many things possible with webhooks :)

Here's a list of few :

嗯,webhooks可以做很多事情 :)

下面是一些列表:

  • 伺服器端的授權代碼。:
    當一些特定的遊戲邏輯只需要在伺服器端執行時,這可能是有用的。
  • 對惡意駭客的保護:
    Webhooks在檢測作弊者時也很方便。
    PathProperties和PathEvent webhooks可以用來從伺服器端代碼授權玩家的行為。
  • 從伺服器端發送推送通知:
    使用PathEvent webhook發送推送通知可以通過從伺服器端僅向不活躍的玩家發送來進行優化。
  • 保存Photon房間狀態以外的遊戲數據:
    我們沒有義務只使用Photon的房間屬性或事件緩存作為遊戲數據。
  • 分析:
    Webhooks可以成為一個強大的、免費的分析服務。
    您可以跟蹤的統計數據很多,比如房間的創建,Actor的加入,房間的事件,…

Webhooks可以修改房間事件數據或發送新的Photon 事件嗎?

不能,webhooks不能改變已接收的事件數據,也不能發送任何其他事件。

是否可以從webhooks訪問自定義房間屬性?

簡短的回答是不能。
然而,State對象,可作為 "PathEvent"、"PathProperties "和 "PathClose "的 Type=='Save' webhooks的參數,包含一個可讀形式的公共自定義屬性(即對大廳可見)。

何時應將Actor視為離開或標記為不活動?

任何與遊戲伺服器斷開連接的Photon Actor都以某種方式離開了一個房間。
問題是這個Actor是否有意離開房間-這意味著他/她明確地 "放棄 "或 "退出 "或 "離開 "了房間-或者不是。
如果是故意離開的,該Actor將不再是房間的Actor的一部分,從而從房間的Actor列表中刪除。
相反,如果Actor暫時離開房間,願意以後重新加入,那麼他/她將被標記為InactiveIsActive = falseIsComingBack

任何加入房間並仍然連接到其各自的遊戲伺服器的Actor將永遠被認為是 Active
Actor的狀態在PathEvent webhook的房間Actor列表中顯示。
更多信息請見其相關章節。

要放棄一個房間,您應該調用OpLeave(false),要離開一段時間,只需使用Disconnect()或OpLeave(true)
對於某些遊戲類型特有的 "直退 "或 "憤怒退出 "等可能情況,用戶可以選擇這兩種方法中的一種。

參見PathLeave webhook部分以了解更多信息。

0 <= PlayerTTL <= EmptyRoomTTLIsPersistent = true是否有意義?

PlayerTTL是一個Actor在房間裡不活動的時間。意思是說,玩家可以在房間裡保持斷開連接的時間。如果您創建的房間的PlayerTTL = 0,那麼您不應該期望玩家回來。如果他們不回來,那麼就沒有必要為他們保存房間狀態。這是設計上的問題,只有當房間裡至少有一個不活動的玩家時,房間狀態才應該被保存。

參見PathLeave webhook部分以了解更多信息。

Back to top