Skip to main content
一些游戏不再作为在某一特定时间发行的独立游戏,而是转向被视为服务的模式,即通过赛季或更新 来让游戏在多年之内保持鲜活。此模式称为游戏即服务(GaaS)。GDK 对该模式提供了良好的支持。 本文概述使用 GDK 支持将游戏作为服务发布时应考虑的最佳实践。

GDK 采用

每个 GDK 仅支持一年。虽然已有游戏可以继续使用已停止支持的 GDK 发布,但对于以服务方式 发布的游戏而言这可能会有问题。在 GDK 停止支持之后引入新功能的游戏可能会遇到早期 GDK 使用中未见过的 Bug 或集成问题。同样,游戏可能希望利用只出现在最新发布的 GDK 中的 功能。 一款游戏必须基于单一 GDK 构建。游戏不能混用来自不同 GDK 的组件。在主机上,游戏只包含 单一的 Game OS,而各种 GDK 库可能对该底层 OS 存在依赖。在 PC 上,只有一个版本的 gaming runtime 会被加载到游戏进程,从而创建与主机上类似的“单版本”环境。 我们建议 GaaS 游戏定期更新到仍受支持的较新发布的 GDK。

智能交付

随着新内容的引入,GaaS 游戏可能会随着时间的推移变得越来越大。玩家的存储空间可能有限。 这可能会影响他们安装游戏最新更新的能力。虽然玩家确实有能力管理自己的存储空间,但使用 智能交付 构建的游戏能为玩家提供更大的灵活性,让他们在使用存储空间方面有更多选择, 而不仅限于整体卸载整个游戏,并让玩家能够将更多游戏在设备上保留更长时间。 使用智能交付,游戏可以利用 feature 和 recipe,选择默认安装的内容,并让游戏能够管理它 希望保留哪些部分,以及可能希望移除哪些不再使用的部分。 GaaS 游戏可以选择将新内容放入单独的 feature 中以启用此类管理。其思路是新内容是一个 持久内容(durable)。以下是一种便于管理的建议:
  1. 在游戏的布局文件中,让每个 durable 对应一个 Feature
  2. Feature 声明一个或多个 Tags,用于指示如果玩家拥有该内容的许可证,布局文件中的哪些 区块应被安装。
  3. 确保布局文件中包含一个带有 Store ID 子节点的 Recipe。该 recipe 应 引用一个与相同 Store ID 对应的 feature。添加该 recipe 可确保如果玩家之前购买过 此内容,则会自动安装。
    [!NOTE] 可能还会有其他与 durable 无关的 feature 和 recipe。
遵循此建议后,游戏可以:
  1. 调用 XPackageEnumerateFeatures 枚举 feature。
  2. 使用 XPackageFeature 中返回的 Store ID 检查许可证、 查询更多详情或触发商店购买流程。
所有大于 40 GB 的游戏都应强烈考虑使用 智能交付。游戏可以考虑使用 durable 来支持 GaaS。

可下载内容

一些 GaaS 游戏可能不选择持续演进其基础包,而是选择使用 可下载内容(DLC) 来在多年内持续演进。游戏可以选择 将资源或可执行代码放入该 DLC。对于可执行代码有两条可能的路径:DLL 和 EXE。 如果游戏将 DLL 放入其 DLC,可以:
  1. 使用 XPackageMountWithUiAsync 挂载该 DLC。
  2. 使用 LoadLibraryEx
  3. 所有先前挂载的 DLC 保持挂载。
如果游戏将 EXE 放入其 DLC,可以:
  1. 使用 XPackageMountWithUiAsync 挂载该 DLC。
  2. 使用挂载 DLC 中的路径调用 XLaunchNewGames
  3. 现有游戏进程将被终止。
  4. XLaunchNewGames 的目标之外的所有 DLC 都将被卸载。
  5. G: 驱动器将继续指向基础包的根,而不是新启动的 EXE。
我们建议将可执行代码放入其 DLC 的游戏使用 LoadLibraryEx 访问该可执行代码。

参考 API 文档

另请参见

可下载内容(DLC) Feature 和 recipe 智能交付 XPackageMountWithUiAsync
最后修改于 2026年8月13日