- 額外的區域可提供備援。如果單一 Azure 區域失敗,玩家可以存取其他區域中的伺服器。
- 額外的區域可讓玩家存取「鄰近」的伺服器,並提供低延遲的連線能力。
服務品質信標
PlayFab 在 PlayFab 多人遊戲伺服器所使用的每個 Azure 區域中都運作信標。這些信標會反射 UDP 流量,可用來透過 UDP 傳輸測量延遲。 使用 UDP 很重要,因為大多數多人遊戲對其最重視效能的遊戲流量都使用 UDP 傳輸。網際網路服務提供者和網際網路生態系統的其他元素,可能會對 UDP、TCP 和 ICMP 流量提供不同的效能。 以下是在玩家裝置內容中使用這些信標的典型流程:- 讓玩家登入 PlayFab。這通常是使用 LoginWithCustomID 或其他登入 API 完成。
- 呼叫 ListQoSServersForTitle。這會提供 PlayFab QoS 信標的主機名稱。典型的實作可能會在遊戲的 Multiplayer Menu 頁面上執行此程序。
- 建立 UDP 通訊端。
- 將單一 UDP 資料包傳送至 QoS 伺服器上的連接埠 3075。訊息內容必須以 0xFFFF (1111 1111 1111 1111) 開頭。
- 伺服器會以單一資料包回覆,其訊息內容的前 2 個位元組會「翻轉」為 0x0000 (0000 0000 0000 0000)。資料包的其餘內容將從初始 Ping 複製。
- 測量傳送 UDP 訊息與收到回應之間的時間。
使用服務品質 SDK
PlayFab C# SDK 和跨平台 (CPP) SDK 提供 QoS Ping 程式碼的實作。您可以建置 SDK 並在 PC 遊戲中將其作為協助程式庫使用、參考 C# NuGet 套件,或將程式碼作為其他平台的範例。 每個 API 都會傳回QosResult,其中包含區域的排序清單,以及每個區域的平均 Ping 時間。
C#
C# SDK 中有可用的 QoS API。gsdkSamples 存放庫中提供了範例實作 WindowsRunnerCSharpClient。 程式碼位於 PlayFabQosApi.cs 中。 參數:timeoutMs- 套用至每次 Ping 嘗試的逾時 (以毫秒為單位) (預設值:250ms)。pingsPerRegion- 針對每個區域進行的 Ping 嘗試次數 (預設值:10)。增加此數字會增加執行時間,但會降低結果不準確的可能性。degreeOfParallelism- 平行進行的 Ping 數目上限 (預設值:4)。增加此數字會縮短執行時間,但如果此數字太大,網路爭用可能會導致結果不準確。
C++
PlayFab 跨平台 (CPP) SDK 中有兩個可用的 QoS API。 程式碼位於 PlayFabQosApi.cpp 中。 參數:numThreads- 平行進行的 Ping 數目上限。增加此數字會縮短執行時間,但如果此數字太大,網路爭用可能會導致結果不準確。timeoutMs- 套用至每次 Ping 嘗試的逾時 (以毫秒為單位) (預設值:250ms)。
