跳转到主要内容
本指南介绍如何使用 2025 年 10 月 GDK(版本 2510)实现 PlayFab Game Saves。无论你是初次使用 Game Saves,还是从以前的实现迁移,本文档都提供了基本要求和设置说明,并特别关注 Steam Deck 支持。

实现要求概述

使用 2025 年 10 月 GDK 实现 PlayFab Game Saves 时,你需要了解四个关键组件:
  1. 新的 GDK 文件夹布局:以平台为中心的 SDK 目录结构
  2. XGameRuntime 集成:具有特定部署要求的跨平台运行时
  3. PlayFab Unified SDK:适用于所有 PlayFab 组件的现代 SDK 体系结构
  4. 其他 Unified SDK 组件:更新后的 Party 和 Multiplayer 组件(如果使用)
对于 2025 年 10 月 GDK 及更高版本的所有 Game Saves 实现(包括 Steam Deck 支持),前三个组件是必需的。第四个组件仅在你的游戏使用 PlayFab Party 或 Multiplayer 功能时适用。
**初次使用 Game Saves?**请先阅读 Game Saves 概述和快速入门指南以了解基础知识,然后返回此处了解特定于 2025 年 10 月 GDK 的实现详细信息。

  1. GDK 文件夹布局和路径配置

当前 GDK 结构

2025 年 10 月 GDK 使用扁平的、以平台为中心的目录结构。了解此布局对于正确设置生成系统至关重要。 2025 年 10 月 GDK 布局:
**从早期 GDK 迁移?**以前的文件夹结构 ($(GDK)\GRDK\ and $(GDK)\GXDK\) 已被替换。请相应地更新生成脚本。

设置生成系统

必需的路径配置

将生成系统配置为使用正确的特定于平台的路径:

生成系统配置示例

CMake 设置:
MSBuild 配置:
如果你使用原生 x64 平台、CMake 或其他生成系统(而不是 Gaming.Desktop.x64 平台)为 Windows 生成,则需要自行定义 _GAMING_DESKTOP。Gaming.Desktop.x64 平台会自动定义它。如果未定义,SDK 标头将针对非 GDK 的 Windows 平台进行编译,PFInitialize 等函数不会被声明,从而导致 C3861: 'PFInitialize': identifier not found 等错误。有关详细信息,请参阅将 x64 平台与 Microsoft 游戏开发工具包 (GDK) 一起使用。

平台支持详细信息

  • XBOX:对所有最新的 XBOX 主机世代使用 xbox 文件夹
  • Windows:所有 Windows 平台(PC、Steam PC、Steam Deck-Proton)均使用 windows 文件夹
  • Steam Deck:尽管运行 SteamOS,但为了与 Proton 仿真兼容,使用 windows 文件夹

实现步骤

  1. 配置生成系统
    • 使用新的 GDK 结构设置包含路径和库路径
    • 如果面向多个平台,请添加平台检测逻辑
    • 在所有目标平台上测试编译
  2. 验证 Game Saves 集成
    • 确保所有必需的库都能正确链接
    • 在目标平台上测试功能
    • 验证 PlayFab 服务连接

  1. XGameRuntime 集成

了解 XGameRuntime

XGameRuntime 为所有平台上的 XBOX Live 服务和 Game Saves 功能提供基础。以下是你需要了解的内容:

核心组件

xgameruntime.lib(导入库)
  • 在编译时链接到游戏项目中
  • 自动查找并加载运行时 DLL
  • 处理服务发现(本地与系统)
xgameruntime.dll(运行时库)
  • 实现 XBOX Live 和 Game Saves 功能
  • 位置:{GDK}\windows\bin\xgameruntime.dll
  • 对 Steam 版本至关重要:必须随游戏一起部署

实现要求

  1. 基本集成

所有 Game Saves 实现都需要初始化 XGameRuntime:

  1. Steam 平台要求

对 Steam 版本必不可少: 为 Steam 生成时,你必须在游戏目录中包含 xgameruntime.dll。如果没有此 DLL,在 Steam Deck 上运行时:
  • XBOX Live 身份验证将失败
  • Game Saves 功能将不可用
