概述
本文介绍如何发布内容更新、用于生成和衡量更新的工具,以及如何测试关键的更新场景以确保预期且最优的行为。内容更新的工作方式
当你为游戏包提供更新时,游戏服务始终会最小化需要传输的字节数。这种优化对使用游戏设备的用户和上传包的开发者都适用。系统通过以下算法计算此差异(delta):从整体上看,尝试最大化两个包之间 4-KiB 分段的匹配数量。 系统将此 delta 编码为.xsp(更新流式计划,update streaming plan)文件的一部分。通过这些文件,系统可以精确地知道要从网络下载哪些字节,以及如何将它们应用到任何可能存在的现有包版本。
要在开发中模拟并测试准确的 delta 更新行为,请使用合适的 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 时会自动利用差异计算算法。你上次上传的包(针对该分支)与正在上传的包之间的差异会在开始时计算,以便只将变化过的数据从上传机器传输到摄取(ingestion)服务。测试更新
要验证系统 UI 中显示的更新大小,请执行以下步骤:xbapp install[old version.xvc]xbapp update[new version.xvc] (/plan=[.xsp file])
wdapp 命令代替。包文件的扩展名为 .msixvc,可以在 XBOX 应用和 Microsoft Store 应用的下载队列部分看到安装和更新进度。wdapp update 不支持 /plan 参数。它会使用为目标版本生成(如果已创建)的 .xsp 文件。
广告更新(Advertising updates)
广告更新与其他更新方式略有不同。当你广告一个更新时,你使更新对游戏 可用,这会导致特定的系统行为。 要广告一个可用的更新,请对xbapp 或 wdapp update 应用 /m 或 /a 标志。此操作导致更新在游戏启动之前不会被应用。发生此情况时:
- 主机:系统会显示一个对话框,提示需要更新。
- PC:对于开发版本,不会显示系统提示,并且可以自由启动构建,除非该构建是使用
wdapp install或 bootstrapper 安装的。在这种情况下,启动游戏会调用 PC bootstrapper,它会检查更新并提示你安装。
XStore API 作出响应,允许游戏检测可用的更新。此行为对 DLC 包最为相关。有关详细信息,请参见 Checking for updates。
Store 包更新
前面的示例涉及使用本地包进行安装和更新。在某些场景下,你可能希望使用已上传到 Partner Center 并从 Store CDN 下载的包来测试更新。这个过程验证两方面:从 Store 更新时的性能,以及利用作为摄取过程一部分而生成的流式计划。 遗憾的是,由于签名差异,你无法从本地包更新到 Store 包。你能做的是:先向 Partner Center 上传一个版本,然后在一台或多台开发套件上从 Store 应用中安装该版本。接着上传新版本。当新版本发布后,在已安装旧版本的开发套件上,验证是否检测到新版本并能够按预期的 delta 大小进行更新。 要重复此测试,在更新之前将旧版本的安装复制到外部驱动器,以便之后可以将其复制回覆盖任何新版本。如果你没有保存此版本,可以请求 CDN URL,以便使用xbapp install 或 wdapp install 从中安装较旧版本。安装较旧版本后,你可以重复更新测试。
