選擇最佳解析度
玩家會將遊戲串流至各種裝置,包括手機、平板電腦、PC 和電視。這些裝置涵蓋低解析度到高解析度的顯示器,從超寬螢幕 32:9 顯示器到方形平板電腦,以及直向的高螢幕裝置。玩家偏好讓遊戲填滿整個螢幕或視窗,而不出現黑邊。在可能的情況下,如果畫面與用戶端的顯示器相符而不需縮放,影像也會更清晰。最後,用戶端的理想解析度可能取決於硬體和網路狀況。 XGameStreamingGetDisplayDetails API 會將所有這些因素納入考量,並傳回「慣用」的寬度和高度。在理想情況下,「慣用」解析度就是用戶端螢幕的解析度和長寬比;但如果無法使用該解析度,則會是符合串流限制和傳遞給XGameStreamingGetDisplayDetails 之參數的最接近解析度和長寬比。
如果您的遊戲可以轉譯任何解析度,只要呼叫 XGameStreamingSetResolution 並將轉譯解析度設定為慣用解析度,就能獲得最佳結果。
許多遊戲是針對一組固定的解析度所設計。例如,您的遊戲可能有支援數種解析度的 PC 版本,即使在 XBOX 上通常會縮減為一種解析度。在此情況下,Microsoft 建議以慣用解析度作為指引,挑選您的遊戲所支援的最接近解析度。其中一個好方法是找出最接近慣用長寬比的解析度,讓遊戲盡可能填滿用戶端的螢幕。請注意,XGameStreamingDisplayDetails 結構包含您可設定之解析度的限制。它也包含旗標,告訴您目前的串流是否支援非標準解析度和呈現縮放。
如果無法自動選擇解析度,但您遊戲的 PC 版本包含解析度選擇器,您也可以讓玩家選擇解析度,只要這些解析度符合 XGameStreamingDisplayDetails 的限制即可。
接聽更新
在串流期間,最佳解析度可能會因數種原因而變更:- 在雲端伺服器上,遊戲會在串流用戶端連線之前啟動,因此無法立即取得慣用解析度。
- 使用手機或平板電腦的玩家可能會在直向和橫向之間旋轉裝置。
- 使用 PC 的玩家可能會調整串流用戶端視窗大小或切換全螢幕。
- 網路狀況可能會變更,而需要不同的串流解析度。
XGameStreamingClientProperty::DisplayDetails 屬性) 偵測用戶端的慣用解析度何時變更。當這些事件發生時,請變更解析度以符合新的 XGameStreamingDisplayDetails。
至少,處理雲端伺服器上玩家的初始用戶端連線事件以取得相符的解析度非常重要。
變更的限制
變更串流解析度時,玩家會看到短暫的閃爍 (類似在 PC 上變更遊戲解析度時的樣子)。為了將干擾降至最低,Microsoft 建議僅在回應上述事件時變更解析度。 除了玩家體驗之外,也不建議每 200 毫秒變更串流解析度超過一次,因為視訊編碼器可能沒有時間配合遊戲解析度,而導致短暫的視覺拉伸。上述事件每 200 毫秒不會觸發超過一次。設定 XGameStreamingGetDisplayDetails 的參數
XGameStreamingGetDisplayDetails API 包含用於您遊戲限制的參數。如果正確設定這些參數,API 將會計算出符合這些限制的最佳解析度。參數如下:
maxSupportedPixels:這是您的遊戲不應超過的像素總數。維持效能的一個經驗法則是,將您的遊戲在目前系統裝置類型上通常轉譯的寬度和高度相乘。例如,如果您的遊戲在 XBOX Series S 上通常轉譯 1440p,則在該裝置類型上傳遞 maxSupportedPixels=2560*1440=3686400。
widestSupportedAspectRatio 和 tallestSupportedAspectRatio:這些是您遊戲的長寬比限制。將這些設定為您已測試過的最寬和最高長寬比,可確保您的遊戲在所有裝置上都有良好的外觀。
觸控輸入和自訂解析度
透過XGameStreamingSetResolution 變更解析度,會變更觸控輸入座標空間以符合新的長寬比。GameInputTouchState 包含正規化為 0-1 範圍的觸控座標。變更解析度時,該範圍保持不變,但現在代表您的新解析度。例如,在未使用自訂解析度的 1920x1080 遊戲中,位於 (0.5, 0.5) 的觸控代表 (960, 540);但呼叫 XGameStreamingSetResolution 變更為 1600x800 後,位於 (0.5, 0.5) 的觸控代表 (800, 400)。請注意,當您變更解析度時,GameInputTouchSensorInfo 中的解析度和長寬比值不會更新;請使用您傳遞給 XGameStreamingSetResolution 的值 (而非 GameInputTouchSensorInfo) 來計算觸控位置。
安全區域
許多裝置的螢幕有部分遭到遮擋,例如瀏海、圓角和覆疊的滑動列。XGameStreamingDisplayDetails 包含 safeArea 矩形,描述螢幕中央未遭遮擋的矩形。為了確保重要內容可見,請將此矩形視為作品安全空間的邊界。其外的區域可能是可見的,仍應包含內容,但不應包含重要的 UI 元素。