部署结构:
Microsoft Store 版本会自动从系统加载 XGameRuntime,无需部署 DLL。

  1. 自动 DLL 部署

CMake 配置:
MSBuild 配置:

特定于平台的运行时行为

Steam Deck 支持特别要求部署本地 DLL。系统无法像其他平台那样回退到系统服务。此外,同步引擎在进程内运行,这意味着游戏必须确保在关闭之前同步关键的存档数据。

  1. PlayFab Unified SDK 集成

什么是 PlayFab Unified SDK?

PlayFab Unified SDK 是一个现代、统一的 SDK,它将所有 PlayFab 组件整合到单一体系结构下。Game Saves 现在是此统一系统的一部分,可提供: Game Saves 开发的优势:
  • 跨所有 PlayFab 组件的统一内存管理
  • 一致的异步操作模式
  • 集成的跟踪和诊断
  • 模块化组件加载(仅包含所需内容)
**初次使用 PlayFab?**Unified SDK 通过在所有 PlayFab 服务中提供单一、一致的 API 模式来简化集成。如果你是首次实现 Game Saves 或任何其他 PlayFab 服务,建议从这一现代体系结构开始。

必需的 SDK 组件

Game Saves 实现需要以下 Unified SDK 组件: 基本组件:
  • libHttpClient:跨平台 HTTP/WebSocket 通信
  • PlayFab Core:身份验证、实体管理和配置
  • PlayFab GameSave:Game Saves 特定功能
可选组件:
  • PlayFab Services:用于 LiveOps、帐户管理和其他进度系统的共享服务(如果使用其他 PlayFab 服务,则建议使用)

库和 DLL 要求

链接所需的库

部署所需的 DLL

生成系统配置

MSBuild 设置

将 Visual Studio 项目配置为链接 Unified SDK:
**从早期 GDK 迁移?**请将 $(GDK)\GRDK\...\include 等旧路径替换为上面所示的新结构。

CMake 设置

对于基于 CMake 的项目,请配置依赖项和部署:

代码实现

必需的标头

在项目中包含必要的 Unified SDK 标头:

初始化顺序

按照以下初始化顺序正确设置 Game Saves:
从 PlayFab Game Manager 中游戏的设置下获取你的 Title ID 和 API 终结点。

正确的清理顺序

关闭应用程序时,按相反顺序清理资源:
始终对 PlayFab Services 和 Core 使用异步清理模式,以确保正确释放资源。

  1. 其他 PlayFab Unified SDK 组件

Party 和 Multiplayer API 更改

虽然 Game Saves 功能并不直接需要,但 2025 年 10 月 GDK 还包含 PlayFab Party 和 PlayFab Multiplayer 组件的更新版本,作为 Unified SDK 的一部分。这些组件具有新的 API,能够更好地与统一身份验证系统集成。

与独立 SDK 相比的主要变化

身份验证集成:
  • 旧模式:以前,使用独立 Party/Multiplayer SDK 的游戏必须手动管理 PlayFab 登录结果中的 EntityID 和 EntityToken,并将其传递给 Party/Multiplayer API
  • Unified SDK 模式:Party 和 Multiplayer 现在直接接受 PFEntityHandle,无需手动管理令牌
可用的新 API:
  • Party:接受 PFEntityHandle 进行用户身份验证的新 API
  • Multiplayer:接受 PFEntityHandle 进行大厅和匹配操作的新 API
迁移的优势(如果使用 Party/Multiplayer):
  • 简化的身份验证流程,可自动刷新令牌
  • 所有 PlayFab 组件之间一致的错误处理模式
  • 统一的内存管理和异步操作模式
Party 和 Multiplayer 组件:如果你的游戏使用 PlayFab Party 或 Multiplayer,请考虑迁移到直接接受 PFEntityHandle 的新统一 API,以改进集成。但是,Game Saves 功能并不需要这样做;如果你仅使用 Game Saves,可以放心跳过第 4 节。

  1. Steam Deck 实现

