在 XBOX Series 主機上升級您的 XBOX One 軟體開發套件遊戲
本主題說明 XBOX One 軟體開發套件遊戲如何偵測其正在 XBOX Series X|S 上執行。遊戲接著可以利用這項資訊,在仍以回溯相容性模式運作的同時,提供更佳的體驗。 XBOX One 軟體開發套件遊戲可以透過內容更新其 XBOX One 遊戲,充分利用新 XBOX 主機約 80% 的效能,而不需要 (例如) 升級至 Microsoft Game Development Kit (GDK) 或新的著色器編譯器。XBOX One 軟體開發套件遊戲無法存取 DirectX 12 Ultimate 等新的平台功能。 本主題說明如何偵測您正在 XBOX Series 主機上執行,並說明以回溯相容性模式執行的 XBOX One 軟體開發套件遊戲,相較於使用 Microsoft Game Development Kit (GDK) 建置的 XBOX Series X|S 原生遊戲有哪些限制。 本主題也會說明開發人員在 XBOX Series 主機上執行時,如何啟用額外的體驗。這些功能包括 Quick Resume、AutoHdr、AnisoBoost 和 VsyncMode。 本主題不適用於已經使用 Microsoft Game Development Kit (GDK) 的遊戲。我們要求在 2020.06 Microsoft Game Development Kit (GDK) (第一個核准用於 XBOX Series 主機的 Microsoft Game Development Kit (GDK)) 之前發行的 XBOX One Microsoft Game Development Kit (GDK) 遊戲,升級至 2020.06 或更新版本的 Microsoft Game Development Kit (GDK)。簡介
從 2020.06 復原版本開始,XBOX One 軟體開發套件遊戲可以透過官方 API 偵測其是否正在 XBOX Series X 或 XBOX Series S 上執行。這只需要簡單更新遊戲的程式碼和 AppxManifest 檔案,並使用 2018.07 QFE 工具安裝程式進行封裝。 雖然沒有特別要求您必須升級原本出貨時使用的 XBOX One 軟體開發套件才能利用新功能,但若要配置超過 5 GB 的 RAM,您的遊戲必須針對 2017.06 或更新版本的 XBOX One 軟體開發套件進行建置。 XBOX One 軟體開發套件遊戲可以透過一般方式部署到 XBOX Series X 開發套件,並將套件設定為「XBOX Series X」或「Lockhart」模式。 將遊戲推送部署到零售版 NVMe SSD 對測試而言至關重要。速度較快的磁碟機可能會讓 CPU 被大量解壓縮工作淹沒,造成在 XBOX One 主機上不會發生的畫面停頓。 您或您的發行商必須在以 XBOX Series X 和 Lockhart 模式執行的 XBOX Series X 開發套件以及 XBOX One 主機上,徹底測試遊戲更新。XBOX 回溯相容性小組不會測試使用「XBOX Series X|S 感知」模式的內容更新;當 XBOX One 軟體開發套件遊戲的 AppxManifest 檔案中加入某些設定時,就會建立此模式。 2018.07 是最後一個 XBOX One 軟體開發套件版本。目前沒有新增功能的計畫。支援現在僅限於沒有因應措施的重大錯誤修正。我們強烈建議您在未來的遊戲中升級至 Microsoft Game Development Kit (GDK)。行銷
XBOX One 軟體開發套件遊戲的內容更新無法使用新 XBOX Series 主機的完整效能或功能集。雖然利用這些選項的 XBOX One 軟體開發套件遊戲有資格獲得針對強化功能的行銷與推廣,但並不符合任何適用於使用 Microsoft Game Development Kit (GDK) 建置之 XBOX Series X|S 原生內容更新的特定品牌標示資格。建議
我們強烈建議遊戲實作動態解析度縮放 (DRS)。它可以在將掉格降到最低的同時,將解析度最大化。不過,您應該留意,確保在新的 XBOX Series 主機上不會錯誤地受到 XBOX One 解析度限制的約束。 您需要決定遊戲要如何運用額外的 CPU、GPU、記憶體和 IO 速度。不過,我們確實建議為玩家提供下列選項。- 雙倍畫面播放速率的「效能」選項:
- 但請注意,在 XBOX Series X|S 上執行的 XBOX One 軟體開發套件遊戲只能解鎖約 80% 的 GPU 效能。並非所有硬體元件的效能都加倍,例如頻寬。
- 這表示 XBOX Series S 或許能以雙倍畫面播放速率,並可能以 1080p 的解析度合理地執行 XBOX One S 遊戲。不過,XBOX Series X 可能難以達到與 XBOX One X 相同的解析度。可能需要稍微降低解析度,才能穩定達到畫面時間目標。
- 「解析度」選項,或許僅適用於 XBOX Series S:
- 相同的畫面播放速率,但 1080p 應該是可達到的最低解析度,最高解析度為 1440p 或更高。遊戲可以在 XBOX Series S 上使用 HD 紋理,並實作 4K 抬頭顯示器。
- 您遊戲的 XBOX One X 版本可能已經達到足夠高的解析度,因此在 XBOX Series X 上提供「解析度」選項意義不大。
- 我們不建議遊戲嘗試實作高於 4K 的解析度。
- 「強化」選項:
- 我們建議 XBOX Series S 至少以 1080p 執行,因此部分額外的 GPU 效能可能會用在解析度上。在 XBOX Series X 上,少量額外的 GPU 效能可能就足以支援固定的 4K 解析度。
- 新 XBOX Series 主機上可用的額外效能中,有相當大的一部分可以用於例如多項升級、更遠的繪製距離、更多 NPC、更高解析度的陰影/更多投射陰影的光源,以及更好的紋理篩選。
偵測 XBOX Series 主機
XBOX One 軟體開發套件遊戲只要在其 AppxManifest 檔案中加入下列設定,就會成為「XBOX Series X|S 感知」。2017.06 及更新版本的 XBOX One 軟體開發套件
當遊戲為「XBOX Series X|S 感知」時,GetConsoleType() 可能會傳回三個不在 XDK 標頭所提供之 CONSOLE_TYPE 列舉中的值。您需要將下列定義加入遊戲的程式碼中。
2017.06 之前的 XBOX One 軟體開發套件
在 2017.06 XBOX One 軟體開發套件之前,GetConsoleType() 函式和 CONSOLE_TYPE 列舉並不存在。使用較舊 XBOX One 軟體開發套件的遊戲應該使用 GetProcAddress,在 kernelx.dll 中尋找 GetConsoleType() 函式。以下是範例。
GetProcAddress 只會在 XBOX One 主機上失敗,絕不會在 XBOX Series S 或 XBOX Series X 主機上失敗。
在某些特定的圖形案例中,遊戲必須知道其實際執行的主機,以及該主機上生效的相容性模式。在這類案例中,遊戲可以假設 XBOX Series S 主機以 XBOX One S 相容性模式執行,而 XBOX Series X 主機以 XBOX One X 相容性模式執行。
使用 Intelligent Delivery 提供主機專屬資產
Intelligent Delivery 可讓遊戲在 layout.xml 檔案中使用標記,將稱為「區塊」的資產群組指定給特定主機,如下列範例所示。Devices="Xbox-Durango" 的資產會安裝到 XBOX Series S 主機。標示為 Devices="Xbox-Scorpio" 的資產則會提供給 XBOX Series X 主機。
如果您希望遊戲在 XBOX Series S 上存取 Scorpio 專屬資產,可以將遊戲的配置更新為如下列範例所示。
Xbox-Lockhart 和 Xbox-Anaconda 主機需要 2018.07 XBOX One 軟體開發套件工具 QFE15 中的更新工具。
在 XBOX Series 主機上執行 XBOX One 軟體開發套件遊戲時的效能、功能和資源
XBOX One 軟體開發套件遊戲會以回溯相容性模式執行。因此,它們無法存取下列項目:- DirectX 12 Ultimate 功能:
- 可變速率著色 (VRS)
- DirectX 光線追蹤 (DXR) 或光線追蹤內建函式
- 串流取樣器回饋 (SFS)
- 所有 Navi2 專屬的最佳化 (例如下列項目):
- 延遲基本圖形批次分箱
- fp16
- wave32
- 999e5 可轉譯格式
- XBOX Series X 和 XBOX Series S 的最佳圖格模式
- DirectStorage 和記憶體解壓縮單元
TitleMemory 設定,將其設定為最多 9 GB。從 2020.10 復原版本開始,「XBOX Series X|S 感知」遊戲在 XBOX Series S 上會自動獲得 7.5 GB,在 XBOX Series X 上則為 9 GB。
先前曾說明在 XBOX Series S 和 XBOX Series X 主機上透過 AppxManifest 提高限制的方法,但現在已不再需要。2018.07 XBOX One 軟體開發套件工具 QFE15 已移除對 XBOX Series X|S 專屬 TitleMemory 設定的支援。如果 AppxManifest 中仍保留 XBOX Series X|S 專屬的記憶體設定,作業系統會忽略這些設定。不過,makepkg 工具會回報錯誤。您必須在封裝之前移除這些設定。
XBOX Series S 主機和 XBOX Series X 主機都沒有 ESRAM。在這些主機上執行時,遊戲務必採用 XBOX One X 程式碼路徑,避免執行那些 ESRAM 需要、但在新 XBOX 主機上屬多餘的複製作業。您可能會想要繼續對轉譯目標使用別名,特別是在 XBOX Series S 上。
已淘汰的函式
GetGpuHardwareConfigurationX 已淘汰,不應再使用。遊戲應改用 GetConsoleType。
測試
您或您的發行商負責測試遊戲更新。測試相容性時,我們強烈建議您使用 2020.10 (或更新版本) 復原版本的最新預覽版。 我們建議從零售版 NVMe SSD 執行,進行完整的遊戲流程測試。由於 CPU 和 GPU 效能大幅提升,可能會暴露出在 XBOX One 主機上未曾遇到的競爭情形。 NVMe SSD 傳遞資料的速度很可能快到讓 CPU 解壓縮成為從硬碟載入時的瓶頸。您應該將遊戲推送部署到零售版 NVMe SSD,並檢查 CPU 解壓縮是否造成尖峰和掉格。 檔案讀取速度可能會因遊戲是在內建 NVMe SSD 或外接 USB 3.0 隨身碟上執行而有相當大的差異。圖格模式
XBOX Series S 使用 XBOX One S 圖格模式;XBOX Series X 使用 XBOX One X 圖格模式。我們建議用於紋理的 1D 圖格模式在兩種 XBOX One 主機上都相同。因此,以 1D 圖格封裝的紋理在以回溯相容性模式於 XBOX Series 主機上執行時,不需要變更。工具
一般而言,您只需要更新的工具版 XBOX One 軟體開發套件即可封裝遊戲。我們已發行 2018.07 XBOX One 軟體開發套件 QFE14。它只包含更新的工具安裝程式,用來提供AppxManifest 設定中基本 XBOX Series 主機功能的工具。如先前所述,2018.07 QFE15 工具版本包含可啟用 XBOX Series 主機智慧安裝功能的更新。
請安裝最新的工具 QFE,以取得目前版本的 makepkg。它可以解譯「XBOX Series X|S 感知」資訊清單設定。
使用 PIX 進行 GPU 擷取
若要在 XBOX Series X 開發套件上使用 PIX 進行 GPU 擷取,您必須使用 XBOX One 軟體開發套件中的 PIX 來擷取。不過,必須在 Microsoft Game Development Kit (GDK) PIX 上進行播放。若要播放這些擷取,請使用八月 (2020.08) 或更新版本的 Microsoft Game Development Kit (GDK)。使用 PIX 進行 CPU 擷取
若要在 XBOX Series X 開發套件上使用 PIX 進行 CPU 擷取,您可以使用在取得工具版 XBOX One 軟體開發套件更新 (以支援封裝遊戲) 時所安裝的相同 1807 版 PIX。其他設定
無論遊戲是否為 XBOX Series X|S 感知,都可以將其設定為利用某些 XBOX Series X|S 功能。資訊清單中提供四個覆寫選項:AnisoBoost 與 VsyncMode
以回溯相容模式執行遊戲時,非等向性紋理篩選會被強制設為 16 倍。此外,畫面呈現會自動與垂直空白同步。以SyncInterval=0 呼叫 Present() 的遊戲,其行為會如同改為傳遞 SyncInterval=1。
對於試圖達到雙倍畫面播放速率的遊戲而言,關閉強制非等向性篩選可能特別重要。此外,遊戲可以指定 VsyncMode="double",將一般呈現速率加倍。下表摘要說明這些模式的效果。
†視顯示器支援和系統設定而定
double 模式可在不變更遊戲程式碼的情況下啟用更高的畫面播放速率 (不過正確的實作通常需要進行一些變更)。此外,double 模式可啟用 120 Hz 呈現的支援,但有一些限制。顯示器必須支援 120 Hz 的重新整理頻率,且必須在設定的「電視與顯示選項」區段中,將主機設定為輸出 120 Hz。如果不符合其中任一條件,遊戲的呈現速率仍會限制在 60 Hz。遊戲可以呼叫 DXGIXGetFrameStatistics() 並比較連續畫面 (特別是 GPUTimeVSync 和 VSyncCount 欄位),來推斷目前的呈現速率。
AutoHdr
雖然目錄中大部分現有遊戲都已在平台和服務層級啟用自動 HDR,但在 2020 年 11 月 1 日之後加入目錄的遊戲,預設會停用自動 HDR。AutoHdr="true" 會覆寫此設定,讓遊戲在主機設定也開啟的情況下,以開啟自動 HDR 的方式執行。
EnableQuickResume
與 AutoHdr 類似,目錄中許多現有的回溯相容遊戲都已在平台層級啟用 Quick Resume。對於預設未啟用此功能的遊戲,EnableQuickResume="true" 會覆寫此設定,在 XBOX Series 主機上啟用 Quick Resume。
Quick Resume 取決於遊戲是否能成功支援暫停與繼續,並可讓遊戲快速還原並繼續,讓玩家更容易回到遊戲中。