背景與遊戲串流內部運作
XBOX Game Streaming 的核心是由數千部以伺服器設定方式運作的 XBOX 裝置 (XBOX 伺服器) 所組成,這些裝置位於全球的 Azure 資料中心網路中。概括而言,設定 XBOX Game Streaming 工作階段的運作方式如下:- 使用者選取想要遊玩的遊戲。
- XBOX Game Streaming 服務從可用伺服器集區中,為使用者指派一部 XBOX 伺服器。
- 服務讓使用者登入伺服器、遊戲存檔和 PLS (不會在家用主機之間漫遊),啟動遊戲,並開始遊戲串流工作階段。
- 使用者遊玩結束後,遊戲會結束、同步處理遊戲存檔資料、上傳 PLS,並將使用者登出。
一般
某些遊戲內特性會對使用者體驗造成負面影響,並可能結束 XBOX Game Streaming 上的使用者工作階段。請確保您的遊戲採取適當步驟來降低這些風險。- 了解您的遊戲何時正在串流。 首先,在串流環境中測試您的遊戲很簡單。如需如何設定 XBOX 開發套件的資訊,請參閱設定 XBOX 開發套件以進行串流,並聯絡您的 Microsoft 客戶代表,以取得您遊戲的私人雲端環境存取權。 最基本的最佳化是透過雲端感知 API 呼叫檢查遊戲何時在串流環境中執行。這提供了一種簡單的方式,讓您知道何時要針對串流改變行為。
無論是否使用遊戲串流,本文件中的許多功能和建議都可能對玩家有益並提高協助工具。
- 讓新使用者能夠盡快啟動並進入遊戲。 串流工作階段的長度變化較大,不一定能進行長時間的遊玩。您可以使用自動存檔點,且只有在使用者串流時才能繼續和推進。
- 確保使用者不會因為在長時間過場動畫期間「閒置」而中斷連線。 XBOX Game Streaming 偵測到使用者閒置時,會結束使用者工作階段。開發人員應使用 XDisplayAcquireTimeoutDeferral API,以避免工作階段進入閒置狀態而中斷使用者的連線。
視訊
- 根據螢幕大小調整您的抬頭顯示器 (HUD) 和 UI 配置。 玩家可以串流到各種具有不同外型規格、觀看距離和解析度的裝置。雖然遊戲中的文字和 UI 元素在大螢幕電視上可能清晰可讀,但在較小的裝置上可能會變得難以閱讀。XGameStreamingGetStreamPhysicalDimensions API 可協助確保可縮放的 UI 元素在串流目標的特定裝置上夠大。 自訂解析度概觀可讓您更進一步,利用使用者裝置的完整螢幕 (其中許多裝置並不符合電視傳統的 16:9 解析度),提供更身歷其境且自然的體驗。這也能改善使用原生觸控之遊戲的可用性。
- 盡可能避免使用紅色文字 由於視訊壓縮格式以及人眼對紅色的敏感度,這個顏色通常被認為受到的影響最大。避免使用這個顏色 (尤其是在文字的鮮明邊框和細線中),可以減少可察覺的壓縮失真。
- 允許設定 Gamma 和其他視訊設定 玩家可以串流到各種具有不同外型規格和螢幕特性的裝置。XGameStreamingGetClients 可用來取得每部串流目標裝置的唯一識別碼;使用此識別碼按裝置儲存和還原視訊設定,以因應不同裝置之間的亮度差異。
- 減少視訊延遲 確保您的遊戲與 DirectCapture 相容,可大幅減少玩家的視訊延遲,打造回應更快且更有樂趣的體驗。如需詳細資訊,請參閱 DirectCapture 概觀。
輸入
- 讓使用者能夠以適合其裝置的自然方式與遊戲互動。 玩家可以串流到各種具有不同外型規格和輸入類型 (例如滑鼠和鍵盤、觸控螢幕等) 的裝置。盡可能支援這些其他模式。內容測試應用程式 (CTA) 串流設定概觀提供更多資訊,說明如何使用控制器以外的輸入類型測試串流。 如需觸控控制項和原生觸控的詳細資訊,請參閱開始使用觸控。
- 回應最近的輸入類型 玩家可以在各種裝置之間繼續遊戲並在串流時繼續遊玩,而且不一定有實體控制器。在這些情況下,玩家期望能夠在控制器、觸控以及滑鼠和鍵盤輸入之間無縫轉換。遊戲可以使用「最後一個優先」原則,將 UX 和提示切換為玩家偏好的輸入類型。盡可能不要將玩家鎖定在某種輸入類型,或要求使用控制器才能將模式切換為不同的輸入類型。如需處理不同輸入類型的詳細資訊,請參閱 GameInput 概觀。
- 考量輸入延遲 延遲是串流環境中無法避免的現實。雖然平台會盡可能將延遲降至最低,但遊戲在解譯輸入時可以進一步了解並考量延遲。如需可用來減少玩家所感受之延遲的技術詳細資訊,請參閱遊戲串流延遲測量和遊戲串流延遲補償概觀。
當地語系化
- 使用 Intelligent Delivery 進行內容當地語系化,而不是使用多個套件 XBOX Game Streaming 會偵測使用者連線的實體區域 (也就是國家/地區)。此外,XBOX Game Streaming 也會偵測使用者在其本機裝置上設定的地區設定。這些偵測到的區域和地區設定值會傳遞給 XBOX 伺服器,以將其設定為相符。XBOX Game Streaming 也會確保為使用者提供已在 Partner Center 中針對該區域設定的遊戲套件。 因此,我們建議開發人員為其遊戲提交單一套件,其中包含利用 Intelligent Delivery 語言規範的所有當地語系化內容,而不是提交包含不同當地語系化內容集的多個套件。這可確保無論使用者當時是從哪個國家/地區遊玩,都能以其偏好的語言體驗遊戲。
儲存體
- 避免需要暫存磁碟機在遊戲工作階段之間保存資料 XBOX Game Streaming 會在任何工作階段之間清除暫存磁碟機中的所有資料。後續的遊戲工作階段可能會在不同資料中心的不同 XBOX 伺服器上進行。遊戲不應將工作階段之間所需的任何資料儲存在暫存磁碟機上。
- 避免大量使用持續性本機儲存體 (PLS) XBOX Game Streaming 會在工作階段之間漫遊持續性本機儲存體;使用超過 4 GB 的 PLS 會增加在 XBOX Game Streaming 上啟動遊戲的時間。PLS 每增加使用 4 GB,載入時間預計就會增加 20 秒。
網路
- 預期不同的網路延遲和特性 XBOX Game Streaming 從 Azure 資料中心執行 XBOX 主機。這表示一位使用者可能會從多個 IP 範圍遊玩,而且 Ping 時間可能比家用主機玩家更低。
- 避免使用連接埠 9002 XBOX Game Streaming 使用連接埠 9002 進行網路通訊,因此遊戲開發人員不應將連接埠 9002 用於 TCP 或 UDP 通訊。如需遊戲特定連接埠和網路設定的其他資訊,請參閱設定開發網路存取。
連接埠 9002 現已在最近的 GDK 中遭到封鎖。
不支援的遊戲內案例
由於 XBOX Game Streaming 的設計將使用者體驗限制為僅限遊戲,因此在雲端串流期間不支援下列遊戲內案例。不過,當使用者串流其家用主機時,其中某些案例可能可以運作。- 避免嘗試啟動其他應用程式或遊戲 除了啟動 Edge 瀏覽器之外,XBOX Game Streaming 不支援另外啟動遊戲/應用程式。
- 避免依賴網頁瀏覽器與正在遊玩的遊戲位於同一部實體電腦上 在 XBOX Game Streaming 上對網頁瀏覽器或系統裝載之 Web Blend 進行的通訊協定啟用,會導致該啟用在使用者正在遊玩的本機裝置上啟動。開發人員應確保這些體驗不依賴瀏覽器與遊戲在同一部裝置上執行。範例:遊戲啟動到某個網站,而該網站有一個嘗試透過通訊協定啟用遊戲的「返回」按鈕。
- 避免在任何時候要求使用者手動重新啟動遊戲 這包括遊戲自行更新並要求使用者手動重新啟動遊戲的案例。遊戲關閉後,XBOX Game Streaming 就會結束使用者工作階段,因此重新啟動遊戲會結束串流。
- 避免過度處罰閒置太久的使用者 使用者意外與工作階段中斷連線後,XBOX Game Streaming 會讓使用者工作階段保持運作 5 到 10 分鐘。因此,如果遊戲處罰閒置的使用者,就會對 XBOX Game Streaming 使用者造成不必要的傷害。遊戲可以使用 XGameStreamingGetClients API 來明確偵測 GameStreaming 用戶端中斷連線。
遊戲服務
XBOX Game Streaming 透過資料中心內的 XBOX 伺服器,讓更廣泛的對象能夠使用遊戲,這對利用 Ping 時間或裝置識別碼等裝置特性來改變遊戲行為的遊戲服務會有影響。- 避免利用 XBOX services 安全性權杖 (XSTS) 進行封鎖/詐騙偵測 XBOX Game Streaming 使用者每個工作階段都會取得新的 XBOX 伺服器,因此看到許多來自同一部裝置的個別使用者工作階段完全在預期之中。此外,在此情況下,遊戲服務不應封鎖這些裝置。若要得知這些工作階段源自 XBOX 伺服器,開發人員可以在遊戲中使用 XGameStreamingGetServerLocationName GDK API。您也可以從 XSTS 權杖偵測這一點;如需在遊戲服務中處理裝置身分識別的詳細資訊,請參閱在 XBOX services 安全性權杖 (XSTS) 宣告中參考 XBOX Game Streaming 伺服器。
- 避免在太多人於同一部 XBOX 伺服器上遊玩時禁止使用者遊玩 個別 XBOX 伺服器會在不同時間由多位玩家使用;如果您的遊戲封鎖這類執行個體,將會損害 XBOX Game Streaming 玩家的體驗。(例如,遊戲在太多遊戲工作階段源自相同 IP 位址或裝置識別碼時發生問題。)
- 避免遊戲服務將來自相同 IP 位址的大量工作階段標示為可疑 資料中心內的數部 XBOX 伺服器可能會共用相同的公用 IP 位址進行傳出和傳入通訊。請確保您的遊戲服務能夠處理 100 部以上使用相同 IP 位址的不同 XBOX 主機。
-
避免使用依賴遊戲執行位置之 IP 位址的邏輯來做出與使用者相關的原則決策
XBOX 伺服器不一定位於使用者所在的國家/地區。使用 IP 位址進行遊戲內遊玩決策會降低使用者體驗。
XGameStreamingGetClientIPAddress 函式可用來判斷串流用戶端的 IP 位址,更適合用於遊戲邏輯。[!IMPORTANT]
XGameStreamingGetClientIPAddress已淘汰,自 2604 GDK 版本起生效,並將在未來的版本中移除。若要判斷使用者的位置,請改用 XSTS 權杖宣告。如需詳細資訊,請參閱在 XSTS 宣告中參考 XBOX Game Streaming 伺服器。 - 避免遊戲或遊戲服務在延遲檢查顯示玩家延遲非常低時中斷或處罰使用者 由於資料中心的設定,XBOX Game Streaming 使用者的 Ping 時間一律會比本機主機上的使用者更低。雖然您可能會收到 0 毫秒的 Ping 時間,但請務必不要使用 Ping 時間來降低使用者體驗或封鎖使用者。請勿根據 Ping 時間移除/調整任何內部遊戲/伺服器邏輯。
