有关原始 MSIXVC 格式相关的内容更新指导,请参见 内容更新最佳实践。
MSIXVC2 内容更新的工作方式
基于内容的分段
MSIXVC2 根据实际内容将文件数据拆分为可变大小的分段,而不是使用固定的块边界。每个分段通过其内容的哈希进行标识。 这种方式意味着:- 在区块之间移动文件不会触发重新下载。 无论文件属于哪个区块,其内容哈希都保持不变。
- 在区块内重排文件不会触发重新下载。 分段边界由内容决定,而不是位置。
- 重排区块不会触发重新下载。 区块布局是一个逻辑概念,不影响数据的物理分段。
- 插入或移除数据不会产生级联效应。 与固定块系统不同,小的插入不会移动所有后续块,也不会强制重新下载未变化的内容。
上传时的去重
每个分段在上传前都会被哈希。上传过程会查询 CDN,以确定哪些分段已经存在于以前的版本中。只有新的或变化过的分段会被上传并交付给玩家。这种去重是自动进行的 —— 无需开发者干预。按分段加密和压缩
每个分段都独立压缩和加密。这确保更新一个分段不会影响其他分段。相对于 MSIXVC 的变化
MSIXVC 内容更新中的以下对齐和布局约束在 MSIXVC2 中 不再适用:更新大小对比
以下数据对比了相同游戏构建下 MSIXVC 与 MSIXVC2 之间的内容更新大小。游戏没有做任何更改 —— 相同的资源、相同的构建,只是打包格式不同。
Game D 的改善较小,是因为该游戏已经针对 MSIXVC 内容更新(CUv3)进行了手动优化。大多数没有做过这种优化的游戏会看到更大的缩减。使用 MSIXVC2 后,这类优化工作不再是必要的。
包开销的缩减
每个 MSIXVC 包都包含一个固定的最小哈希树,其大小随游戏的总大小而扩展。此开销在每次更新时都会被完整下载。对于大型游戏而言,这一开销非常显著:
MSIXVC2 的开销还可以部分下载,这意味着玩家只会收到与其更新相关的那部分元数据。
基础游戏体积的改善
基于内容的分段和内置压缩也减小了基础游戏的下载体积:
包含未压缩内容或在区块间有大量重复数据的游戏,基础包缩减幅度最大。已经对所有内容进行压缩且没有重复数据的游戏(如 Game D)会看到较小但仍具有意义的改进。
评估 MSIXVC2 是否适合你的游戏
要衡量 MSIXVC2 为你自己的游戏带来的内容更新改进:- 取你游戏中两个先后连续的构建(例如,一个发布版本以及紧随其后的补丁)。
- 使用
makepkg对这两个构建都进行打包。
- 将结果更新大小与等效的 MSIXVC(v1)构建进行比较。
- 使用比较结果来规划你迁移到 MSIXVC2 的方案。
将 MSIXVC2 包上传到 Partner Center 中的单独分支(例如
msixvc2)。不要在同一分支上混合使用 MSIXVC2 和 MSIXVC 包 —— 将分支从 MSIXVC2 恢复到 MSIXVC 需要完整重新上传,并强制该分支上的玩家完整重新下载。有关详细信息,请参见 包分支最佳实践。