PlayFab Game Saves 的 Steam Deck 支持需要在标准 PC 版本之外进行大量额外实现,包括自定义身份验证流程、全面的 UI 回调和审慎的同步策略。
Steam Deck 实现的复杂性:Steam Deck 集成涉及自定义身份验证流程、UI 回调实现以及关键的同步行为差异。由于实现要求复杂且篇幅较长,Steam Deck 实现在其单独的专用指南中介绍。

Steam Deck 的主要注意事项

关键同步行为差异:
  • Windows PC:Game Saves 在进程外运行,并且可以在游戏关闭后继续同步
  • Steam Deck:Game Saves 仅在进程内运行,并在游戏关闭时停止同步
实现要求:
  • 所有 Unified SDK DLL 都必须随 Steam 版本一起部署
  • 带有 UI 回调的自定义 XUser 身份验证流程
  • 用于非零售沙盒测试的注册表配置
  • 频繁的同步模式,以防止数据丢失
通用同步建议(对所有平台都有益): 虽然这些模式是 Steam Deck 所必需的,但强烈建议在所有平台上使用,尤其是经常突然关机的掌上设备:
  • 频繁同步存档数据(在每个关卡、检查点或重要进度之后)
  • 始终在显示”退出游戏”确认之前进行同步
  • 考虑在游戏过渡期间进行后台同步
  • 实现同步进度指示器,以确保在关闭之前完成同步

完整的 Steam Deck 实现

有关全面的 Steam Deck 实现详细信息,包括:
  • 详细的身份验证流程设置
  • 完整的 UI 回调实现
  • 分步初始化顺序
  • 故障排除指南
  • 示例代码参考
请参阅专用的 Steam Deck 实现指南
请先满足本文档中的要求,然后再转到 Steam Deck 指南了解特定于平台的实现详细信息。

  1. 实现清单

入门(新实现)

  • 设置 2025 年 10 月 GDK 并验证安装
  • 使用正确的 GDK 路径和库引用配置生成系统
  • 将 Unified SDK 库添加到项目链接配置中
  • 在源代码中包含必需的标头
  • 按照 Unified SDK 模式实现初始化顺序
  • 为 Steam 版本设置 DLL 部署(4 个必需 DLL,1 个可选)
  • 在目标平台上测试基本功能

迁移(现有实现)

  • 将生成系统路径从旧 GDK 结构更新为新布局
  • 将独立库替换为 Unified SDK 组件
  • 更新标头包含以使用新的 Unified SDK 标头
  • 修改初始化顺序以使用新的 Unified SDK API
  • 使用正确的异步清理模式更新清理顺序
  • 向 Steam 部署添加其他 DLL(1 个 DLL → 4-5 个 DLL)
  • 验证迁移后功能是否保持完好

生成系统配置

  • 包含路径:设置为 $(GDK)\windows\include(或平台等效路径)
  • 库路径:设置为 $(GDK)\windows\lib\x64(或平台等效路径)
  • 链接库:将所需的 .lib 文件添加到链接器依赖项(4 个必需,1 个可选)
  • DLL 部署:为 Steam 版本配置自动复制
  • 平台检测:如果为多个平台生成,请添加相应逻辑

代码实现任务

  • 标头:包含所有必需的 Unified SDK 标头
  • 初始化:实现正确的 5 步初始化顺序
  • 错误处理:为每个初始化步骤添加适当的错误检查
  • 清理:使用异步模式实现逆序清理
  • 配置:将硬编码值替换为你的 PlayFab Title ID 和终结点

测试要求

  • Windows PC:验证 Game Saves 功能
  • Steam Deck:使用 Steam Deck 实现指南完成实现
  • Microsoft Store:确认功能没有回归
  • 跨平台:测试所有平台(PC、Steam Deck、XBOX)之间的存档同步

  1. 资源和支持

示例代码参考

  • Windows Game Saves 示例:PlayFabGameSaveSample-Windows
    • GameSaveIntegration.cpp/.h - 核心 Game Saves 集成
    • SteamIntegration.cpp/.h - Steam Deck 特定实现(请参阅 Steam Deck 指南)
    • GameSaveIntegrationUI.cpp/.h - UI 回调实现(请参阅 Steam Deck 指南)
最后修改于 2026年11月5日