> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XR-052 用户状态、游戏存档位置、漫游和依赖项

> 游戏如何将保存的进度和奖励与正确的用户关联、处理用户更改，以及按 SDK 在 XBOX 主机和 PC 之间漫游游戏存档。

版本 2.0,11/01/2025

游戏必须将进度、保存的状态、首选项、成就和其他奖励与记录该进度、选择该首选项或获得该奖励的用户相关联。游戏通过正确处理用户更改通知来实现这一点。游戏必须避免为已不再登录的用户保存状态。游戏存档数据不得对共享内容或本地存储有任何依赖。

对于在各个平台、设备和/或主机世代之间使用相同 TitleID 的游戏,当用户登录到 XBOX 网络时,游戏存档进度必须按以下方式漫游:

* 在同一平台内(XBOX 主机)。
* 在同一平台的设备之间(例如 XBOX One 和 XBOX One S)。
* 在设备平台的不同世代之间(例如 XBOX One 和 XBOX Series X|S)。
* 在 Windows 平台的不同 PC 之间(例如两台不同的 PC 之间)。
* 如果游戏是 XPA,则在 Windows 平台的 PC 与 XBOX 主机平台之间(例如 Windows 和 XBOX Series X|S)。
* 对于非 XPA 游戏,不要求在 Windows 平台的 PC 与 XBOX 主机平台之间(例如 Windows 和 XBOX Series X|S)漫游,但建议支持漫游以改善玩家体验。
* 对于非 Microsoft 平台(例如 iOS、Android、Switch、PlayStation®),不要求游戏存档漫游,但建议支持漫游以改善玩家体验。

## 详细信息

共享内容是指加载游戏存档时可能不存在于漫游到的主机上的内容,例如游戏附加内容。该内容可能不可用,原因是当前登录的用户尚未下载或不拥有该内容。

用于保存玩家数据的 API 和服务因 SDK 而异:

| GDK/SDK | 是否需要漫游存档? | 支持的 API |
| - | - | - |
| GDK | 必需 | xgamesave.h 中的 `XGameSave` API |
| 使用 XDK 的 ERA | 必需 | `Windows.Xbox.Storage` 命名空间中的 ConnectedStorage API |
| Windows SDK - UWP | 必需 | `Windows.Gaming.XboxLive.Storage` 命名空间中的 GameSaveProvider API |

