本指南专门介绍使用 2025 年 10 月 GDK 在 Steam Deck 上实现 PlayFab 游戏存档的要求。在实现 Steam Deck 支持之前,请确保您已完成基本的 2025 年 10 月 GDK 实现要求。
概述
Steam Deck 游戏存档集成可以根据您的跨平台要求以不同的复杂度级别实现。您可以在简化的仅 Steam 方法与完整 XBOX 生态系统集成(具有更复杂的身份验证流程)之间进行选择。关键差异 - 同步行为:Windows 上的游戏存档可以完全在进程外运行,并在游戏生命周期之外继续同步。在 Steam Deck 上,游戏存档仅在进程内运行。这意味着游戏关闭时存档同步将停止,需要游戏采用频繁同步模式以避免丢失未同步的进度。所有平台的最佳实践:虽然这些同步模式对 Steam Deck 是必需的,但强烈建议在所有平台上采用,特别是掌上设备或任何可能发生突然关闭的情形(电池耗尽、系统崩溃、强制关闭事件)。
同步引擎行为差异
通用同步建议(对所有平台都有益):
- 频繁同步存档数据(例如,在每个关卡、检查点或重大进度之后)
- 始终在显示”退出游戏”确认之前同步
- 考虑在游戏过渡期间进行后台同步
- 实现同步进度指示器,以确保在关闭之前完成
- 对于电池耗尽或突然关闭很常见的掌上设备尤其重要
前提条件
在实现 Steam Deck 支持之前,请确保您已经:- 完成 2025 年 10 月 GDK 设置:遵循 2025 年 10 月 GDK 实现指南
- Steam API 集成:基本的 Steam API 初始化和 Steam Deck 检测
- 选择集成方式:在 XBOX 生态系统集成或自定义身份集成之间做出决定(见下文)
- 所有必需的 DLL:Unified SDK DLL 必须与您的 Steam 构建一起部署
实现方式
Steam Deck 提供两种实现方式,具有不同的复杂度级别和跨平台能力。PlayFab 游戏存档对于超出 Steam 生态系统的跨平台存档同步很有价值——您需要 XBOX Live 集成(方式 1)或您自己的自定义玩家身份系统(方式 2)。方式 1:XBOX 生态系统集成(推荐)
优势:- 完整的跨平台同步:存档数据在 Steam Deck、XBOX 主机、Microsoft Store PC 和其他支持 XBOX 的平台之间同步
- XBOX Live 集成:玩家使用其 XBOX 玩家代号并可以访问 XBOX 社交功能
- 统一的玩家身份:跨所有平台的相同玩家个人资料
- 成熟的身份验证:利用 XBOX Live 成熟的身份验证基础架构
- XBOX Game Studios 兼容性:为 XBOX 第一方和合作伙伴工作室提供无缝集成
- 复杂的身份验证:需要自定义 XUser 事件处理程序和 UI 回调
- 开发沙盒设置:非零售测试环境所需
- 管理员权限:沙盒设置期间修改注册表所需
- 额外的 UI 实现:QR 码身份验证和玩家代号选择对话框
方式 2:自定义身份实现(备选方案)
优势:- 可能降低登录复杂性:无需 XBOX 用户身份验证
- 无需注册表配置:无需沙盒设置
- 无需 XUser API:消除复杂的事件处理程序
- 自定义身份灵活性:实现您自己的跨平台玩家身份系统
- 手动玩家管理:必须实现您自己的跨平台玩家身份系统
- 有限的生态系统集成:无法访问 XBOX Live 社交功能或现有的 XBOX 玩家群
- 平台桥接:需要自定义解决方案来连接不同平台上的玩家
- 额外的身份基础架构:需要构建或集成第三方身份系统
LoginWithOpenIdConnect API 调用支持 OpenID Connect 身份验证,可与支持 OpenID Connect 标准的自定义身份提供程序集成。
通用设置(两种方式)
无论选择哪种实现方式,以下设置步骤都是必需的。1. DLL 部署要求
Steam Deck 要求所有 Unified SDK DLL 与您的游戏一起部署: 必需的 DLL:libHttpClient.dll- HTTP 操作PlayFabCore.dll- 身份验证和核心服务PlayFabGameSave.dll- 游戏存档功能xgameruntime.dll- 核心 SDK 功能和 XBOX 登录
PlayFabServices.dll- 其他 PlayFab 服务(推荐)
2. Steam 集成前提条件
Steam API 集成
平台检测
在初始化早期实现平台检测:3. UI 回调实现
Steam Deck UI 要求:无论选择哪种实现方式,Steam Deck 上都必需实现所有 PlayFab 游戏存档 UI 回调。这是因为 Steam Deck 没有可用于游戏存档操作的内置 UI,所以您的应用必须提供所有 UI 对话框。
游戏存档 UI 回调(两种方式都需要)
自定义身份和 XBOX 生态系统实现都需要相同的 PlayFab 游戏存档 UI 回调:- 进度对话框:在存档操作期间显示同步进度
- 错误处理:显示同步失败消息和重试选项
- 冲突解决:处理设备之间的存档冲突
- 设备争用:处理多设备访问场景
- 存储管理:通知用户存储配额问题
方式 1:XBOX 生态系统集成 - 完整实现
此方式在 Steam Deck、XBOX 主机、Microsoft Store PC 和其他支持 XBOX 的平台之间提供完整的跨平台同步。如果您的游戏面向 XBOX 平台或需要 XBOX Live 集成,请选择此方式。概述
前提条件:- 完成通用设置(上文第 1-3 节)
- 用于测试的开发沙盒访问权限
- 用于注册表配置的管理员权限(仅限开发/测试)
1. 注册表配置
Steam Deck 需要 XBOX Live 沙盒配置以进行非零售沙盒测试:- 键:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\XboxLive\Sandbox - 值:开发沙盒 ID(例如,“XDKS.1”)
- 时机:必须在 XBOX Live 服务初始化之前设置
- 权限:需要管理员访问权限
- 用途:仅在非零售沙盒(开发/测试环境)中测试时需要
2. XUser 平台事件处理程序
Steam Deck 需要两组关键的事件处理程序来进行 XBOX 身份验证:A. 远程连接事件处理程序
处理远程身份验证流程(QR 码/URL 显示):B. SPOP(登录提示)事件处理程序
处理当用户帐户已在另一台设备上登录时使用的 SPOP 登录提示:XUserPlatformSpopPromptComplete(operation, result)。
3. 身份验证 UI 实现
除了游戏存档 UI 回调(第 3 节)外,XBOX 生态系统集成还需要:- 远程连接对话框:显示 QR 码和 URL,供用户在另一台设备上进行身份验证
- SPOP 提示对话框:允许用户选择/确认其 XBOX 玩家代号
4. 初始化顺序
对 XBOX 生态系统集成遵循以下初始化顺序:5. 登出实现
Steam Deck 需要特殊的登出处理来清除存储的 XBOX 凭据:6. 测试清单
使用此清单验证您的 XBOX 生态系统实现:- 身份验证流程:测试远程连接(QR 码/URL)身份验证
- UI 回调:验证所有游戏存档 UI 对话框正确显示
- SPOP 提示:测试玩家代号选择和确认
- 凭据持久性:测试跨应用重启的登录持久性
- 登出:验证登出时正确清理凭据
- 同步行为:测试频繁同步模式和关闭前同步
- 数据丢失防护:验证强制关闭场景期间进度丢失最少
- 跨平台同步:测试 Steam Deck、XBOX 主机和 Microsoft Store PC 之间的存档同步
- 注册表配置:验证沙盒配置在开发环境中有效
- XUser 事件处理程序:确认远程连接和 SPOP 处理程序正常工作
方式 2:自定义身份实现 - 完整实现
此方式允许您使用自己的玩家身份系统,而无需 XBOX Live 集成。如果您的游戏以 Steam 为中心,或者您有现有的自定义身份系统,请选择此方式。概述
前提条件:- 完成通用设置(上文第 1-3 节)
- 用于生产的自定义玩家身份系统
- 无需 XBOX 身份验证
- 无需注册表配置
- 无需管理员权限
- 更简单的 UI(无 QR 码或玩家代号选择)
- 必须实现自己的跨平台玩家身份
- 无 XBOX Live 社交功能
- 需要自定义平台桥接解决方案
1. 自定义身份验证
实现您自己的身份系统以进行跨平台玩家身份验证:2. 初始化顺序
3. 登出实现
4. 测试清单
使用此清单验证您的自定义身份实现:- 自定义身份系统:测试您的自定义玩家身份验证和身份系统
- PlayFab 身份验证:使用 LoginWithOpenIdConnect(如果使用 OpenID Connect)或自定义身份验证方法测试 PlayFab 登录
- 跨平台游戏存档同步:测试所有目标平台上的存档同步
- UI 回调:验证所有游戏存档 UI 对话框正确显示
- 冲突解决:测试不同平台设备之间的存档冲突
- 同步行为:测试频繁同步模式和关闭前同步
- 数据丢失防护:验证强制关闭场景期间进度丢失最少
- 自定义身份验证:测试您的身份系统的登录/登出流程
- 平台覆盖:在您游戏面向的所有平台上进行测试(不仅仅是 Steam 设备)
- 网络场景:测试离线/在线转换
- 性能:验证同步操作不影响游戏性能
示例代码参考
有关两种方式的完整实现示例,请参阅示例项目:- 位置:PlayFabGameSaveSample-Windows
- 关键文件:
SteamIntegration.cpp/.h- Steam Deck 检测、注册表设置、身份验证处理程序GameSaveIntegrationUI.cpp/.h- 两种方式的 UI 回调实现
