強烈建議您考慮使用 Multiplayer SDK,因為它包含即時訊息支援,可減少輪詢的需求,改善配對體驗並減少延遲。使用伺服器回填票證 - Multiplayer SDK
- 配對
- 回填票證無法彼此配對。
- 回填票證在搜尋期間會獲得優先權。這可減少玩家群的分散。
- 合約
- 建立回填票證時可以包含
ServerDetails欄位。這可讓伺服器指出配對成功的玩家應如何連線到伺服器。 - 建立回填票證時可以包含隊伍指派。這可讓有隊伍的遊戲保留其隊伍資訊。
- 建立回填票證時可以包含
- 佇列屬性
- 回填票證不會觸發 Multiplayer Server 配置。
- 回填票證不會反映在佇列統計資料中,因為其玩家已經在玩遊戲,會不正確地扭曲等候時間。
- 擁有權
- 回填票證由遊戲伺服器擁有,而非使用者。使用者無法以任何方式檢視回填票證或與之互動。
建立伺服器回填票證
回填程序的開始方式與建立一般配對票證類似,但使用的是 CreateServerBackfillTicket 呼叫,而不是 CreateServerMatchmakingTicket 呼叫。遊戲伺服器必須提供其目前裝載之遊戲的所有成員資訊。最有效率的做法是儲存先前比賽結果中傳回的屬性。這些屬性可以透過搭配ReturnMemberAttributes 旗標呼叫 GetMatch 來擷取。或者,遊戲伺服器也可以向使用者查詢屬性資訊。
除了成員之外,遊戲伺服器還可以指定兩項額外資訊。
ServerDetails
此結構與 GetMatch 呼叫中傳回的結構完全相同,可讓伺服器指定連線到伺服器所需的任何資訊。當回填票證配對成功時,其 ServerDetails 結構會傳回給任何對產生之比賽呼叫 GetMatch 的玩家。此結構中的所有欄位都是選用的。遊戲可能只需要其中一部分欄位,就能提供足夠的資訊讓用戶端連線到遊戲伺服器。IPV4Address 欄位不會經過驗證,可用來將任意連線字串資訊提供給用戶端。隊伍指派
如果回填票證提交至有隊伍的佇列,每個成員也可以指定 TeamId,表示其目前所在的隊伍。傳回比賽時會保留此成員資格。如果未為使用者指定 TeamId,該使用者可能會被安排到任何隊伍。與回填票證互動
建立後,回填票證會開始搜尋符合規則準則的一般配對票證。回填票證的流程與一般配對票證的運作方式完全相同,只是使用類似的 API。遊戲伺服器可以呼叫 GetServerBackfillTicket 來檢查其票證的狀態,也可以呼叫 CancelServerBackfillTicket 來取消票證。用戶端不得取消其所在的回填票證。假設某個用戶端在 4 對 4 的比賽中,而對方隊伍有一位玩家離開。該用戶端可能會藉由持續取消其所在的任何回填票證來維持優勢。為了防止這種情況,只有遊戲伺服器可以取消回填票證。
成員資格限制及從遺失的回填票證中復原
與一般配對票證類似,使用者在任何時候每個佇列只能位於一張回填票證中。此限制與用戶端控制的一般票證分開追蹤。 如果遊戲伺服器建立回填票證後當機,遺失之回填票證中的任何使用者都會因為成員資格限制而無法提交至另一張回填票證。遊戲伺服器會透過收到錯誤MatchmakingTicketMembershipLimitExceeded 發現此情況,同時在 errorDetails 本文中會有一份使用者清單,指出哪些使用者有未完成的回填票證。