* 有关使用 GDK 保存游戏状态的信息,请阅读[游戏存档概述](https://docs.xbox.com/zh-CN/build/core-features/common/game-save/game-saves-overview.md)。
* 有关使用 GDK 管理游戏状态和保存数据的信息,请阅读 [XBOX 游戏生命周期](https://docs.xbox.com/zh-CN/build/console-features/console-workflows/xbox-game-life-cycle.md)。

此要求的一个关键方面涉及在游戏处于活动、挂起或终止状态时游戏主要用户发生更改的情况的处理。当游戏从上次激活该游戏的用户以外的其他用户的主页屏幕激活时,游戏的“主要用户”就会发生更改,并且主机上的其他用户可以在游戏生命周期中的任何时间点登录或注销。游戏必须为主要用户和主机上的其他用户提供适当的体验,并为每个用户保存游戏状态信息。由于用户可以在任何特定游戏的上下文之外登录(和注销)XBOX 网络,因此游戏必须能够稳健地处理用户更改的情况。例如,游戏应避免使用已不再登录的用户的令牌或标识符。

游戏不得导致用户数据意外丢失。

## 认证测试用例

下表显示了在使用 GDK 简化用户模型或者 GDK 高级用户模型、ERA 和 UWP 多用户应用程序时,哪些测试用例适用于你的游戏。有关使用简化用户模型与高级用户模型的更多详细信息,请参阅 [XR-112](https://docs.xbox.com/zh-CN/publishing/certification/xr/xr-112.md)。

| 测试用例 | 适用于 GDK 简化用户模型 | 适用于 GDK 高级用户模型、ERA 和 UWP MUA |
| - | - | - |
| 052-01 用户登录和注销 | 否 | 是 |
| 052-02 在挂起、睡眠和休眠期间更改用户 | 否 | 是 |
| 052-05 正确的用户关联 | 是 | 是 |
| 052-06 云存储:漫游 | 是 | 是 |

### 052-01 用户登录和注销

**配置**\
此测试用例仅适用于主机。

**测试步骤**

1. 确保个人资料 A 和个人资料 B 已将主机设置为主页。
2. 确保个人资料 A 具有存档数据,包括游戏进度和用户首选项。
3. 确保个人资料 B 没有任何存档数据。
4. 登录到个人资料 A 并启动游戏。通过访问游戏的所有区域,确保所有存档数据和首选项均已保留,这些区域包括但不限于:
   * 单人或多人游戏会话
   * 菜单
   * 视频或音频播放
5. 注销个人资料 A 并登录到个人资料 B。
6. 通过重新访问在步骤 4 中验证过的游戏所有区域,验证游戏是否正确更新了个人资料 B 的用户进度、保存的状态、首选项、成就或其他奖励。
7. 开始游戏以创建存档进度,并更改个人资料 B 的用户首选项。
8. 终止并重新启动游戏,然后验证步骤 7 中的存档数据是否准确反映。
9. 注销个人资料 B。
10. 从个人资料 A 中删除“所有位置”的存档数据,然后重复步骤 4-8。

**预期结果**\
游戏应正确处理主要用户的更改。

**通过示例**

1. 用户更改后,用户进度、保存的状态、首选项、成就或其他奖励与正确的用户相关联。

**失败示例**

1. 用户更改后,游戏将用户进度、保存的状态、首选项、成就或其他奖励与错误的用户相关联。
2. 游戏继续将存档数据授予第一个用户。
3. 新用户可以在之前的用户注销后更改该用户的存档数据、状态或个人资料。

### 052-02 在挂起、睡眠和休眠期间更改用户

在 XBOX 主机上,游戏将在以下情况下挂起:

* 在电源模式设置为“即时启动”的情况下关闭主机,使主机进入联网待机状态时。
* 游戏在十分钟内一直处于非焦点状态时。例如,启动“设置”等应用程序并使其保持焦点状态十分钟。

在 PC 上,在步骤 2 中使系统进入睡眠或休眠状态。

**测试步骤**

1. 登录到 XBOX 个人资料并启动游戏。
2. 在游戏中的各个位置:
   * 在 XBOX 主机上,通过启动“设置”应用并使其保持焦点状态十分钟来挂起游戏。
   * 在 PC 上,使系统进入睡眠或休眠状态。
3. 当游戏处于挂起、睡眠或休眠状态时,更改活动用户。在 XBOX 主机上,注销个人资料 A 并登录个人资料 B。在 PC 上,切换到其他 Windows 用户帐户。
4. 重新打开设备电源后,使用新用户启动游戏,并尝试从上一个用户的位置继续。
5. 对游戏的所有区域重复步骤 1-4。

**预期结果**\
从挂起、睡眠或休眠状态恢复游戏时,游戏必须验证之前参与的所有用户是否仍登录在游戏设备上。游戏应正确处理主要用户的更改。

**通过示例**

1. 恢复时,游戏自动将活动用户上下文切换到新用户。
2. 游戏自动从游戏中移除上一个用户,或者重新建立新用户并使用该新用户的状态进行游戏。
3. 用户更改后,用户进度、保存的状态、首选项、成就或其他奖励与正确的用户相关联。

**失败示例**

1. 用户更改后,游戏将用户进度、保存的状态、首选项、成就或其他奖励与错误的用户相关联。
2. 游戏继续将存档数据授予第一个用户。
3. 新用户可以在之前的用户注销后更改该用户的存档数据、状态或个人资料。
4. 选择新的个人资料后,游戏继续使用上一个用户的状态。

### 052-05 正确的用户关联

**测试步骤**

1. 登录到个人资料并启动游戏。
2. 进入游戏并保存游戏进度。
3. 终止游戏。
4. 注销步骤 1 中的个人资料并登录到新的个人资料。
5. 启动游戏并尝试访问已保存的进度。

**预期结果**\
为原始用户保存的进度不得对新的个人资料可见/可访问。

**通过示例**

1. 在步骤 5 中,仅显示与步骤 4 中新个人资料关联的已保存进度。

**失败示例**

1. 游戏允许新的个人资料加载其他个人资料的已保存进度。

### 052-06 云存储:漫游

**所需设备**

* XBOX One
* XBOX One S
* XBOX One X
* XBOX Series X Dev Kit(使用 XBOX Series X|S 零售主机模式)
* 2 台 PC

**测试步骤**

1. 在设备 A 上登录到 XBOX 个人资料并启动游戏。
2. 开始游戏并保存进度(如果可能,通过更改或添加新的设置配置来创建设置存档)。
3. 退出游戏。
4. 使用步骤 1 中的同一个人资料,登录到与步骤 1 所用设备属于同一平台/世代的第二台设备(例如 XBOX Series S 和 XBOX Series X、XBOX One 和 XBOX One S,以及第二台 PC)。
   * 启动步骤 1 中的同一游戏,并验证所有游戏存档以及任何设置和/或配置文件均可正确访问和加载,并且它们对共享内容没有任何依赖。
5. 对于在同一平台的不同世代之间(例如 XBOX One 和 XBOX Series X|S)使用相同 TitleID 的游戏,重复步骤 4。
6. 对于在 Windows 平台上使用相同 TitleID 的 PC 游戏,重复步骤 4。
7. 如果支持,对于在不同平台之间(例如 Windows 和 XBOX Series X|S)使用相同 TitleID 的游戏:
   * 在其他受支持的平台上启动步骤 1 中的同一游戏,并验证所有游戏存档以及任何设置和/或配置文件均可正确访问和加载,并且它们对共享内容没有任何依赖。

**预期结果**\
当用户登录到 XBOX 服务时,游戏存档进度必须与用户个人资料相关联,并且必须在同类设备/平台之间漫游。对于在同一平台的不同世代之间使用相同 TitleID 的游戏,游戏存档数据必须在这些平台之间漫游。对于在 Windows 平台上使用相同 TitleID 的 PC 游戏,游戏存档数据必须在不同 PC 之间漫游。游戏存档数据不得对共享内容有任何依赖。

**通过示例**

1. 游戏存档和关联的设置文件可以在同一主机平台/世代的第二台主机上成功下载(例如 XBOX Series S 和 XBOX Series X,或 XBOX One 和 XBOX One S)。
2. 游戏存档和关联的设置文件可以在 Windows 平台的第二台 PC 上成功下载。
3. 对于在同一平台的不同世代之间(例如 XBOX One 和 XBOX Series X|S)共享相同 TitleID 的主机游戏,存档和关联的设置文件可以在这些设备之间漫游。
4. 游戏存档数据对共享内容没有任何依赖。

**失败示例**

1. 游戏存档和关联的设置文件无法在同一平台/世代的第二台主机上成功下载(例如 XBOX Series S 和 XBOX Series X,或 XBOX One 和 XBOX One S)。
2. 游戏存档和关联的设置文件无法在 Windows 平台的第二台 PC 上成功下载。
3. 对于在同一平台的不同世代之间(例如 XBOX One 和 XBOX Series X|S)共享相同 TitleID 的主机游戏,存档和关联的设置文件无法在这些设备之间漫游。
4. 游戏在首次启动时无法识别云中的存档,并且在没有任何用户交互的情况下,这些存档随后在第二台设备上被覆盖。
5. 游戏存档数据对共享内容有依赖。


## Related topics

- [XR052 用户状态、存档位置、漫游和依赖项](https://docs.xbox.com/zh-CN/publishing/certification/fma/xr-052.md)
- [XBOX 游戏的 XBOX 要求](https://docs.xbox.com/zh-CN/publishing/certification/xbox-requirements.md)
- [经测试的 XBOX 要求](https://docs.xbox.com/zh-CN/publishing/certification/console-cert-tested-requirements.md)
- [游戏存档开发者指南](https://docs.xbox.com/zh-CN/build/core-features/common/game-save/game-saves-developer-guide.md)
- [最常失败的测试用例](https://docs.xbox.com/zh-CN/publishing/certification/xr-top-failing.md)
