DLC 的开发工作流程
请参阅可下载内容 (DLC) 包的文档,以了解如何配置 DLC 内容的更多信息,包括如何通过 MicrosoftGame.config 与基础游戏建立关联。 安装 DLC 有三种方式:1. Loose DLC 部署
安装指向你的 loose DLC MicrosoftGame.config 和资产文件的目录: XBOX:2. 本地安装 DLC 包
安装由 makepkg 创建的 .xvc/.msixvc: XBOX:3. 从商店安装 DLC 包
使用登录到开发沙盒的测试账号,在 Store 应用中搜索或直接链接到 DLC 产品页面并进行安装。验证 DLC 安装
XBOX:get-appxpackage 查看特定游戏已安装的 DLC,请注意 Dependencies 部分:
购买并安装 DLC
请参阅商店基本操作一文,了解如何枚举目录并提供购买附加内容的功能。可通过检查[XStoreProduct](/reference/system/xstore/xstore_members).hasDigitalDownload 判断附加内容产品是否为 DLC。
如果 DLC 是从商店购买的,则 DLC 会被排队等待下载。
如果 DLC 是使用 XStoreShowPurchaseUiAsync 购买的,DLC 不会排队等待下载。相反,游戏应根据代码手动请求下载。也可以选择创建监控器以跟踪进度。
包标识符 (package identifier) 是一个用于标识特定包的不透明字符串。该标识符在每个包上唯一,但游戏每次启动实例都不同。因此,请勿在当前会话之外存储或复用该标识符。
根据不同场景,你可以使用以下方法获取包的包标识符:
- 调用 XStoreDownloadAndInstallPackagesAsync 下载并安装包后,可以通过调用 XStoreDownloadAndInstallPackagesResult 获取这些包的包标识符。
- 对于已下载并已安装的包,可以通过调用 XPackageEnumeratePackages,然后从每个枚举包传回给你的 XPackageEnumerationCallback 回调函数的 XPackageDetails 结构中检索包标识符。
- 可以通过调用 XPackageGetCurrentProcessPackageIdentifier 获取当前游戏的包标识符。
枚举 DLC 包
无论 DLC 以何种方式安装,游戏在使用之前都需要枚举已安装的 DLC。枚举已安装的 DLC 是获取包标识符的地方。检测 DLC 包已安装
获取 DLC 的许可证
在开发阶段,请参阅在开发中测试 DLC 授权中的注意事项。 基础游戏需要为 DLC 获取许可证,以决定是否应向用户提供其内容的访问权限。 游戏通常使用限制式授权 (Restrictive Licensing):在游戏获取包的许可证后,对该包的访问将锁定到该设备和产品的该实例上。游戏必须释放该许可证,另一个实例或设备才能获得访问权和许可证。请与你的 Microsoft 客户代表沟通,以确保你的游戏被配置为使用限制式授权(不在合作伙伴中心中配置)。有关更多信息,请参阅开放式与限制式授权。 由于游戏必须释放许可证,因此游戏负责跟踪它获取的所有 DLC 许可证,并在不再需要时或终止时释放它们。如果游戏未能释放许可证,则会在超时期后自动释放该许可证。确定 DLC 的许可证来源
使用 XStoreCanAcquireLicenseForPackageAsync 或 XStoreCanAcquireLicenseForStoreIdAsync(取决于标识符类型),可以判断 DLC 是否:- 可授权,以便在不可授权时呈现购买选项
- 通过光盘或数字许可证进行授权
挂载和卸载 DLC
一旦成功获取 DLC 许可证,就可以挂载并访问 DLC 内容。卸载 DLC
使用 XPackageUninstallPackage 卸载 DLC 包。必须先卸载挂载。Smart Delivery 与 DLC
XBOX Series X/S 游戏可以授权并挂载为 XBOX One 游戏创建的 DLC。通常,这种情况发生在 DLC 包不包含游戏使用的数据时。唯一的检查方法是查看 ERA DLC 的 package.appxmanifest 中的AllowedProduct ID(一个 GUID)是否与在合作伙伴中心分配给该产品的 Legacy XBOX Product ID 相匹配。
如果不匹配,则该游戏可能是从已停用的 XBOX Developer Portal (XDP) 迁移而来,并且只能与从商店下载的包一起使用,因为 XBOX Series X/S 版本被分配到 XBOX One 的 product ID。出于开发目的,请参阅故障排除部分中的说明。
