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

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

> 游戏必须将进度与正确的用户关联,避免为已注销用户保存状态,并在类似设备和平台世代之间漫游存档数据。

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

版本 2.0,2025/11/01

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

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

* 在同一平台内(XBOX 控制台)。
* 在同一平台上的设备之间(例如,XBOX One 和 XBOX One S)。
* 跨设备平台世代(例如,XBOX One 和 XBOX Series X|S)。
* 在 Windows 平台上跨 PC(例如,两个不同的 PC 之间)。
* 在 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 保存游戏状态的信息,请阅读"游戏存档概览"。
* 有关使用 GDK 管理游戏状态和保存数据的信息,请阅读"XBOX 游戏生命周期"。

此要求的一个关键方面涉及处理游戏处于活动、挂起或终止状态时游戏主要用户发生变化的情况。当游戏从上次激活它的用户以外的用户的主屏幕启动时,游戏的"主要用户"会发生变化,而控制台上的其他用户可以在游戏生命周期内随时登录或注销。游戏需要提供适合主要用户和控制台上其他用户的体验,并为每个用户保存游戏状态信息。由于用户可以在任何给定游戏的上下文之外登录到(或注销)XBOX 网络,因此游戏在用户变化的情况下必须是稳健的。例如,游戏应避免使用不再登录的用户的令牌或标识符。

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

## 认证测试用例

下表显示了如果使用 GDK 简化用户模型或 GDK 高级用户模型、ERA 和 UWP 多用户应用程序时,哪些测试用例适用于您的游戏。有关使用简化用户模型与高级用户模型的其他详细信息,请参阅 [XR-112](/publishing/certification/xr/xr-112)。

| 测试用例                  | 适用于 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 挂起期间的用户切换

在零售控制台上,游戏在以下情况下将被挂起:

* 当控制台通过将电源模式设置为即时启用并关闭而进入连接待机时。
* 当游戏失去焦点十分钟时。例如,启动应用程序(如"设置")并将其保持焦点十分钟。

出于此测试用例的目的,应在步骤 2 中验证两种方法。

**测试步骤**

1. 登录 XBOX 配置文件并启动游戏。
2. 在整个游戏的不同位置,挂起游戏。
3. 注销主要用户并作为其他用户登录。
4. 使用新用户启动游戏,并尝试从上一个用户的位置继续。
5. 对游戏的所有区域重复步骤 1-4。

**预期结果**

游戏应适当地处理主要用户的更改。

**通过示例**

1. 使用其他用户启动游戏时的游戏状态在上下文上适合游戏类型。
2. 用户切换后,用户进度、已保存的状态、偏好、成就或其他奖励与正确的用户关联。

**失败示例**

1. 用户切换后,游戏错误地将用户进度、已保存的状态、偏好、成就或其他奖励与用户关联。
2. 游戏继续将存档数据授予第一个用户。
3. 新用户在注销后可以更改先前用户的存档数据、状态或配置文件。

### 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 开发工具包(使用 XBOX Series X|S 零售控制台模式)
* 2 台 PC

**测试步骤**

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

**预期结果**

游戏存档进度必须与用户配置文件关联,并且当用户登录到 XBOX 服务时,必须在类似的设备/平台之间漫游。对于跨世代在同一平台上使用相同 TitleID 的游戏,游戏存档数据必须在这些平台之间漫游。对于在 Windows 平台上使用相同 TitleID 的 PC 游戏,游戏存档数据必须在不同的 PC 之间漫游。游戏存档数据不得对共享内容有任何依赖。

**通过示例**

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

**失败示例**

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


## Related topics

- [FMA XR-052：用户状态、存档位置与漫游](/zh-CN/publishing/certification/fma/xr-052.md)
- [XBOX 认证概览](/zh-CN/publishing/certification/overview.md)
- [PC 和移动游戏的 XBOX 要求测试用例](/zh-CN/publishing/certification/pc-policy-tests.md)
- [PC 和移动认证要求以及最常见的失败](/zh-CN/publishing/certification/pc-certification.md)
- [XR-133 本地存储写入限制](/zh-CN/publishing/certification/xr/xr-133.md)
