概觀
本文說明如何提供內容更新、用來產生和測量更新的工具,以及如何測試關鍵更新案例以確保預期且最佳的行為。內容更新的運作方式
當您為遊戲套件提供更新時,遊戲服務一律會將需要傳輸的位元組數降到最低。此最佳化同時適用於遊戲裝置上的客戶以及上傳套件的開發人員。系統使用演算法來計算此差異 (差異),概略而言,這些演算法會嘗試將兩個套件之間 4-KiB 區段的相符程度最大化。 系統會將此差異編碼為.xsp (更新串流計劃) 檔案的一部分。透過使用這些檔案,系統可以確切知道要從網路下載哪些位元組,以及如何將它們套用至任何可能的現有套件版本。
若要在開發中模擬和測試準確的差異更新行為,請使用適當的 makepkg 選項來建立套件。此外,請使用適當的命令來安裝和更新套件。
根據先前的套件版本建立更新
使用makepkg pack 來建立套件。若要建立使用先前套件的套件,請使用 /priorpackage 參數:
[new package name]_update-[old version number].[guid].xsp 的 .xsp 檔案。例如,41336MicrosoftATG.ATGGameHubRequiredGame_200.0.0.0_neutral__dspnxghe87tn0_xs_update-100.0.0.0.5890f4a0-b449-4c5d-80ff-b78b19ed3439.xsp
此檔案是串流計劃,它編碼了從舊套件更新至新套件時需要變更的內容。測試更新一節示範如何使用此計劃。
檢查更新大小
執行上述命令時,它會產生兩個具有相同檔案名稱的其他檔案:一個 .html 檔案和一個 .json 檔案。 這兩個檔案都包含下列資訊:- 更新所下載之位元組的摘要
- 摘要說明更新針對特定標籤、語言或裝置類型所安裝之資料量的表格
- 可排序的檔案表格,顯示更新所變更的位元組數,以及此變更佔整體檔案大小的百分比
- 針對每個未 100% 更新的檔案,提供個別表格的連結,顯示更新在每個檔案中所變更的資料範圍
packageutil compare 也會產生這些相同的檔案,並提供套件差異的摘要輸出。此命令也會產生 .xsp 檔案。
差異上傳
上傳至 Partner Center 時,會自動利用差異計算演算法。系統會在一開始計算您 (該分支) 上次上傳的套件與正在上傳之套件之間的差異,以便只將變更的資料從上傳機器傳輸至擷取服務。測試更新
若要驗證系統 UI 中所見的更新大小,請執行下列步驟:xbapp install[old version.xvc]xbapp update[new version.xvc] (/plan=[.xsp file])
wdapp 命令。套件檔案的副檔名為 .msixvc,而安裝和更新進度可以在 XBOX 應用程式和 Microsoft Store 應用程式的下載佇列區段中查看。wdapp update 不支援 /plan 參數。如果已為目標版本建立 .xsp 檔案,它會使用該檔案。
公告更新
公告更新與其他更新方法略有不同。當您公告更新時,會讓遊戲可以使用該更新,進而產生特定的系統行為。 若要公告可用的更新,請將/m 或 /a 旗標套用至 xbapp 或 wdapp update。此動作會使更新在遊戲啟動之前不會套用。發生此情況時:
- 主機:會顯示系統對話方塊,指出需要更新。
- PC:對於開發組建,不會顯示系統提示,而且可以自由啟動組建,除非該組建是使用
wdapp install或啟動載入器安裝的。在此情況下,啟動遊戲會叫用 PC 啟動載入器,它會檢查更新並提示您安裝。
XStore API 做出反應,讓遊戲能夠偵測可用的更新。此行為與 DLC 套件最為相關。如需詳細資訊,請參閱檢查更新。
Store 套件更新
前述範例涉及使用本機套件進行安裝和更新。在某些情況下,您可能想要使用已上傳至 Partner Center 並從 Store CDN 下載的套件來測試更新。此流程會驗證兩件事:從 Store 更新時的效能,以及使用在擷取過程中產生的串流計劃。 可惜的是,由於簽署差異,您無法從本機套件更新至 Store 套件。在沒有其他協助的情況下,您可以將單一版本上傳至 Partner Center,然後在一或多部開發套件上從 Store 應用程式安裝該版本。接著,上傳新版本。新版本發行後,在已安裝舊版本的開發套件上,確認系統偵測到新版本,而且可以使用預期的差異大小進行更新。 若要重複此測試,請在更新之前將舊版本安裝複製到外部磁碟機,以便稍後將它複製回來覆蓋任何新版本。如果您沒有儲存此版本,可以要求提供 CDN URL,以便使用xbapp install 或 wdapp install 從中安裝舊版本。安裝舊版本之後,您就可以重複更新測試。
