> ## 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.

# XBOX 认证概览

> XBOX 认证的工作方式:提交类型、按阶段的时间线、SLA、沙盒使用、XR 测试用例以及如何解读 FMA 报告。

**版本 16.3 — 2026/07/01**

XBOX 要求 (XR) 由所有 XBOX 控制台游戏的开发者和发行商必须遵守的政策、技术要求以及与产品组件相关的要求组成。XR 确保为 XBOX 控制台创建的产品不仅稳定可靠,还提供一致、安全和令人愉快的用户体验。

除非另有说明,所有 XBOX 要求都适用于 XBOX One 和 XBOX Series X|S 控制台世代。

* 此页面定义了在 XBOX 认证中测试的 XBOX 控制台游戏的 XR。有关所有 XR(包括未在 XBOX 认证中测试的 XR)的列表,请转到 [XBOX 要求](/publishing/certification/xbox-requirements)。
* 有关此版本中更改的摘要,请参阅此页面底部的[此版本中的更改](#changes-in-this-release)。
* 要查看 XR 和测试用例的历史更改日志,请参阅 [XBOX 要求和测试用例的更改历史](/publishing/certification/xr-change-history)。
* 查看控制台上的[最常见的十个失败测试用例](/publishing/certification/xr-top-failing)。

<Warning>
  认证团队现在仅在 CERT 沙盒中的零售控制台上对所有最终提交进行测试。以前,某些测试用例依赖于在 XBOX 开发工具包上执行的 GDK 命令。这些用例已修改为仅使用零售控制台上可用的步骤。可选提交仍在 CERT.DEBUG 沙盒中的开发工具包上进行测试。
</Warning>

### 测试挂起和恢复

有关构成游戏生命周期的概念和事件的详细介绍,请参阅 XBOX 游戏生命周期。它演示了如何在游戏中实现游戏状态和状态变化事件。

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

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

挂起游戏的测试用例现在指示应使用哪种方法。

## 基本要求

此类别中的要求适用于代码编写标准、游戏行为和游戏提交的一般规则。

### [XR-001:游戏稳定性](/publishing/certification/xr/xr-001) \*

游戏必须符合 Microsoft Store 关于游戏稳定性的政策。以下政策适用于此要求:

**10.4.2** — 产品必须迅速启动、持续运行并保持对用户输入的响应。产品必须优雅地关闭,不得意外关闭。产品必须处理由任何托管或本机系统 API 引发的异常,并在处理异常后保持对用户输入的响应。

#### 001-01 游戏稳定性

**测试步骤**

1. 登录 XBOX 配置文件。
2. 启动游戏。
3. 浏览游戏的所有区域,包括但不限于游戏过程、菜单和功能,以及可下载内容 (DLC)。
4. 使用没有先前存档数据的新 XBOX 配置文件,在与 XBOX 服务断开连接时重复步骤 1-3。

**预期结果** — 游戏不稳定指的是无法识别用户输入的任何状态,或由于软件崩溃而阻止用户推进且没有任何用户通知的情况。

**通过示例**

1. 游戏稳定。
2. 游戏不会导致用户数据的意外丢失。

**失败示例**

1. 游戏崩溃、变得无响应或导致控制台重启。
2. 游戏导致用户数据丢失。
3. 出现持续超过二十秒的非交互式暂停或静态屏幕。
4. 游戏包含超过两分钟且没有进度指示的加载屏幕。
5. 游戏包含超过三分钟带有进度指示的加载屏幕。

#### 001-02 挂起后游戏稳定性

<Info>
  在零售控制台上,游戏在控制台进入连接待机(使用即时启用关闭)或游戏失去焦点十分钟时被挂起。对于此测试用例,应在步骤 3 中验证两种方法。
</Info>

**测试步骤**

1. 在控制台电源模式设置为即时启用的情况下登录 XBOX 配置文件。
2. 启动游戏并进入游戏过程。
3. 在游戏过程中的不同时刻,挂起游戏。
4. 恢复游戏并验证用户可以从最后的游戏位置继续。
5. 继续到下一个存档点,保存游戏,并返回主菜单。
6. 重新加载步骤 5 中的存档,并确保所有进度仍然存在。
7. 在整个游戏过程中重复步骤 3-6。

**预期结果** — 游戏不稳定指的是无法识别用户输入的任何状态,或由于软件崩溃而阻止用户推进且没有任何用户通知的情况。此外,用户在返回游戏后不得丢失任何存档进度。

**通过示例**

1. 游戏稳定,不会导致用户数据的意外丢失。
2. 游戏从挂起状态恢复,用户可以立即从最后的游戏位置继续。
3. 游戏从挂起状态恢复,系统提示用户是否要从最后的游戏位置恢复。
4. 游戏从挂起状态恢复并返回到之前的菜单或初始交互状态,但用户可以加载他们最后的存档位置。
5. 在需要在线服务连接的在线游戏过程中挂起后,游戏恢复并将用户返回到之前的菜单或初始交互状态。
6. 由于连接存储不同步,游戏被系统终止。

**失败示例**

1. 游戏由于挂起失败而被终止。
2. 游戏从挂起状态恢复并意外终止。
3. 游戏从挂起状态恢复,但用户无法加载他们最后的存档位置。
4. 用户无法重新建立与合作伙伴托管服务的连接。

### [XR-003:提交游戏质量](/publishing/certification/xr/xr-003) \*

XBOX 游戏必须符合 XBOX 质量标准,并且完全可用和可测试。

#### 功能完整且可测试

游戏在提交认证时必须完全可用和可测试。这包括所有客户端代码、提交产物和可下载内容。游戏必须使用当前版本的提交验证器进行干净打包,无失败。提交验证器日志必须与提交一起包含。

#### XBOX 质量标准

XBOX 游戏必须在所有游戏模式和场景下正确运行,以满足玩家期望。

##### 游戏完整性

游戏必须无严重问题,例如崩溃、冻结、无法游玩的帧率、导致主要进度阻碍的错误或图形损坏。游戏设置、选项和控件必须正确应用,并在适当的情况下尊重默认设置。导航和内容可用性应无缝,没有死胡同或无法访问的菜单。多人游戏功能必须稳定且可用,无论玩家数量如何。

##### 存档游戏兼容性

游戏存档和玩家进度必须在内容更新后继续可用。此外,在使用基本光盘版本加载更新后的存档时不得发生永久性数据丢失。

下表显示了哪些 XR-003 测试用例适用于您的游戏在控制台或 PC 上。

| 测试用例             | 适用于控制台 | 适用于 PC |
| ---------------- | :----: | :----: |
| 003-02 游戏完整性     |    是   |    是   |
| 003-16 存档游戏兼容性   |    是   |    是   |
| 003-17 耳机状态更改    |    是   |    否   |
| 003-18 挂起后耳机状态更改 |    是   |    否   |

#### 003-02 游戏完整性

**配置** — 请参阅本页底部的[控制台测试台指南](#console-test-bench-layout)以设置您的控制台。

**测试步骤**

1. 登录 XBOX 配置文件并启动游戏。
2. 浏览所有菜单、子菜单,查看所有功能,并完成所有游戏模式。
   * 交互并完成所有菜单 UI、额外内容、单人和多人游戏模式,包括所有支持语言中的任何附加功能。
   * 测试离线、在线,以及分屏(如适用)。
   * 使用最大玩家数量测试多人游戏模式。
   * 将统计数据发布到所有支持的排行榜。

**预期结果** — 所有游戏都必须为用户提供可靠、公平、一致且完整的 XBOX 娱乐体验。

**通过示例**

1. 游戏可以在所有游戏模式下完成。
2. 在游戏过程中设置的选项在终止和重新启动游戏后保存。
3. 游戏的所有区域都可以按预期导航。
4. 本地化文本在支持的所有区域中正确显示。
5. 用户能够按预期发布到排行榜。

**失败示例**

1. 游戏在关卡结束时崩溃,或用户在游戏的任何区域被阻止推进。
2. 游戏的区域无法按预期导航。
3. 如果用户使用暂停菜单反转水平或垂直摄像机控制,游戏内的摄像机控制不会改变。
4. 用户无法按预期发布到排行榜。
5. 如果用户已完成不同的模式,则无法完成特定的游戏模式。
6. 在游戏过程中设置的选项在终止和重新启动游戏后重置为默认值。
7. 由于帧率问题,游戏无法游玩。

#### 003-16 存档游戏兼容性

**测试步骤**

1. 登录 XBOX 配置文件,并在不连接到 XBOX 的情况下启动游戏。
2. 玩游戏并保存您的进度和设置。
3. 重启游戏并验证您可以从步骤 2 加载和恢复已保存的进度。
4. 连接到 XBOX 并安装基础游戏的内容更新。
5. 验证更新后您仍然可以加载并继续已保存的进度。
6. 重启游戏,开始新游戏,再次保存您的进度。
7. 退出并卸载游戏。
8. 在没有连接到 XBOX 网络的情况下,重新安装并启动基础游戏。
9. 验证以下情况之一:
   * 您可以加载并继续已保存的进度
   * 游戏显示消息,指示存档需要安装内容更新
   * 游戏不显示步骤 6 中所做的存档
10. 重启游戏并安装内容更新。
11. 验证更新后您仍然可以加载并继续已保存的进度。

**预期结果** — 游戏的内容更新版本必须能够成功加载使用非内容更新版本的游戏创建的存档。

**通过示例**

1. 内容更新版本的游戏可以成功加载所有存档。
2. 启动基础版本以加载更新的存档时,用户被通知缺少内容,并被告知存档文件无法加载的原因,或者在基础版本中不可见在内容更新版本中所做的存档。

**失败示例**

1. 内容更新版本的游戏无法加载使用先前版本的游戏创建的游戏存档。
2. 基础版本的游戏在加载使用内容更新版本的游戏所做的存档时崩溃。

#### 003-17 耳机状态更改

**测试步骤**

1. 在 XBOX 音频设置下,将 Windows Sonic for Headphones 作为您的耳机格式启用。
2. 将一对耳机连接到控制器,或将一对耳机无线连接到 XBOX。
3. 启动游戏并进入游戏过程。
4. 验证通过电视和耳机听到音频。
5. 拔下耳机,验证短时间后音频返回。
6. 重新插入耳机,验证通过电视和耳机听到音频。
7. 在整个游戏过程中重复步骤 5-6。

**预期结果** — 音频继续无问题地被听到。

**通过示例**

1. 每次移除耳机时,音频都无问题返回。
2. 连接耳机时,音频无问题返回。

**失败示例**

1. 耳机状态更改后,不再听到音频。
2. 耳机状态更改后,音频失真或损坏。

#### 003-18 挂起后耳机状态更改

<Info>
  在零售控制台上,游戏在控制台进入连接待机(使用即时启用关闭)或游戏失去焦点十分钟时被挂起。对于此测试用例,应在步骤 6 中验证两种方法。
</Info>

**测试步骤**

1. 在控制台电源模式设置为即时启用的情况下登录 XBOX 配置文件。
2. 在 XBOX 音频设置下,将 Windows Sonic for Headphones 作为您的耳机格式启用。
3. 将一对耳机连接到控制器,或将一对耳机无线连接到 XBOX。
4. 启动游戏并进入游戏过程。
5. 验证通过电视和耳机听到音频。
6. 在整个游戏过程中的不同时刻,挂起游戏。
7. 恢复游戏并验证通过电视听到音频。
8. 重新连接耳机,验证通过电视和耳机听到音频。
9. 在整个游戏过程中重复步骤 6-8。

**预期结果** — 音频继续无问题地被听到。

**通过示例**

1. 每次移除耳机时,音频都无问题返回。
2. 连接耳机时,音频无问题返回。

**失败示例**

1. 耳机状态更改后,不再听到音频。
2. 耳机状态更改后,音频失真或损坏。

### [XR-130:XBOX 控制台系列和世代](/publishing/certification/xr/xr-130) \*

所有针对某一控制台世代的游戏必须支持该世代的整个设备系列。

未使用 Smart Delivery 的 XBOX One 游戏默认在 XBOX Series X|S 兼容模式下运行。使用 Smart Delivery 的游戏在 XBOX Series X|S 上以兼容模式运行时必须正常工作。

为了在控制台世代之间保持一致性,游戏必须:

* 支持通过游戏手柄输入进行导航。游戏可能在事先获得批准的情况下要求使用其他外围设备。
* 确保已保存的游戏在世代内的控制台类型之间可用。
* 确保在线玩家不基于世代内的控制台类型分段。
* 确保在世代内的控制台类型之间提供相同的游戏模式。
* 在世代之间(XBOX One 和 XBOX Series X|S),共享相同 TitleID 的游戏必须:
  * 支持两代都可用内容的游戏存档漫游 ([XR-052](/publishing/certification/xr/xr-052))。
  * 虽然不是必需的,但建议在支持多人游戏(合作或竞争)体验的场景中提供至少一个共享匹配队列,并允许共享内容体验的跨世代邀请/加入。

#### 130-01 控制器输入

**所需工具**

* 1 台 XBOX One
* 1 台 XBOX One S
* 1 台 XBOX One X
* 1 台 XBOX Series X 开发工具包(使用 XBOX Series X|S 零售控制台模式)

**测试步骤**

1. 登录 XBOX 配置文件。
2. 启动游戏。
3. 浏览游戏的所有区域,并验证游戏在每个区域都接受通过控制器输入的导航。
4. 在所有世代的设备上重复所有上述步骤。

**预期结果** — 游戏支持在游戏的所有区域中通过控制器进行导航,并且不具有其他输入设备(如键盘/鼠标)的强制场景。游戏可能在事先获得批准的情况下要求使用其他外围设备。

**通过示例**

1. 游戏在游戏的所有区域接受来自控制器的输入。

**失败示例**

1. 在游戏的某些区域,游戏仅接受来自键盘和/或鼠标的输入。

#### 130-02 存档游戏漫游

**所需工具**

* 1 台 XBOX One
* 1 台 XBOX One S
* 1 台 XBOX One X
* 1 台 XBOX Series X 开发工具包(使用 XBOX Series X|S 零售控制台模式)

**测试步骤**

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

**预期结果** — 存档游戏必须在同一世代内完整工作,并且对于跨世代共享相同 TitleID 的游戏(XBOX One 和 XBOX Series X),两代都可用内容的存档游戏必须完整工作。

**通过示例**

1. 在 XBOX One S 上创建的游戏存档在 XBOX One 和 XBOX One X 上工作,反之亦然,跨整个 XBOX One 设备系列。
2. 对于跨世代共享相同 TitleID 的游戏(XBOX One 和 XBOX Series X),游戏存档必须为两代都可用的内容工作。

**失败示例**

1. 在某一世代(XBOX One 或 XBOX Series X)中创建的游戏存档未在该世代的所有设备类型中完全加载。
2. 对于跨世代共享相同 TitleID 的游戏(XBOX One 和 XBOX Series X),两代都可用内容的游戏存档未完全加载。

#### 130-03 在线分段

**所需工具**

* 1 台 XBOX One
* 1 台 XBOX One S
* 1 台 XBOX One X
* 1 台 XBOX Series X 开发工具包(使用 XBOX Series X|S 零售控制台模式)

**测试步骤**

1. 在同一世代的所有设备类型上登录 XBOX 配置文件并启动游戏。
2. 完成一个包含所有设备的 XBOX 网络多人游戏会话。
3. 在游戏支持的所有 XBOX 网络多人游戏模式中重复步骤 2。

**预期结果** — XBOX 网络玩家必须能够加入其他 XBOX 网络玩家,而不管来自同一世代的哪种控制台类型。

**通过示例**

1. 来自同一世代设备的所有控制台都能够在多人游戏中彼此对战。

**失败示例**

1. XBOX 网络玩家基于其 XBOX One 控制台类型在同一世代内被分段。

#### 130-04 精选游戏模式

**所需工具**

* 1 台 XBOX One
* 1 台 XBOX One S
* 1 台 XBOX One X
* 1 台 XBOX Series X 开发工具包(使用 XBOX Series X|S 零售控制台模式)

**测试步骤**

1. 登录 XBOX 配置文件并启动游戏。
2. 定位并访问所有精选游戏模式。
3. 在同一世代的设备上重复所有上述步骤,并确保所有游戏模式在每台设备上都相同。

**预期结果** — 必须在同一世代的设备上提供相同的游戏模式。

**通过示例**

1. 来自同一世代设备的所有控制台都提供相同的相同游戏模式集。

**失败示例**

1. 同一世代设备中的一个或多个控制台根据其同代控制台类型提供了不同的游戏模式。

#### 130-05 兼容模式

**配置** — 一个 XBOX Series X 开发工具包(使用 XBOX Series X|S 零售控制台模式)

<Info>
  在零售控制台上,游戏在控制台进入连接待机(使用即时启用关闭)或游戏失去焦点十分钟时被挂起。对于此测试用例,应在步骤 6 验证两种方法。
</Info>

**测试步骤**

1. 对于 XBOX One 游戏,在控制台电源模式设置为即时启用的情况下登录 XBOX 配置文件。
2. 通关游戏,并确保游戏在兼容模式下按预期执行。
3. 查找任何区域,以确定游戏性能、视觉效果或音频在 XBOX Series X 到 XBOX One X 之间明显较差的区域。
   * 检查所有不同分辨率输出的性能问题。
   * 使用兼容 HDR 的屏幕检查 Auto HDR。
4. 重复步骤 3,但这次查找 XBOX Series S 到 XBOX One S 之间游戏性能、视觉效果或音频明显较差的任何区域。
5. 确保 XBOX Series X|S 设备之间以及 XBOX One 和 XBOX Series X|S 设备之间(在支持的情况下)的多人游戏保真度。
   * 检查匹配。
   * 双向检查邀请。
   * 双向检查通过 shell 加入。
6. 确保挂起和恢复按预期工作。
7. 确保所有游戏存档在控制台重启后保留。
8. 确保漫游存档在 XBOX One(系列的任何部分)到 XBOX Series X|S(系列的任何部分)之间双向工作。

**预期结果** — 不支持 Smart Delivery 的 XBOX One 游戏必须在 XBOX Series X|S 上运行,没有功能或性能问题。

**通过示例**

1. 游戏在 XBOX Series X|S 上运行时没有性能问题。
2. 游戏在 XBOX Series X|S 上运行时没有功能问题。
3. 游戏在 XBOX Series 控制台之间运行时可以正确进入、玩和完成所有多人游戏模式,包括在 XBOX One 和 XBOX Series 之间玩多人游戏时。
4. 游戏在 XBOX Series X|S 控制台上运行时正确支持挂起和恢复。
5. 用户在 XBOX Series X|S 控制台上的游戏存档在完整游戏重启后保留。
6. 在 XBOX One 上创建的用户游戏存档可以漫游到 XBOX Series X|S,所有进度仍然存在。将相同的游戏存档漫游回 XBOX One 也保留所有进度。

**失败示例**

1. 游戏在 XBOX Series X|S 上运行时有性能问题。
2. 游戏在 XBOX Series X|S 上运行时有功能问题。
3. 用户无法在 XBOX Series 控制台之间运行时或在 XBOX One 和 XBOX Series 之间玩多人游戏时进入、玩或完成多人游戏的所有模式。
4. 游戏在 XBOX Series X|S 控制台上运行时没有正确挂起和恢复。
5. 用户在 XBOX Series X|S 控制台上的游戏存档或部分游戏存档在完整游戏重启后没有保留。
6. 在 XBOX One 上创建的用户游戏存档无法在没有进度丢失的情况下漫游到 XBOX Series X|S。将相同的游戏存档漫游回 XBOX One 也丢失一些/所有进度。

### [XR-131:游戏 DVR 和截图的显示模式支持](/publishing/certification/xr/xr-131) \*

游戏必须确保游戏 DVR 和截图在显示模式和类型之间正常工作。以 HDR 显示的游戏通过渲染 SDR 和 HDR 交换链来实现这一点,因为 SDR 交换链用于 SDR 截图、广播和游戏 DVR。

#### 131-01 游戏 DVR 和截图

**所需工具**

* 1 台 XBOX One S
* 1 台 XBOX One X
* 1 台 XBOX Series X 开发工具包(使用 XBOX Series X|S 零售控制台模式)
* 1 台 4k/HDR 显示器

**测试步骤**

1. 登录 XBOX One S 和 XBOX Series S 控制台,设置为 1080p,连接 HDR 显示器,并在控制台设置中配置 HDR 输出。
2. 启动游戏。
3. 在游戏仍在运行时,在控制台设置中禁用 HDR。
4. 返回游戏并验证显示的图形没有缺陷。
5. 在 XBOX One X 和 XBOX Series X 上以 4K 重复步骤 1-4。

**预期结果** — 将 HDR/4K 输出切换到 SDR 时不显示任何图形缺陷。

**通过示例**

1. 没有黑屏、没有黑条,也没有明显的视觉缺陷。

**失败示例**

1. SDR 图像明显比 HDR 图像更亮或更暗。
2. SDR 图像比 HDR 图像更小。
3. SDR 图像上显示了显著的黑条或边框。

### [XR-022:官方命名标准](/publishing/certification/xr/xr-022) \*

游戏必须使用[术语列表](/publishing/certification/console-cert-terminology)最新发布版中定义的命名标准来引用 XBOX 控制台和/或 XBOX 网络功能。

在 XBOX 控制台上,游戏不得使用未明确包含在术语列表中的术语来显示图像或引用控制台系统组件或外围设备组件。

#### 022-01 官方命名标准

**测试步骤**

1. 启动游戏。
2. 访问游戏的所有区域。
3. 浏览所有菜单和子菜单。
4. 更改所有可用的设置和选项。
5. 如果游戏支持存档,保存并加载所有可能的游戏类型。
6. 观看所有过场动画。
7. 记录显示的所有文本和图像。

**预期结果** — 所有文本遵循最新的术语列表。图像不得使用未明确包含在术语列表中的术语显示控制台系统组件或外围设备组件。

**通过示例** — 无

**失败示例**

1. 游戏使用了竞争平台的专有术语或图像。
2. 游戏使用了术语列表中未收录的任何术语来引用控制台系统组件或外围设备的组件。

### [XR-074:与 XBOX 和合作伙伴服务的连接丢失](/publishing/certification/xr/xr-074) \*

游戏必须优雅地处理与 XBOX 和合作伙伴服务的连接错误。在失败发生后尝试重试对 XBOX 服务的请求时,游戏必须遵守 XBOX 设置的重试政策。游戏必须在服务不可用时适当地管理向用户传达消息。如果合作伙伴服务不可用,游戏不得指示 XBOX 网络存在问题。当网络服务变慢或间歇性可用时,游戏不得崩溃或挂起。

#### 074-01 与 XBOX 服务的 WAN 断开连接

**测试步骤**

1. 登录 XBOX 配置文件。
2. 在执行以下操作时,断开 WAN 网络。如果使用以太网交换机/集线器,请从网络设备断开上行电缆。如果设备通过 Wi-Fi 连接,请从无线接入点连接断开上行电缆:
   * 创建新的存档点
   * 加载存档点
   * 到达自动存档点
   * 枚举已保存游戏列表
   * 搜索并加入在线会话
   * 尝试创建在线会话
   * 查看排行榜(如适用)
   * 离线游戏

**预期结果** — 如果控制台无法到达 XBOX 服务,则游戏应以用户友好的错误消息作出响应。

**通过示例**

1. 游戏显示错误消息,指示与 XBOX 服务的网络连接丢失。
2. 玩不需要 XBOX 服务的本地游戏模式时,游戏不显示错误消息。
3. 在 AppX 清单中带有 `RequireXboxLive` 的游戏在连接丢失时挂起并随后终止。

**失败示例**

1. 用户无法完成非在线 XBOX 游戏会话。
2. 游戏进入无响应或不稳定状态。

#### 074-02 直接断开连接

**测试步骤**

1. 启动游戏并登录 XBOX 配置文件。
2. 在游戏中执行以下操作时,拔掉设备的网络电缆,或关闭 WAP 或无线路由器:
   * 创建新的存档点。
   * 加载存档点。
   * 到达自动存档点。
   * 枚举已保存游戏列表。
   * 搜索并加入在线会话。
   * 尝试创建在线会话。
   * 查看排行榜(如适用)。
   * 离线游戏。

**预期结果** — 如果设备失去与 XBOX 服务的连接,则游戏应以用户友好的错误消息作出响应。

**通过示例**

1. 处于在线游戏模式时,游戏显示用户友好的消息。
2. 离线游戏模式期间,游戏不中断游戏。
3. 在 AppX 清单中带有 `RequireXboxLive` 的游戏在连接丢失时挂起并随后终止。

**失败示例**

1. 离线游戏模式期间显示错误消息。
2. 游戏进入无响应或不稳定状态。
3. 网络离线后,用户仍能查看在线菜单或查看缓冲的媒体。

#### 074-03 挂起时与 XBOX 服务的断开连接

<Info>
  在零售控制台上,游戏在控制台进入连接待机(使用即时启用关闭)或游戏失去焦点十分钟时被挂起。对于此测试用例,应在步骤 3 中验证两种方法。
</Info>

**测试步骤**

1. 在控制台电源模式设置为即时启用的情况下登录 XBOX 配置文件。
2. 启动游戏并进入游戏过程。
3. 在整个游戏过程中的不同时刻,挂起游戏。
4. 恢复游戏并验证游戏优雅地处理断开连接。
5. 在整个游戏过程中重复步骤 3-4。

**预期结果** — 如果控制台在挂起后无法到达 XBOX 服务,游戏必须成功恢复,优雅地处理该情况,并在适当情况下以用户友好的错误消息响应。

**通过示例**

1. 在在线 XBOX 多人游戏会话期间,游戏显示错误消息,指示与 XBOX 服务的网络连接丢失。
2. 玩不需要 XBOX 服务的本地游戏模式时,游戏不显示错误消息。

**失败示例**

1. 用户无法完成非在线 XBOX 游戏会话。
2. 游戏进入无响应或不稳定状态。
3. 恢复后游戏显示误导性或错误的错误消息。

#### 074-04 挂起期间的 XBOX 服务重新连接

<Info>
  在零售控制台上,游戏在控制台进入连接待机(使用即时启用关闭)或游戏失去焦点十分钟时被挂起。对于此测试用例,应在步骤 3 中验证两种方法。
</Info>

**测试步骤**

1. 在控制台电源模式设置为即时启用的情况下登录 XBOX 配置文件,并确保控制台设置为主机。
2. 在没有连接到 XBOX 但保持本地网络连接的情况下,启动游戏。
   * 如果使用以太网交换机/集线器,请从网络设备断开上行电缆。
   * 如果设备通过 Wifi 连接,请从无线接入点断开上行电缆。
3. 在整个游戏过程中的不同时刻,挂起游戏。
4. 重新连接上行电缆,并等待控制台重新连接到 XBOX 服务。
5. 恢复游戏并验证游戏优雅地处理重新连接。
6. 在整个游戏过程中重复步骤 2-5。

**预期结果** — 如果控制台在挂起后无法到达 XBOX 服务,游戏必须成功恢复,优雅地处理该情况,并在适当情况下以用户友好的错误消息响应。

**通过示例**

1. 用户能够恢复游戏并无中断地完成离线 XBOX 游戏会话。
2. 游戏保持稳定,不会崩溃。

**失败示例**

1. 用户无法完成非在线 XBOX 游戏会话。
2. 游戏进入无响应或不稳定状态。
3. 恢复后游戏显示误导性或错误的错误消息。

#### 074-05 持续低带宽

**所需工具** — 来自 GDK/XDK 的 *xbstress.exe*。

**配置** — 网络模拟由命令行压力工具 *xbstress.exe* 控制。此工具配置各种控制台压力测试,包括网络模拟。出于网络目的,*xbstress.exe* 控制 XBOX 设备上的专用驱动程序,该驱动程序丢弃数据包、注入延迟并限制吞吐量。*xbstress.exe* 具有三个预配置的模拟配置文件,可让您轻松模拟重要的网络场景:最小、平均和优秀。最小配置文件对应此 XR。

**测试步骤**

1. 使用最小配置文件,将连接限制到 XBOX 设备的最低操作要求。
2. 执行与游戏相关的在线操作,包括但不限于浏览所有菜单和玩在线游戏会话。

**预期结果** — 当用户的互联网连接降至 192 Kbps 以下时,游戏不得崩溃或导致用户数据丢失。

**通过示例**

1. 显示用户友好的消息,指示由于低带宽可能对在线游戏产生影响。
2. 游戏不崩溃,也不导致用户数据丢失。

**失败示例**

1. 游戏崩溃或导致用户数据丢失。

#### 074-06 可变低带宽

**所需工具** — 来自 GDK/XDK 的 *xbstress.exe*。

**配置** — 与 074-05 相同。最小配置文件对应此 XR。

**测试步骤**

1. 在 *xbstress.exe* 中禁用所有网络限制。
2. 执行与游戏相关的在线操作,包括但不限于浏览所有菜单和玩在线游戏会话。
3. 执行步骤 2 时,启用 *xbstress* 最小配置文件。

**预期结果** — 当用户的互联网连接降至 192 Kbps 以下时,游戏不得崩溃或导致用户数据丢失。

**通过示例**

1. 显示用户友好的消息,指示由于低带宽可能对在线游戏产生影响。
2. 游戏不崩溃,也不导致用户数据丢失。

**失败示例**

1. 游戏崩溃或导致用户数据丢失。

#### 074-07 动态连接丢失

**所需工具** — 带有内容阻止插件的 Fiddler Classic。

**使用内容阻止插件配置 Fiddler Classic 以阻止合作伙伴服务**

* 在控制台上,设置 Fiddler 以调试 Web 服务调用。
* 在 PC 上,设置 Fiddler 以调试 Web 服务调用。
* 为 Fiddler 安装内容阻止插件。
* 在 Fiddler 中,选择菜单 ContentBlock 和"Enabled"。

<Tip>
  **配置阻止列表的步骤:**

  1. 运行 Fiddler 后,启动游戏并浏览所有菜单、完成多人游戏会话、加载到每个游戏模式,并浏览游戏的所有区域,包括菜单、排行榜、服务器(创建一个并加入他人的)、好友列表、游戏内商店和限时活动。这确保游戏在正常游戏过程中连接到所有主机。
  2. 在 Fiddler 中,识别哪些主机是非 Microsoft 服务。按主机排序会话列表,并查找不包含以下任何内容的主机:`microsoft, msft, xboxlive, xboxservices, live, PlayFabApi, msn, bing`。
  3. 在 Fiddler 中,将非 Microsoft 主机添加到阻止列表。右键单击非 Microsoft 主机,然后选择"阻止此主机"。对所有其他非 Microsoft 主机重复此操作。您不必多次阻止同一主机。

  要编辑阻止列表,请选择 ContentBlock 菜单和"Edit Blocked Hosts..."。
</Tip>

**测试步骤**

1. 登录 XBOX 配置文件并启动游戏。
2. 完成多人游戏会话,加载到每个游戏模式,并浏览游戏的所有区域,包括菜单、排行榜、服务器(创建一个并加入他人的)、好友列表、游戏内商店和限时活动。
3. 验证游戏不显示指示 XBOX 网络问题的错误消息。

**预期结果** — 游戏优雅地处理与非 Microsoft 服务的断开连接。

**通过示例**

1. 与合作伙伴托管服务的连接丢失时,游戏不挂起或崩溃。

**失败示例**

1. 显示的消息暗示 Microsoft 服务存在问题。
2. 显示非描述性错误消息。
3. 游戏崩溃、变得不稳定或导致控制台重启。

#### 074-08 启动前停机时间

**所需工具**

* 来自 GDK/XDK 的 *xbstress.exe*
* 对于 Windows 10,使用 Fiddler Classic

**测试步骤**

1. 在控制台上,使用命令为非 Microsoft 流量在 *xbstress.exe* 中创建断开的网络通道:`xbstress set channel=0 network=broken addresses=[分号分隔的地址列表]`。
2. 使用命令启动网络模拟:`xbstress simulate network=channels`。
3. 如果在 Windows 10 上测试,请使用 Fiddler 模拟停机时间。
4. 登录 XBOX 配置文件。
5. 启动游戏。
6. 访问非 Microsoft 在线功能。

**预期结果** — 游戏应提供用户友好的错误消息,指示访问非 Microsoft 服务时存在问题,并应提供重试连接的机会。

**通过示例**

1. 与合作伙伴托管服务的连接丢失时,游戏不挂起或崩溃。

**失败示例**

1. 显示的错误暗示 Microsoft 服务存在问题。
2. 显示非描述性错误消息。
3. 游戏崩溃、变得不稳定或导致控制台重启。

### [XR-132:服务访问限制](/publishing/certification/xr/xr-132) \*

在调用 XBOX 网络服务时超出游戏和用户基础限制或不遵守 XBOX 网络服务重试政策的游戏可能会受到速率限制,这可能会导致服务中断或废弃。不遵守指定限制可能会阻止游戏发布,而已发布游戏的生产问题可能会导致 XBOX 网络服务暂停,包括游戏删除。

#### 132-01 服务访问限制

**所需工具**

* 控制台上的 Fiddler 或 PC 上的 Fiddler。
* 来自 GDK 开发工具下载包的 XBOX 服务跟踪分析器。它用于查看游戏进行的服务调用,并查找调用模式中的任何违规行为。

**测试步骤 — 使用 Fiddler Classic**

1. 在启动游戏之前,启动 Fiddler Classic,并确保它已配置为从控制台或 Windows 10 PC(无论所讨论的游戏从哪里运行)捕获网络流量。
2. 在 Fiddler Classic 运行并捕获网络流量时,启动游戏并继续浏览所有区域,包括但不限于:创建游戏存档、重启控制台并加载游戏存档;快速连续更改富存在状态(如果可能);解锁并查看成就;发布到所有排行榜并使用所有过滤器查看所有排行榜;查看游戏内好友列表(包括在线状态被阻止的好友)并在页面之间快速移动;获得并查看 Hero Stat;匹配到所有在线模式,包括无法找到可用会话的情况(如果可能),并生成语音流量;创建、保存并分享游戏片段;访问游戏内商店(如适用)。
3. 测试结束后,将 Fiddler 捕获保存到本地目录。
4. 在 GDK 命令提示符中,运行 `xbltraceAnalyzer -data filepath -outputdir filepath`。
5. 打开步骤 4 的输出目录,然后打开"index"文件(如果提示,请选择"允许阻止的内容")。

**测试步骤 — 使用 *xbtrace.exe***

在游戏启动之前,*xbtrace.exe* 无法启动,但应尽快启动它以捕获游戏在启动期间进行的任何 XBOX 服务调用。因此,首选的捕获游戏流量的方法是 Fiddler Classic,因为它可以在启动游戏之前启动。

1. 在游戏运行时,运行 `xbtrace start xboxliveservices` 并继续浏览游戏的所有区域(与上面的 Fiddler 步骤相同的覆盖范围)。
2. 测试结束后,运行 `xbtrace stop` 两次。
3. 浏览控制台的文件,在 SystemScratch > xbtrace 中,您会找到 csv。检查时间戳以确保它注册您停止记录的时间。将其复制到本地。
4. 在 XDK 命令提示符中,运行 `Xbltraceanalyzer -data filepath -outputdir filepath`。
5. 打开步骤 4 的输出目录,然后打开"index"文件。

**预期结果** — 游戏必须确保对 XBOX 端点的服务调用低于指定的突发和持续限制,并且在其 XBOX 服务跟踪分析器报告中没有任何红色结果。XBOX 服务跟踪分析器工具生成一个 *report.txt* 文件,该文件指示发现违规行为的规则以及这些违规行为的详细信息。

<Tip>
  **解读 XBOX 服务跟踪分析器报告**

  * **红色** — 表示超出精细速率限制生效点的 10 倍的问题。这是认证中的严重问题。
  * **黄色** — 表示由于游戏超过允许对服务的调用频率而对服务进行了速率限制,但没有超过将成为认证中严重问题的阈值。这些是游戏应寻求解决的事项。
  * **绿色** — 表示游戏对 XBOX 服务的调用低于速率限制生效的频率。
</Tip>

**通过示例**

1. 游戏在调用 XBOX 服务时不超过持续限制。
2. XBOX 服务跟踪分析器报告只包含黄色和/或绿色结果。

**失败示例**

1. 游戏超过持续限制(速率限制生效的限制)达 10 倍。例如,如果精细速率限制生效的持续限制设置为 300 秒内 300 次调用,则 300 秒内 3000 次调用或以上的游戏将失败。
2. XBOX 服务跟踪分析器报告包含一个或多个红色结果。

#### 132-02 游戏事件限制

**测试步骤**

1. 安装游戏,并在游戏运行时,继续浏览游戏的所有区域(与 132-01 相同的覆盖范围)。
2. 测试期间,观察游戏以查看是否出现游戏事件限制系统 toast。

**预期结果** — 游戏不得触发游戏事件限制系统 toast。

**通过示例**

1. 游戏不触发游戏事件限制系统 toast。

**失败示例**

1. 游戏触发游戏事件限制系统 toast。

### [XR-133:本地存储写入限制](/publishing/certification/xr/xr-133) \*

使用本地存储的游戏在 5 分钟增量时间内,持久本地存储或临时存储的总写入不得超过 1 GiB。

#### 133-01 本地存储写入限制

**测试步骤**

1. 安装游戏,并在游戏运行时,继续浏览游戏的所有区域,包括但不限于创建游戏存档、重启控制台并加载游戏存档,以及玩所有游戏模式并解锁/查看成就。
2. 测试期间,观察游戏以查看是否出现本地存储写入限制系统 toast。

**预期结果** — 游戏不得触发本地存储写入限制系统 toast。

**通过示例**

1. 游戏不触发本地存储写入限制系统 toast。

**失败示例**

1. 游戏触发本地存储写入限制系统 toast。

## 在线安全和隐私

此类别中的要求涉及保护用户的安全和隐私。

### [XR-013:将 Microsoft 账户与发行商账户关联](/publishing/certification/xr/xr-013) \*

在 XBOX 上,使用合作伙伴托管服务或需要凭据的账户的游戏必须支持所有 XBOX 用户,并提供将该账户与用户的 Microsoft 账户关联的选项。在 XBOX 控制台之外,游戏可以选择允许账户关联以支持游戏体验。

如果在游戏内启用了发行商账户登录,则适用以下规则:

**发行商账户登录**

* **接纳所有用户** — 如果游戏功能(单人、多人、跨网络游戏、排行榜)需要发行商账户登录,登录和注册必须支持提供游戏的所有用户类型、年龄和区域,以及本地/区域法律允许的功能,而不管年龄分级如何。游戏发行商可以选择不支持特定区域、年龄等发行商账户。如果某个区域、年龄组或其他玩家组无法创建或登录账户,游戏就不能要求这些用户使用账户登录以获取游戏功能。如果基于游戏的注册体验中不支持特定账户设置(例如,年龄或区域),则游戏必须优雅处理,通过提供在支持该用户的外部站点或移动优化体验上注册的消息。
* **获得同意并提供账户信息使用条款** — 游戏必须请求使用并获得使用玩家 Microsoft 账户信息以自动填充注册/账户创建体验的同意。在发行商账户创建过程中,必须在游戏内向用户提供所有适用的使用条款、隐私和其他政策(或带有此类信息链接的通知)。
* **披露要求** — 如果游戏或附加功能需要发行商账户,则必须在游戏的产品描述和任何物理包装中披露此信息,包括任何限制(如年龄)。在游戏中,必须定义发行商账户的原因和用途。如果发行商账户限制或制约儿童账户的体验,建议将此文本添加到商店详细信息页面以引起买家注意:

> *游戏的某些功能,包括在线多人游戏、通信和其他在线功能,XBOX 儿童账户可能无法访问。在 XBOX 上,儿童指年龄小于 13 岁的玩家,除非当地法律另有规定。*

**发行商账户/Microsoft 账户关联**

* **使用 XBOX 安全令牌服务 (XSTS) 进行身份验证** — 当将用户的发行商账户与用户的 Microsoft 账户关联时,必须使用 XSTS 令牌为身份验证提供身份信息。
* **获得同意并提供选择** — 必须通知用户将其发行商账户与 Microsoft 账户关联。用户必须有选择退出关联其账户的选项。用户必须有能力解除账户关联。
* **接纳所有用户** — 如果游戏功能需要发行商账户登录,登录和注册必须支持提供游戏的所有用户类型、年龄和区域,以及本地/区域法律允许的功能,而不管年龄分级如何。

<Note>
  发行商可以实现额外的欺诈预防机制,例如当已关联账户首次从新设备登录时进行双因素身份验证中断。此行为不违反此 XR。
</Note>

#### 013-01 将 Microsoft 账户与发行商账户关联

**测试步骤**

1. 验证游戏是否支持或要求非 XBOX 账户或登录来使用服务或功能。
2. 使用新创建的 XBOX 配置文件,使用发行商提供的服务账户或登录以在初始设置期间输入非 XBOX 账户凭据。
3. 验证游戏允许用户在应用中查看使用条款,或在完成账户关联过程之前告知用户如何查看使用条款。
4. 验证在任何位置都没有提示用户重新输入其非 XBOX 账户凭据。
5. 在游戏运行时注销并重新登录。
6. 重复步骤 4。
7. 使用相同的配置文件终止并重新激活游戏。
8. 重复步骤 4。
9. 终止游戏。
10. 通过删除游戏可能创建的任何已保存文件,验证游戏未在本地存储非 XBOX 账户凭据。
11. 重新激活游戏并重复步骤 4。
12. 在不同的控制台上,使用相同的配置文件启动游戏并重复步骤 4。
13. 验证用户可以从非 XBOX 账户解除其 XBOX 配置文件的关联。
14. 使用符合游戏年龄分级的 XBOX 儿童账户(13 岁以下)重复步骤 1-13。

**预期结果** — 游戏必须允许为所有属于游戏年龄分级的用户创建发行商账户。用户应仅需提供一次凭据,并允许在完成账户关联过程之前查看使用条款或被告知如何查看使用条款。为用户提供了从其非 XBOX 账户解除其 XBOX 配置文件关联的机制。

**通过示例**

1. 游戏在用户最初输入非 XBOX 账户或登录凭据后,任何时候都不会要求用户重新输入它们,并且游戏在关联过程中以及在账户保持关联期间提供使用条款的通知。
2. 游戏允许为所有属于游戏年龄分级的用户创建发行商账户。

**失败示例**

1. 游戏要求用户在每次启动游戏时输入其非 XBOX 账户或登录凭据。
2. 游戏在从另一台控制台运行时要求用户输入其非 XBOX 账户或登录凭据。
3. 游戏未在账户关联过程中提供查看使用条款的方法。
4. 游戏未提供从非 XBOX 账户解除其 XBOX 配置文件关联的方法。
5. 游戏不允许为所有属于游戏年龄分级的用户创建发行商账户。

### [XR-014:玩家数据和个人信息](/publishing/certification/xr/xr-014) \*

游戏发行商全权负责根据适用法律收集和处理最终用户数据,特别是当用户是儿童时。

此外,当游戏具有从 XBOX 获取或通过与玩家的直接关系(如网站或移动应用)获取的关于玩家的信息时,游戏不得向其他玩家显示:

* 可能用于对用户造成经济损失的信息(如社会保障号或信用卡号码)。
* 泄露用户地址(除国家/地区外)的信息。
* 允许用户在线冒充另一用户的信息,例如账户凭据。

#### 处理儿童数据

从儿童或青少年年龄组的账户收集数据时,游戏只能请求验证年龄、获得父母同意或完成发行商账户关联所必需的个人数据。

<Warning>
  数据请求必须说明数据将用于什么。例如,如果游戏询问用户的出生日期,必须说明该出生日期将用于什么。

  **良好示例**:

  * *请提供您的出生日期,以便我们可以验证您的年龄*
  * *请提供您的出生日期,以便我们可以个性化您的体验*
  * *我们需要您的出生日期以提供符合年龄的内容*
  * *我们需要您的出生日期以遵守法律年龄限制*

  **不良示例**:

  * *请提供您的出生日期*
  * *输入您的出生日期*
  * *我们需要您的出生日期*
  * *需要出生日期*
</Warning>

#### 定义

地址是可以将用户位置识别到城市或城镇级别的任何信息。这包括但不限于以下内容:

* 实际地址
* 邮寄地址
* 账单地址
* 邮政编码
* IP 地址或相关信息
* 地理位置信息

#### 014-01 个人信息

**测试步骤**

1. 访问游戏的所有区域,包括所有可能的 XBOX 多人游戏会话。
2. 访问可能保存内容或以其他方式通过 XBOX 网络或发送到游戏服务器的所有区域。

**预期结果** — 游戏绝不能显示 XR 正文中详述的另一个用户的个人信息。

**通过示例**

1. 游戏与另一台控制台上的用户显示和共享居住国家信息。
2. 游戏使用用户的 IP 地址来定义用户的一般位置(不比州或国家/地区更具体),并将该位置显示给排行榜上的其他用户。

**失败示例**

1. 游戏将用户的个人信息传输并共享给其他控制台上的用户。*示例*:电子邮件地址、位置(比州/国家/地区更具体的任何内容)、姓名、出生日期、配置文件密码、密保问题、密码、信用卡详细信息。

#### 014-02 数据收集

**测试步骤**

1. 使用儿童或青少年账户启动游戏。
2. 访问游戏的所有区域,包括所有可能的单人和 XBOX 多人游戏模式。
3. 检查向用户请求的数据。

**预期结果** — 游戏不得向儿童或青少年用户请求超出以下所需内容的数据:

* 年龄验证
* 获得父母同意(如父母的电子邮件地址)
* 发行商账户关联(如父母、儿童或青少年用户的电子邮件地址)

**通过示例**

1. 游戏不向儿童或青少年用户请求任何数据。
2. 游戏请求用户的出生日期并说明数据将用于什么。
3. 游戏请求父母的电子邮件地址并说明数据将用于什么。
4. 游戏请求用于账户关联的电子邮件地址并说明数据将用于什么。

**失败示例**

1. 游戏询问可能用于验证年龄、获取父母同意或发行商账户关联以外目的的数据。
2. 游戏请求用户的出生日期,但未说明数据将用于什么。
3. 游戏请求父母的电子邮件地址,但未说明数据将用于什么。
4. 游戏请求用于账户关联的电子邮件地址,但未说明数据将用于什么。

### [XR-015:管理玩家通信](/publishing/certification/xr/xr-015) \*

当用户的隐私设置不允许时,游戏不得允许通过 XBOX 网络进行通信。

游戏通过从 XBOX 网络服务检索数据来满足此 XR。如果游戏使用自己的服务,则必须在会话开始时或当新用户加入会话时检查用户的隐私权限。对于会话之外用户发起的场景,游戏通过在显示用户数据之前和执行操作之前检查隐私来满足此要求。以下权限可供游戏检查:

| 权限名称                  | 描述                                   |
| --------------------- | ------------------------------------ |
| CommunicateUsingText  | 检查用户是否可以向目标用户发送文本通信(例如,文字聊天、消息等)或邀请。 |
| CommunicateUsingVoice | 检查用户是否可以使用语音与目标用户通信。                 |

在游戏会话期间,提供 XBOX 网络和非 XBOX 网络玩家之间通信的游戏必须提供在会话期间将任何非 XBOX 网络玩家静音的功能。

#### 015-01 用户通信

**配置**

* 创建一组配置文件,将"其他人可以通过语音、文本或邀请进行通信"设置为所有人、好友和已阻止。
* 对于支持在 XBOX 之外通信的游戏,创建一组将"您可以通过语音和文本在 XBOX 之外进行通信"设置为允许、游戏内好友和已阻止的配置文件。

<Note>
  "允许"和"游戏内好友"选项之间的区别在于,"允许"意味着您可以与所有跨网络玩家(包括您在随机匹配中遇到的玩家)交谈。"游戏内好友"是您通过将其添加到游戏内好友列表明确选择一起玩的人员。
</Note>

**测试步骤**

1. 在设备 1 上,登录已根据配置配置了特定权限集的配置文件。
2. 在设备 2 上,登录没有通信限制的配置文件。
3. 在两台设备上,启动游戏并尝试在所有支持的位置使用文字、语音(通过 Kinect 和通过耳机)和视频进行通信,并尝试发送多人游戏邀请。
4. 对配置步骤中的所有配置文件重复步骤 1-3。

**预期结果** — 游戏必须检查 XBOX 服务以获取用户与隐私和在线安全相关操作的权限,并且在用户的隐私和在线安全设置不允许时不得传输用户数据或允许通过 XBOX 通信。

**通过示例**

1. 当特定通信方法配置为阻止时,游戏阻止用户通过 XBOX 通过语音和文字进行通信。
2. 当特定通信方法配置为阻止时,游戏阻止用户在 XBOX 之外通过语音和文字进行通信。
3. 当被阻止时,游戏阻止用户在 XBOX 上接收多人游戏邀请。

**失败示例**

1. 当特定通信方法配置为阻止时,用户能够通过 XBOX 通过语音和文字进行通信。
2. 当特定通信方法配置为阻止时,用户能够在 XBOX 之外通过语音和文字进行通信。
3. 当被阻止时,游戏允许用户在 XBOX 上接收多人游戏邀请。

#### 015-02 静音支持

**测试步骤**

1. 作为用户 A,将用户 B 静音。
2. 让两个用户加入 XBOX 多人游戏会话。
3. 尝试从用户 B 向用户 A 发送语音通信。
4. 确保用户 A 无法从用户 B 接收任何语音通信。

**预期结果** — 用户 A 必须无法听到来自用户 B 的通信。

**通过示例**

1. 发起静音的用户听不到来自被静音用户的语音通信。

**失败示例**

1. 发起静音的用户可以听到来自被静音用户的语音通信。

#### 015-03 被阻止的用户

**测试步骤**

1. 作为用户 A,阻止用户 B。
2. 让两个用户加入 XBOX 多人游戏会话。
3. 尝试从用户 B 向用户 A 发送语音和书面通信。
4. 尝试从用户 B 向用户 A 发送多人游戏邀请。
5. 确保用户 A 无法从用户 B 接收任何通信或多人游戏邀请。

**预期结果** — 用户 A 必须无法听到或看到来自用户 B 的通信。用户 A 必须不能接收来自用户 B 的多人游戏邀请。

**通过示例**

1. 发起阻止的用户看不到或听不到来自被阻止用户的通信。
2. 发起阻止的用户不会接收来自被阻止用户的多人游戏邀请。

**失败示例**

1. 发起阻止的用户可以看到或听到来自被阻止用户的通信。
2. 发起阻止的用户会接收来自被阻止用户的多人游戏邀请。

### [XR-017:游戏分级](/publishing/certification/xr/xr-017) \*

**XBOX 的游戏分级**

XR-017 白皮书重点介绍与 XBOX 控制台上的内容分类和限制相关的两个基本概念:

* **分级** — 指定不同地区分级机构认为不同类型内容适合的年龄水平。
* **家长控制** — XBOX 控制台上的配置文件设置,定义用户可以在应用中玩或查看的最高分级级别的内容。

#### 017-01 年龄分级验证

<Warning>
  对于仅数字游戏或没有绿色光盘的测试,请改为参考测试用例 [BVT 000-13](#bvt-13-age-rating-validation)。
</Warning>

**配置**

1. 游戏必须是光盘提交,并且必须提供测试光盘以运行测试步骤 #2 和 #3。
   * Final(基础/内容更新)— 需要证书的所有区域设置都需要证书。
   * 超出范围/无需测试 — DLC、游戏内内容、无法在没有连接到 XBOX Live 服务的情况下启动的游戏。
2. 提交材料(证书)
3. Microsoft 合作伙伴中心中声明的游戏年龄分级

**测试步骤**

1. 将合作伙伴中心中的分级值与游戏提交材料中提供的分级证书进行比较,反之亦然。这是为了确保每个分级值都有相应的证书,以及每个证书在合作伙伴中心中都有相应的说明。合作伙伴中心中的所有分级值都应有匹配的证书。如果没有,这可能表明有错误,因此必须升级。
2. **需要测试光盘** — 将光盘介质插入设置为零售的专用离线控制台,并安装游戏,确保控制台在整个测试期间从未连接到 XBOX Live 服务。
3. 对于游戏支持的每个分级机构:在控制台设置中将离线控制台设置为该分级机构管辖的一个位置/国家,登录启用了相应年龄限制的 XBOX 配置文件,并启动游戏以验证:
   * 如果配置文件的年龄分级值设置低于游戏的年龄分级证书,则系统挑战用户。
   * 如果配置文件的年龄分级值等于游戏的年龄分级证书,则系统不挑战用户,并且游戏启动超过第一个法律/许可证屏幕。

**预期结果** — 在控制台位置与游戏的每个支持的年龄分级区域匹配的情况下:

* 当使用设置低于游戏年龄分级证书值的控制台年龄分级值启动时,游戏必须挑战用户。
* 当使用设置等于游戏年龄分级证书值的年龄分级值启动时,游戏必须不挑战用户即可启动。

### [XR-018:用户生成的内容](/publishing/certification/xr/xr-018) \*

用户生成的内容 (UGC) 是指玩家在游戏内制作的任何数字内容,并且以在线状态对一个或多个其他人可见或可访问。

如果您的产品包含 UGC,您必须:

* 提供产品内方式,让用户可以向开发者举报不当或有害的 UGC 以供审查和删除/禁用(如果违反内容准则),和/或实现主动检测不当或有害 UGC 的方法(例如,文本过滤)。
* 发布用户生成内容的内容准则(例如使用条款或行为准则),用户可以在产品内或游戏网站上获取。
* 准备在 Microsoft 请求的情况下删除/禁用高风险违法内容,以防 Microsoft 察觉到 XBOX 网络上未通过标准操作机制或流程处理的违法材料。
* 尊重玩家 UGC 设置,并优雅地处理由于受限权限导致用户无法在游戏中访问 UGC 的场景。

此外,如果您的产品与第三方游戏 mod 平台集成,您必须:

* 与平台的举报/投诉 API(如果可用)集成,并在与第三方的合同协议要求时审核内容。
* 当内容不是来自开发者时,向用户显示免责声明、对话框或视觉指示。

#### 018-01 举报不当内容和 UGC 文本字符串验证

**测试步骤**

1. 识别游戏中可以在非好友之间输入文本的任何区域,然后其他设备上的用户可以查看。
2. 验证游戏提供产品内方式来向开发者举报其他用户的不当或有害 UGC。
3. 如果没有方法举报不当内容,请在每个区域输入禁用术语列表中的字符串、子字符串等。
   * 直接输入禁用术语(即"ForbiddenTerm")。
   * 输入禁用术语,以空格分隔另一个非禁用术语(例如"Good ForbiddenTerm")。
4. 如果游戏允许在离线状态下创建 UGC,例如角色名称,请断开设备与网络的连接,输入禁用术语组合,并重新连接到网络。
5. 验证禁用术语对另一台设备上的任何其他用户不可见。
6. 使用来自匹配区域设置的禁用术语,针对游戏支持的每种语言重复步骤 3-5。

**预期结果** — 游戏必须提供产品内方式,让用户可以向开发者举报不当或有害的 UGC,和/或实现主动检测不当或有害 UGC 的方法。不当或有害的内容必须从 XBOX 服务上的非本地玩家中屏蔽或模糊化。XBOX 玩家代号豁免于 UGC 要求,不应受文本过滤、游戏管理的举报选项或受限 UGC 权限导致的模糊化的影响。UGC 准则(例如使用条款或行为准则)对用户在产品内或游戏网站上可用。游戏不得为具有受限 UGC 权限的用户阻止整个游戏模式或体验。

**通过示例**

1. XBOX 玩家代号不被过滤、模糊化或受游戏内举报的影响。
2. 跨网络用户名、发行商管理的用户名、自定义角色名称或氏族/小队/公会名称不被模糊化。
3. 游戏提供产品内方式,让用户可以向开发者举报不当或有害的 UGC。
4. 游戏阻止发布不当或有害的 UGC,并通知用户发布失败的原因。
5. 游戏用词或字符替换不当或有害的文本,例如\_内容已阻止\_或\_\$!\*#&\_。
6. 用户输入的、在游戏中实时共享的文本(例如大厅或游戏内的文本覆盖),或仅在好友之间共享的文本不被过滤。
7. 不当或有害的文本字符串在本地控制台上对用户可见,但不会传输到本地控制台之外的其他非好友。
8. UGC 准则(例如使用条款或行为准则)对用户在产品内或游戏网站上可用。
9. 游戏不为具有受限 UGC 权限的用户阻止整个游戏模式或体验。

**失败示例**

1. XBOX 玩家代号被过滤或模糊化。
2. 游戏未提供用户向开发者举报不当或有害 UGC 的方式,或者允许不当或有害的 UGC 对其他设备上的非好友可见。
3. 游戏允许用户通过在离线状态下创建 UGC 并随后在线共享来规避不当或有害的 UGC 过滤。
4. UGC 准则(例如使用条款或行为准则)对用户在产品内或游戏网站上不可用。
5. 游戏为具有受限 UGC 权限的用户阻止整个游戏模式或体验。

## 内容包和更新

此类别中的要求指定了 XBOX One 游戏必须如何打包以及必须如何与附加内容包交互。

### [XR-034:流式安装的初始游玩标记](/publishing/certification/xr/xr-034) \*

包含初始游玩标记的游戏在从初始游玩标记启动时必须提供游戏体验。

#### 034-01 流式安装

**测试步骤**

1. 登录 XBOX 配置文件。
2. 安装游戏,并在初始游玩标记完成安装后启动它。
3. 尝试在完整安装完成之前进入游戏的所有区域。

**预期结果** — 初始游玩标记安装必须提供游戏体验(例如教程、玩第一关或在一个游戏模式中进行快速多人比赛)。

**通过示例**

1. 游戏在从初始游玩标记启动时提供游戏体验。

**失败示例**

1. 在安装初始游玩标记后,游戏不提供游戏体验。失败的体验包括:仅显示进度条;播放视频和/或图像序列;仅提供对主菜单的访问;任何其他非交互式体验。

### [XR-129:智能分发内容管理](/publishing/certification/xr/xr-129) \*

支持智能分发的游戏必须在需要当前未安装的内容时优雅地处理场景。游戏可以在需要从光盘或 XBOX 网络安装其他内容时通过在 GDK 中调用 `PackageInstallChunksAsync` 或在 XDK 中调用 `AddChunkSpecifiersAsync` 来实现这一点。

#### 129-01 语言包的智能分发

**所需工具** — 1 台 XBOX One,1 台 XBOX One S,1 台 XBOX One X,1 台 XBOX Series X 开发工具包(使用 XBOX Series X|S 零售控制台模式)。

**测试步骤**

1. 将 XBOX One 控制台设置为支持的语言。
2. 安装游戏。
3. 启动游戏。
4. 浏览游戏,并确保体验与控制台选择的语言相匹配。
5. 如果游戏提供游戏内菜单选项以切换语言,请选择每种语言以安装每个语言块。
6. 对所有支持的语言重复步骤 1-5。
7. 在所有世代的设备上重复步骤 1-6。

**预期结果** — 按预期安装预期的语言包。

**通过示例**

1. 游戏根据控制台语言设置安装预期的语言包。
2. 从菜单选项选择其他语言会安装正确的语言包。
3. 游戏保持稳定,不会崩溃或变得无响应。

**失败示例**

1. 游戏未根据控制台语言设置安装预期的语言包。
2. 从菜单选项选择其他语言时未安装正确的语言包。
3. 游戏崩溃或变得无响应。

#### 129-02 设备特定内容的智能分发

**所需工具** — 与 129-01 相同。

**测试步骤**

1. 将 XBOX One 控制台设置为支持的语言。
2. 安装游戏。
3. 启动游戏。
4. 浏览游戏并确保仅安装了 XBOX One 特定内容。
5. 在所有世代的设备上重复步骤 1-4,并确保安装了所有世代特定内容。
6. 对所有支持的语言重复步骤 1-5。

**预期结果** — 按预期安装预期的设备特定内容。

**通过示例**

1. 游戏安装预期的设备特定内容。
2. 游戏保持稳定,不会崩溃或变得无响应。

**失败示例**

1. 游戏未安装预期的设备特定内容。
2. 游戏崩溃或变得无响应。

#### 129-03 设备特定内容的迁移

**所需工具** — 与 129-01 相同。

**测试步骤**

1. XBOX One 控制台:将 XBOX One 控制台设置为支持的语言。
2. XBOX One 控制台:将游戏安装到外部 USB 设备。
3. XBOX One 控制台:启动游戏。
4. XBOX One 控制台:浏览游戏,并确保仅安装了 XBOX One 特定内容。
5. 将 USB 设备移到 XBOX One X 控制台。
6. XBOX One X 控制台:进行更新以安装 XBOX One X 特定内容。
7. XBOX One X 控制台:启动游戏,并确保游戏优雅地处理其他 XBOX One X 内容的安装。
8. 将 USB 设备移回 XBOX One 控制台。
9. XBOX One 控制台:浏览游戏,并确保游戏优雅地处理两个平台的内容已安装。
10. 在 XBOX Series X 上重复步骤 5-9。

**预期结果** — 按预期安装预期的设备特定内容。

**通过示例**

1. 游戏安装预期的设备特定内容。
2. 游戏保持稳定,不会崩溃或变得无响应。

**失败示例**

1. 游戏崩溃或变得无响应。

#### 129-04 按需内容的智能分发

**所需工具** — 与 129-01 相同。

**测试步骤**

1. 将 XBOX One 控制台设置为支持的语言。
2. 安装游戏。
3. 启动游戏。
4. 安装所有按需内容。
5. 对所有支持的语言重复步骤 1-4。
6. 在所有世代的设备上重复步骤 1-5。

**预期结果** — 按预期安装按需内容。

**通过示例**

1. 游戏按预期安装按需内容。
2. 游戏保持稳定,不会崩溃或变得无响应。

**失败示例**

1. 游戏未按预期安装按需内容。
2. 游戏崩溃或变得无响应。

#### 129-05 功能和配方

**所需工具** — 与 129-01 相同。

**测试步骤**

1. 安装基础游戏,不包含与功能和配方相关的任何可选内容。
2. 浏览游戏的所有区域,尝试访问未安装的内容,并确保游戏保持稳定。
3. 对于在系统 UI 中公开的每个功能,安装该功能并尝试在游戏中访问它,并确保游戏保持稳定。
4. 对于未在系统 UI 中公开的每个功能,通过游戏内 UI 选项安装功能视图,并确保游戏保持稳定。
5. 对于每个配方,确保用户拥有任何相关的商店权益并执行全新安装。
6. 确保配方中包含的任何功能都已安装并可在游戏中访问。

**预期结果** — 当未安装可选内容时,游戏保持稳定,并且已安装可选内容时游戏允许访问该内容。

**通过示例**

1. 未安装可选内容时,游戏保持稳定。
2. 已安装可选内容时,游戏允许访问该内容。

**失败示例**

1. 未安装可选内容时,游戏崩溃或变得无响应。
2. 已安装可选内容时,游戏不允许访问该内容。

### [XR-123:游戏过程中安装/解锁游戏附加内容或消耗品](/publishing/certification/xr/xr-123) \*

提供可下载内容 (DLC) 的游戏必须允许用户下载/解锁并使用内容,而无需终止和重新启动游戏。

#### 123-01 游戏过程中安装/解锁游戏附加内容或消耗品

<Info>
  在零售控制台上,游戏在控制台进入连接待机(使用即时启用关闭)或游戏失去焦点十分钟时被挂起。对于此测试用例,通过启动"设置"应用并将其保持焦点十分钟,在步骤 7 挂起游戏。
</Info>

**测试步骤**

1. 启动游戏并进入活动游戏过程。
2. 从 XBOX 商店发起游戏附加内容或消耗品购买。
3. 允许后台下载完成。
4. 确保用户能够继续玩游戏,并且游戏不受后台下载完成的影响。
5. 确保内容可以在不需要终止和重新启动游戏的情况下使用。
6. 在游戏受约束时下载完成的情况下重复步骤 1-5。
7. 在游戏挂起时下载完成的情况下重复步骤 1-5。
8. 如果游戏支持游戏内商店功能,请使用此功能重复步骤 1-5 以启动附加内容或游戏下载。

**预期结果** — 提供游戏附加内容或消耗品的游戏必须允许用户下载/解锁并使用内容,而无需终止和重新启动游戏。

**通过示例**

1. 用户能够下载并使用内容,而无需终止和重新启动游戏。
2. 游戏通过游戏内提示提示用户返回菜单以加载新的 DLC。

**失败示例**

1. 用户必须终止并重新启动游戏才能使用该内容。

#### 123-02 在流式安装期间安装/解锁作为主游戏包一部分的游戏附加内容或消耗品

**测试步骤**

1. 验证游戏支持游戏附加内容或消耗品。
2. 在完整游戏安装之前安装每种类型的游戏附加内容或消耗品。
3. 开始安装主游戏包,并从初始游玩标记启动(如果支持游玩标记)。
4. 尝试在游戏完成安装之前使用 DLC。

**预期结果** — 用户应该能够看到他们可以访问游戏附加内容或消耗品,如果他们尝试玩,游戏必须允许使用或通知用户游戏必须先完全安装才能使用 DLC。

**通过示例**

1. 用户可以看到他们可以访问该内容。
2. 如果用户尝试玩该内容,他们被通知游戏仍在安装。

**失败示例**

1. 内容不可见。
2. 内容可见,但当用户尝试玩该内容时未给出原因。

### [XR-037:内容包的依赖关系](/publishing/certification/xr/xr-037) \*

用户完成基础游戏的任何主要功能或内容时,不得要求购买附加内容(耐用或消耗品)。可选内容包不得依赖其他可选内容包。也就是说,用户不得为了使用某个内容包而下载额外的内容包。具有与附加内容相关联的独特内容的游戏存档必须仍然可以在基础游戏上加载,或者提供清晰的消息说明为何无法加载。

#### 037-01 基础游戏没有内容包存档游戏依赖

**测试步骤**

1. 登录 XBOX 配置文件并启动游戏。
2. 尝试访问基础游戏的所有功能和内容。验证用户不需要下载任何附加内容。
3. 下载可以在游戏中使用的可用内容包。
4. 加载并使用该内容包,推进足够远以创建基于内容的游戏存档。
5. 返回主页并删除该内容包。
6. 再次启动游戏。
7. 确保存档可以成功加载,并且游戏可以继续,或者用户被清楚地告知为何无法继续。
8. 消息必须清晰,并具体告知用户如何排除故障。
9. 对所有其他支持的内容包重复步骤 1-8。

**预期结果** — 用户必须能够完成基础游戏的任何主要功能和/或内容,而无需购买附加内容。用户删除内容包后,游戏必须正确运行,或者清楚地告知用户为何无法正确运行。

**通过示例**

1. 用户能够完成基础游戏包含的所有功能和内容,而无需购买附加内容。用户删除内容包后,游戏的所有方面都可以无问题地进行。
2. 在由内容包提供的区域内创建存档,然后随后删除该内容包后,游戏清楚地向用户传达需要安装内容\_x\_才能加载游戏存档。游戏还可以查询以查看用户是否有该内容的权益,并且提示用户下载特定内容(如果已拥有),或者如果未拥有则提示用户潜在购买该内容。

**失败示例**

1. 用户被迫购买附加内容才能完成基础游戏中包含的功能或内容。在步骤 3 期间用户下载了内容包 1 和内容包 2 后,如果随后删除内容包 1,则会丢失在游戏中使用内容包 2 的能力。
2. 如果存在内容存档游戏依赖且未安装内容,游戏未清楚地向用户传达需要安装内容才能加载游戏存档。

#### 037-02 没有对其他内容包的依赖

**测试步骤**

1. 登录 XBOX 配置文件。
2. 启动游戏。
3. 下载游戏支持的单个附加内容。
4. 尝试在游戏中使用该内容。
5. 验证用户不需要下载其他内容才能使用步骤 3 中的内容。
6. 退出游戏并删除步骤 3 中的内容。
7. 对游戏支持的每个内容重复步骤 2-6。

**预期结果** — 用户不得为了使用某个内容包而必须下载额外的内容包。内容包必须本身可用。

**通过示例**

1. 游戏不需要用户下载额外内容才能使用单独的内容包。

**失败示例**

1. 要求用户下载额外的内容才能使用单独的内容包。

#### 037-03 DLC 依赖

**测试步骤**

1. 登录 XBOX 配置文件。
2. 下载游戏的可下载内容 (DLC)。
3. 进入游戏并使用 DLC 保存进度。
4. 退出游戏。
5. 从控制台移除 DLC。
6. 启动游戏并尝试访问已保存的进度。

**预期结果** — 如果 DLC 不再安装,游戏能够优雅地处理使用 DLC 创建的游戏存档的存在。

**通过示例**

1. 用户能够加载其已保存的进度并无问题地与游戏进行交互。
2. 用户被通知访问其已保存游戏需要特定 DLC。

**失败示例**

1. DLC 不存在时,游戏变得无法使用。
2. 用户无法访问已保存的进度,并且没有收到关于原因的通知。

#### 037-04 多人游戏 DLC

**测试步骤**

1. 登录 XBOX 配置文件。
2. 启动游戏。
3. 控制台 A:下载所有可用于多人游戏的可下载内容。
4. 控制台 A:使用可下载内容(关卡、角色、汽车、赛道等)托管 XBOX 游戏会话。
5. 控制台 B:使用所有可能的方法尝试加入控制台 A 创建的游戏会话。
6. 如果无法加入游戏会话,请验证给出了清晰的指示,说明或容易推断出为何无法加入。
7. 对所有游戏模式重复步骤 3-6。
8. 以控制台 B 作为主机重复步骤 3-6。

**预期结果** — 支持多人游戏所需可下载内容的游戏必须向未安装可下载内容的用户提供清晰的指示。

**通过示例**

1. 用户在尝试加入有 DLC 要求的会话时,如果不满足要求,则会收到适当的消息,并获得如何解决问题的信息(下载、重新下载等)。
2. 通过使用图标和/或其他屏幕元素,用户在尝试加入有 DLC 要求的会话时,如果不满足要求,则收到清晰的通知,并获得或可以轻易推断出如何解决问题的信息。
3. 满足多人游戏比赛 DLC 要求的用户能够加入会话并游戏。

**失败示例**

1. 不满足多人游戏会话 DLC 要求的用户未获得关于 DLC 要求及如何解决它的清晰视觉指示。
2. 满足多人游戏会话 DLC 要求的用户无法一起加入。

## 从游戏内商店和 Microsoft Store 购买

此类别中的要求指定如何从游戏内商店和 Microsoft Store 购买。

### [XR-036:游戏内定价信息](/publishing/certification/xr/xr-036) \*

游戏内显示的任何现实货币价格,包括但不限于任何促销或基于订阅的折扣,必须来自 XBOX 目录。

#### 036-01 内容价格验证

**测试步骤**

1. 登录 XBOX 配置文件。
2. 启动游戏。
3. 访问游戏中显示价格的所有区域。
4. 验证显示的价格与 XBOX 目录中的价格相符。
5. 终止游戏,并为下一个支持的分发区域重新配置语言、语言区域和位置系统设置。
6. 对所有支持的分发区域重复步骤 1-4。

**预期结果** — 游戏内显示的内容价格应与 XBOX 目录中相同内容的价格相符。

**通过示例**

1. 游戏内显示的价格与 XBOX 目录中的价格一致。

**失败示例**

1. 游戏内显示的价格与 XBOX 目录中的价格不同。

## 用户配置文件

此类别中的要求适用于游戏如何与 XBOX 用户模型、配置文件以及保存用户数据进行交互。

### [XR-112:在初始激活和恢复期间建立用户和控制器](/publishing/certification/xr/xr-112) \*

游戏必须建立一个或多个活动用户以在游戏中充当主要用户,并处理从挂起和受约束模式恢复时的用户。使用 GDK 的游戏通过使用简化或高级用户模型来实现这一点。

**GDK 简化用户模型游戏** — GDK 中的简化用户模型代表游戏处理默认用户获取。游戏仍然负责确保控制器分配给用户并使用该控制器进行游戏输入。如果没有控制器分配给默认用户,游戏应使用 `XUserFindControllerForUserWithUiAsync` 来调用系统对话框以选择控制器并开始接受来自玩家的输入。

**GDK 高级用户模型、ERA 和 UWP 多用户应用程序** — 在初始激活时,游戏可以根据其游戏设计和偏好选择使用启动游戏的用户或显式提示用户来确定初始用户。游戏必须在对该用户配置文件采取第一个配置文件相关操作(例如保存进度或设置)之前指示活动用户。所有使用高级用户模型的 Microsoft 游戏开发工具包 (GDK) 游戏、ERA 和 UWP 多用户应用程序 (MUA) 游戏必须为账户选择器提供入口点以更改活动用户。当游戏从挂起或受约束模式恢复时,游戏必须验证用户/控制器配对,并通过恢复先前用户的会话或获取一个或多个新用户来相应地作出反应。

| 测试用例                | 适用于 GDK 简化用户模型 | 适用于 GDK 高级用户模型、ERA 和 UWP MUA |
| ------------------- | :------------: | :--------------------------: |
| 112-02 初始用户和控制器     |        否       |               是              |
| 112-03 无已登录用户       |        否       |               是              |
| 112-04 活动用户指示       |        是       |               是              |
| 112-05 访问账户选择器      |        否       |               是              |
| 112-06 处理配置文件切换     |        否       |               是              |
| 112-07 受约束模式期间的用户切换 |        否       |               是              |
| 112-08 挂起期间的用户切换    |        否       |               是              |

#### 112-02 初始用户和控制器

**测试步骤**

1. 登录配置文件 A 并启动游戏。
2. 验证活动用户可以控制游戏。
3. 在没有已登录配置文件的情况下重复步骤 1,并验证游戏提示建立活动用户。
4. 建立活动用户,并验证用户可以控制游戏。

**预期结果** — 游戏必须将活动用户设置为启动游戏的控制器/用户配对,或者显示参与提示以标识控制器和用户,或者显示账户选择器以登录。

**通过示例**

1. 游戏将活动用户设置为启动游戏的控制器/用户配对。
2. 游戏显示参与提示以标识控制器和用户。
3. 游戏显示账户选择器以登录。

**失败示例**

1. 游戏不允许用户使用第一个使用的控制器控制游戏。
2. 在没有用户登录时启动时,游戏未提示用户建立活动用户。

#### 112-03 无已登录用户

**测试步骤**

1. 验证没有用户已登录。
2. 启动游戏并进入每种支持保存用户数据的模式。
3. 验证每种模式在发生任何数据丢失之前都为用户提供了登录的机会。
4. 取消登录的机会,并验证游戏提供警告,指示进度不会被保存。

**预期结果** — 如果游戏处于通常保存用户数据或游戏状态的模式,游戏必须为用户提供登录的机会。游戏必须通知用户,如果他们在未登录的情况下继续游戏,他们的进度将不会被保存。

**通过示例**

1. 当访问通常保存用户数据或游戏状态的游戏模式时,未登录的用户被提示登录。
2. 用户被通知,如果他/她在未登录的情况下继续该模式,则进度将不会被保存。

**失败示例**

1. 在通常保存用户数据或游戏状态的模式下,未通知用户,如果他们在未登录的情况下继续该模式,则进度不会被保存。
2. 在数据丢失已发生之后,才通知用户他们无法保存进度。

#### 112-04 活动用户指示

**测试步骤**

1. 登录以前未见过游戏且没有相关存档数据的配置文件。
2. 启动游戏。
3. 验证游戏在执行任何配置文件相关操作之前在 UI 中标识活动用户。
4. 创建存档。
5. 重新启动游戏,并验证游戏在执行任何配置文件相关操作之前在 UI 中标识活动用户。
6. 从 XBOX Live 断开连接。
7. 重新启动游戏,并验证游戏在执行任何配置文件相关操作之前在 UI 中标识活动用户。

**预期结果** — 游戏必须在第一个配置文件相关操作之前指示当前用户上下文。

**通过示例**

1. 游戏在执行任何配置文件相关操作之前在游戏中显示用户的玩家代号和/或游戏图片。
2. 不使用用户配置文件的游戏不指示活动用户。
3. 游戏为支持多用户的游戏模式显示多个活动用户。

**失败示例**

1. 游戏在执行配置文件相关操作之前未指示游戏的活动用户。

#### 112-05 访问账户选择器

**测试步骤**

1. 登录配置文件并启动游戏。
2. 确认游戏允许活动用户在游戏中访问账户选择器并选择不同的配置文件。

**预期结果** — 游戏必须允许用户在游戏中访问账户选择器以更改活动用户。

**通过示例**

1. 游戏允许用户在游戏中访问账户选择器。

**失败示例**

1. 游戏不允许用户访问游戏中的账户选择器。

#### 112-06 处理配置文件切换

**测试步骤**

1. 登录配置文件并启动游戏。
2. 访问账户选择器并选择不同的配置文件。
3. 验证游戏做出适当反应,并将活动用户的上下文切换到新配置文件。
4. 对游戏中可访问账户选择器的每个位置重复步骤 1-4。

**预期结果** — 游戏必须允许用户无缝切换到其他用户的上下文。

**通过示例**

1. 游戏通知用户更改活动用户可能导致数据丢失,并在继续进入账户选择器之前提示用户确认。
2. 游戏适当地更新到新活动用户的上下文。

**失败示例**

1. 游戏未适当地更新到新活动用户的上下文。

#### 112-07 受约束模式期间的用户切换

**测试步骤**

1. 登录配置文件 A 并启动游戏。
2. 在游戏中的不同位置,按 XBOX 按钮以约束游戏。
3. 在游戏受约束时,注销配置文件 A 并登录配置文件 B。
4. 恢复游戏。
5. 验证游戏适当地对新活动用户作出反应。

**预期结果** — 当游戏从受约束模式恢复时,游戏必须验证所有先前参与的用户是否仍然登录到控制台。

**通过示例**

1. 应用在恢复时自动将活动用户上下文切换到配置文件 B。
2. 游戏自动从游戏中删除配置文件 A,或重新建立新用户,并使用该新用户的状态进行游戏。

**失败示例**

1. 游戏未更新以将配置文件 A 从活动用户的上下文中删除。
2. 选择新配置文件后,游戏继续使用配置文件 A 的状态进行游戏。

#### 112-08 挂起期间的用户切换

<Info>
  对于此测试用例,通过启动"设置"应用并将其保持焦点十分钟,在步骤 2 挂起游戏。
</Info>

**测试步骤**

1. 登录 XBOX 配置文件并启动游戏。
2. 在整个游戏的不同位置,挂起游戏。
3. 在游戏挂起时,注销配置文件 A 并登录配置文件 B。
4. 恢复游戏,并验证游戏适当地对新活动用户作出反应。
5. 使用新活动用户进入游戏,并验证用户能够取得进步。

**预期结果** — 当游戏从挂起恢复时,游戏必须验证所有先前参与的用户是否仍然登录到控制台。

**通过示例**

1. 游戏在恢复时自动将活动用户上下文切换到配置文件 B。
2. 游戏自动从游戏中删除配置文件 A,或重新建立新用户,并使用该新用户的状态进行游戏。

**失败示例**

1. 游戏未更新以将配置文件 A 从活动用户的上下文中删除。
2. 选择新配置文件后,游戏继续使用配置文件 A 的状态进行游戏。

### [XR-115:游戏过程中用户或控制器的添加和移除](/publishing/certification/xr/xr-115) \*

支持多用户的游戏必须按以下方式响应用户的添加和移除,或活动玩家没有分配控制器或游戏期间控制器丢失的场景:

**控制器添加** — 在游戏选择或接收初始用户和控制器后,它可以选择接受来自其他控制器的输入。支持多人游戏体验的游戏应考虑如何将额外的玩家或控制器添加到游戏中,并使用 `XUserAddAsync` 绑定到用户。

**控制器移除** — 如果驱动游戏的玩家控制器在游戏中被移除,游戏必须允许重新建立新的活动控制器(例如,"按 A 继续"或接收 ERA 中的 `ControllerPairingChanged` 或 GDK 中的 `XUserDeviceAssociationChangedCallback` 事件,以便活动用户获得有效控制器)。游戏也可以使用 `XUserFindControllerForUserWithUiAsync` 调用系统 UX,以提示用户将控制器配对到其用户并返回游戏。

**用户添加** — 使用 ERA 或 UWP 时,如果新用户登录,游戏可以在游戏支持多用户体验的情况下将用户添加到游戏中,但游戏不得根据新的已登录用户事件自动将活动用户切换到新用户或中断活动用户的体验。使用 GDK 时(使用简化或高级用户模型),仅在游戏调用 `XUserAddAsync` 时添加用户。

**主要用户移除** — 对于使用 ERA 或 GDK 高级用户模型的游戏,如果主要用户注销,游戏必须从游戏中删除玩家或重新建立用户和活动控制器。对于使用 GDK 简化用户模型的游戏,主要玩家被移除会导致游戏在系统级别被挂起。在所有场景中,游戏通过将其游戏置于良好状态来处理移除/关闭。

**附加/次要用户移除** — 游戏可以自行决定处理此事件,通常通过立即将玩家从游戏中删除或提示玩家在正在使用的多人游戏体验的上下文中重新加入。

| 测试用例         | 适用于 GDK 简化用户模型 | 适用于 GDK 高级用户模型、ERA 和 UWP MUA |
| ------------ | :------------: | :--------------------------: |
| 115-01 添加用户  |        否       |               是              |
| 115-02 移除控制器 |        是       |               是              |
| 115-03 移除用户  |        否       |               是              |

#### 115-01 添加用户

**测试步骤**

1. 登录配置文件 A,并确保没有其他配置文件已登录。
2. 启动游戏并进入游戏过程。
3. 在游戏使用的不同时刻,连接第二个控制器并登录配置文件 B。
4. 配置文件 B 尝试向游戏提供控制器输入。

**预期结果** — ERA 或 UWP MUA 游戏不得自动中断活动用户的体验。

**通过示例**

1. 游戏不自动将活动用户切换到新用户或中断活动用户的体验。
2. 游戏可以选择根据当前上下文允许配置文件 B 控制游戏。

**失败示例**

1. 游戏立即将上下文切换到配置文件 B 作为活动用户。

#### 115-02 移除控制器

**测试步骤**

1. 登录配置文件并启动游戏。
2. 在游戏使用的不同时刻,从控制器上取出电池。
3. 更换控制器中的电池,并验证用户可以继续使用游戏。
4. 重复步骤 1-3,但连接第二个控制器而不是更换电池。

**预期结果** — 游戏必须正确响应控制器的移除和添加。

**通过示例**

1. 在移除或添加控制器后,活动用户应能够继续使用游戏。
2. 用户被提示重新建立新的活动控制器。

**失败示例**

1. 用户在移除控制器后无法继续使用游戏。

#### 115-03 移除用户

**测试步骤**

1. 登录配置文件 A,并确保没有其他配置文件已登录。
2. 启动游戏并进入游戏过程。
3. 在游戏使用的不同时刻,注销配置文件 A。
4. 验证游戏调用账户选择器或将用户返回到前端界面。
5. 在可能的情况下,以以下方式与游戏进行交互:
   * 登录配置文件 A,并确保游戏不进一步中断用户的体验。
   * 登录配置文件 B,并确保游戏更新到新用户的上下文。

**预期结果** — 游戏必须从游戏中删除玩家或重新建立用户和活动控制器。如果玩家被从游戏中删除,游戏应处于良好状态。

**通过示例**

1. 游戏将玩家从游戏中删除并返回到前端界面。
2. 游戏允许用户重新建立新用户,并正确更新到相关用户上下文。

**失败示例**

1. 游戏无法对用户状态的变化作出反应。
2. 选择新配置文件后,游戏继续使用配置文件 A 的用户状态。

### [XR-045:XBOX 网络和账户权限](/publishing/certification/xr/xr-045) \*

XBOX 网络为用户及其孩子提供预期的隐私和在线安全水平。为了兑现这一承诺,游戏必须检查 XBOX 网络服务的权限,以便在 XBOX 网络服务或游戏体验中完成某些操作。

尽管权限检查和遵守适用于所有账户,但请特别注意儿童账户的体验和期望。对于儿童账户,某些活动的限制可能会由于基于年龄的默认设置和/或儿童家庭组织者的配置而被阻止。

| **活动**        | **ID** | **权限名称**                            | **备注**                                      |
| ------------- | ------ | ----------------------------------- | ------------------------------------------- |
| 参与多人游戏会话      | 254    | `XPRIVILEGE_MULTIPLAYER_SESSIONS`   | 允许用户与真实用户一起加入在线多人游戏会话。                      |
| 参与跨网络游戏会话     | 185    | `AuthPrivileges.CrossNetworkPlay`   | 允许用户与未登录 XBOX 服务的其他真实玩家参与游戏会话。              |
| 与任何人的通信       | 252    | `XPRIVILEGE_COMMUNICATIONS`         | 允许用户通过语音或文本与任何其他 XBOX 网络用户进行通信。             |
| 共享游戏会话        | 189    | `XPRIVILEGE_SESSIONS`               | 允许用户参与共享环境中的连接单人体验。使用此权限是需要平台批准的游戏功能。       |
| 用户生成的内容 (UGC) | 247    | `XPRIVILEGE_USER_CREATED_CONTENT`   | 允许用户在线查看其他用户的 UGC、下载其他用户的 UGC 或在线分享自己的 UGC。 |
| 分享到社交网络       | 220    | `XPRIVILEGE_SOCIAL_NETWORK_SHARING` | 仅限 XBOX 控制台:允许用户在 XBOX 网络之外分享信息。            |

免费游戏、演示或 beta 可以配置为允许非 Game Pass 订阅者的玩家进行多人游戏 (ID 254)。这是通过服务端配置完成的,可以通过联系您的 Microsoft 代表来发起。这些游戏必须继续检查多人游戏权限,以确保尊重家长控制和玩家选择。

#### 045-01 尊重用户权限

**测试步骤**

1. 登录 XBOX 配置文件并启动游戏。
2. 对于 XR 备注中确定的每个权限,识别游戏是否支持相关活动。
3. 对于步骤 2 中确定的每个适用权限的每个可能设置,执行以下操作:
   * 退出游戏并更改用户的权限设置。
   * 重启控制台。
   * 登录同一配置文件并启动游戏。
   * 访问游戏的所有相关区域,使用与权限相关的所有游戏功能,并验证游戏尊重用户当前的权限设置。
   * 尝试使用 Silver XBOX 配置文件访问所有离线和在线区域。

**预期结果** — 游戏必须尊重用户的权限设置。

**通过示例**

1. 游戏尊重用户的权限设置。
2. 游戏将部分允许的权限设置视为权限已被禁用/不允许。
3. 对于使用 XDK 的游戏,游戏调用系统 UI 提醒用户任何权限冲突。
4. 对于使用 GDK 的游戏,游戏调用系统 UI 提醒用户任何权限冲突。
5. 对于使用 XSAPI 的游戏,游戏显示信息性消息以让用户知道他们无法参与。

**失败示例**

1. 游戏保留了用户的权限设置,在权限更改后未反映用户的实际权限。
2. 游戏将部分允许的权限设置视为其最不严格的设置。
3. 对于使用 XDK 或 GDK 的游戏,游戏使用游戏内消息提醒用户任何权限冲突,并且不显示系统 UI。
4. 对于使用 XSAPI 的游戏,游戏未显示信息性消息。

#### 045-02 尊重用户权限 - XBOX 家庭

**测试设置和配置**

XBOX 家庭,包括以下 Microsoft 账户:

* 指定为组织者的成人(大于 18 岁)。
* 具有\_儿童默认\_权限设置的儿童(小于 13 岁):

| 活动                        | 儿童默认权限设置 |
| ------------------------- | -------- |
| 您可以加入多人游戏                 | 阻止       |
| 您可以加入跨网络游戏                | 阻止       |
| 您可以通过语音、文本或邀请进行通信         | 好友       |
| 您可以通过语音和文本在 XBOX 网络之外进行通信 | 阻止       |
| 您可以查看和上传社区创作              | 阻止       |
| 您可以在 XBOX 之外分享            | 阻止       |

**测试步骤**

1. 登录成人和儿童 Microsoft 账户,并使用儿童账户启动游戏。
2. 对于 XR 备注中确定的每个权限,识别游戏是否支持相关活动。
3. 对于步骤 2 中确定的每个适用权限的每个可能设置,执行以下操作:
   * 验证根据账户权限允许/不允许相关活动。
   * 退出游戏并更改儿童的权限活动的权限设置,即游戏支持的活动;从阻止变为允许。
   * 重启控制台。
   * 登录同一配置文件并启动游戏。
   * 访问游戏的所有相关区域,使用与权限相关的所有游戏功能,并验证游戏尊重用户当前的权限设置。
4. 使用**未**登录控制台的父母账户重复步骤 2-3。

**预期结果** — 游戏必须尊重所有 XBOX 家庭成员的权限设置。

**通过示例**

1. 游戏尊重儿童的权限设置。
2. 当该活动的权限被允许时,游戏允许儿童参与该活动。
3. 当该活动的权限被阻止时,游戏不允许儿童参与该活动。
4. 游戏允许儿童参与被阻止但父母允许该活动权限的活动。
5. 游戏不允许儿童参与被阻止且父母不允许该活动权限的活动。

**失败示例**

1. 游戏不尊重儿童的权限设置。
2. 游戏未调用适当的 UI 来提醒和通知儿童权限冲突。
3. 当该活动的权限被阻止时,游戏允许儿童参与该活动。
4. 当该活动的权限被允许时,游戏不允许儿童参与该活动。

### [XR-046:显示名称和游戏图片](/publishing/certification/xr/xr-046) \*

在 XBOX 控制台上,游戏必须使用玩家代号作为其主要显示名称。

根据设计选择,游戏可以在玩家的现代玩家代号或经典玩家代号之间进行选择。现代玩家代号在 GDK 中可用,经典玩家代号在 ERA 和 GDK 中均可用。

**现代玩家代号** — 显示唯一现代玩家代号的所有 16 个字符,其中包括最多 12 个字符的现代玩家代号,后跟 # 和后缀号(如果存在)。例如:Major Nelson(不存在后缀)或 Major Nelson#881。如果使用现代玩家代号,必须支持所有现代玩家代号可用的 Unicode 字符范围。

**经典玩家代号** — 正确显示经典玩家代号的所有 15 个字符。经典玩家代号仅包括 ASCII 字符 a-z、A-Z、0-9、逗号 (,) 和空格。例如:Major Nelson。

在 GDK 中,这些项使用 `XUserGetGamertag` API 返回。在 ERA 中,玩家代号是通过 `GetUserProfileAsync` API 获取的。

#### 046-01 显示名称和游戏图片

**所需工具** — 来自 GDK 的 *XblTestAccountGui.exe*。

**准备工作** — 为以下每个名称创建四个测试账户,并使用 *XblTestAccountGui.exe* 将每个测试账户的玩家代号更改为以下内容:

* **สฐ众нь컴퓨퓨**
* **आथाώঙぁヺ**
* **øÜêþЯЂў**
* **gttest1**

**测试步骤**

1. 找到并查看游戏中显示玩家代号的位置。
2. 检查步骤 1 中确定的所有区域中用户的玩家代号如何显示。
3. 如果游戏显示用户的图片,请验证是否为每个账户显示了正确的 Microsoft 账户图片或游戏图片。

**预期结果** — 必须正确显示用户的玩家代号。

**通过示例**

1. 使用现代玩家代号时,玩家代号正确显示 Unicode 字符(包括自动生成的后缀)。
2. 使用经典玩家代号时,玩家代号显示正确。

**失败示例**

1. 由于 Unicode 字符显示为空白字符,玩家代号根本没有呈现。
2. 使用经典玩家代号时,玩家代号未正确显示。

### [XR-047:用户配置文件访问](/publishing/certification/xr/xr-047) \*

游戏必须在枚举用户显示名称的任何地方,为用户提供访问其他 XBOX 网络用户的玩家卡(用户配置文件)的选项。

#### 047-01 用户配置文件访问

**测试步骤**

1. 设备 1 和 2:启动游戏。
2. 设备 1 和 2:登录 XBOX 配置文件。
3. 设备 1:设置一个 XBOX 多人游戏会话。
4. 设备 2:查找并加入设备 1 创建的游戏会话。
5. 设备 2 加入游戏会话后,验证以下内容:
   * 从游戏前大厅,通过选择玩家代号或用户名访问另一个 XBOX 用户的玩家卡。
   * 在游戏过程中,尝试通过选择用户的用户名或玩家代号访问另一个 XBOX 用户的玩家卡。
   * 从游戏后统计屏幕,通过选择用户的用户名或玩家代号访问另一个 XBOX 用户的玩家卡。
   * 从排行榜区域,访问另一个 XBOX 用户的玩家卡。
   * 查找列出玩家代号的其他任何区域,并尝试访问另一个 XBOX 用户的玩家卡。

**预期结果** — 用户预期能够查看其他 XBOX 用户的玩家卡信息。

**通过示例**

1. 在显示玩家代号且启用了界面导航的所有位置,用户能够访问另一个 XBOX 用户的玩家卡。
2. 无论是否启用了界面导航,用户都能够在排行榜、会话大厅、游戏后统计以及其他游戏内菜单中访问另一个 XBOX 用户的玩家卡。

**失败示例**

1. 在显示玩家代号且可以进行界面导航的任何位置,用户无法访问另一个 XBOX 用户的玩家卡。
2. 无论是否启用了界面导航,用户都无法在排行榜、会话大厅、游戏后统计以及其他游戏内菜单中访问另一个 XBOX 用户的玩家卡。

### [XR-048:配置文件设置使用](/publishing/certification/xr/xr-048) \*

XBOX 网络是 XBOX 用户配置文件信息的事实来源。为支持这一点,游戏不得将从 XBOX 网络获取的用户信息(如配置文件数据、偏好或玩家代号)存储在超出旨在支持网络断开场景的本地存储缓存的范围之外。任何离线缓存必须在下一次可用的服务连接时更新。

#### 048-01 配置文件设置使用

**配置** — 2 台 XBOX 设备。

**测试步骤**

1. 选择一个配置文件并创建存档。
2. 更改用户配置文件数据,包括更新玩家代号或账户名称。
3. 启动游戏并加载步骤 2 中创建的存档。
4. 验证游戏中可见的用户配置文件数据已发生变更,并且没有存储在存档中。
5. 验证对玩家代号的任何引用(由游戏自动创建)都已更新。这包括服务器托管功能上的任何引用以及游戏内的任何引用。
6. 在第二台设备上启动游戏,并验证更新后的玩家代号正确显示。

**预期结果** — 不得存储用户配置文件数据。例如,如果游戏在游戏内(如欢迎消息中)或在非 XBOX 服务器上(如命名上传的数据)使用玩家代号,则在用户更改玩家代号时它必须不会保留。这不适用于用户手动输入玩家代号的情况。

**通过示例**

1. 用户配置文件数据和偏好设置在更改后在所有显示中都得到更新。

**失败示例**

1. 对于本地存储的存档数据(如回放、存档、选项、地图和队伍),游戏未在游戏内或 XBOX Home 上显示用户更新后的玩家代号或 Microsoft 账户名称。
2. 游戏未在持久性发布内容(如游戏片段、回放、排行榜或其他自定义发布)中更新用户的玩家代号。这适用于新的和先前创建的发布内容。
3. 游戏为用户的存档数据存储用户的玩家代号,导致如果用户更改玩家代号或账户名称,存档数据变得无法使用。

### [XR-052:用户状态和游戏存档位置、漫游和依赖项](/publishing/certification/xr/xr-052) \*

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

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

* 在同一平台内(XBOX 控制台)。
* 在同一平台上的设备之间(例如,XBOX One 和 XBOX One S)。
* 跨设备平台世代(例如,XBOX One 和 XBOX Series X|S)。
* 在 Windows 平台上跨 PC。
* 在 Windows 平台上的 PC 与 XBOX 控制台平台之间,不要求游戏存档漫游,但建议支持。
* 对于非 Microsoft 平台(iOS、Android、Switch、PlayStation®),不要求游戏存档漫游,但建议支持。

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

<Info>
  对于此测试用例,通过启动"设置"应用并将其保持焦点十分钟,在步骤 2 挂起游戏。
</Info>

**测试步骤**

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 中使用的相同平台/世代的第二台设备上使用步骤 1 中使用的相同配置文件登录。从步骤 1 启动同一游戏,并验证所有已保存的游戏及任何设置和/或配置文件可以正确访问和加载,并且它们对共享内容没有任何依赖。
5. 对于跨世代在同一平台上使用相同 TitleID 的游戏(XBOX One 和 XBOX Series X|S),重复步骤 4。
6. 对于在 Windows 平台上使用相同 TitleID 的 PC 游戏,重复步骤 4。
7. 如果支持,对于跨平台使用相同 TitleID 的游戏,在其他支持的平台上启动步骤 1 中的相同游戏并验证。

**预期结果** — 游戏存档进度必须与用户配置文件关联,并且当用户登录到 XBOX 服务时,必须在类似的设备/平台之间漫游。

**通过示例**

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

**失败示例**

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

## 成就和奖励

以下要求适用于在 XBOX 网络上提供成就的游戏。所有针对 XBOX 控制台的游戏都必须具有成就,并满足以下要求。演示版不允许具有成就;但是,可以选择支持 Hero Stats。

### [XR-055:成就和玩家分数](/publishing/certification/xr/xr-055) \*

游戏必须在发布时提供所需数量(最小和最大)的成就及其相关的玩家分数。允许游戏在发布后随时添加成就或玩家分数,无论是否有相应的新内容,但不能超过基于游戏或基于日历的限制。

单项成就不能超过 200 玩家分数,游戏中的所有成就都必须可实现。

在基础游戏或内容更新中解锁成就必须代表对游戏内容的深入探索或参与。

| 项目   | 发布   | 半年度添加 | 终身限制 |
| ---- | ---- | ----- | ---- |
| 最少成就 | 10   | 0     | 10   |
| 最多成就 | 100  | 100   | 500  |
| 玩家分数 | 1000 | 1000  | 5000 |

<Note>
  "半年度"是指 1 月至 6 月、7 月至 12 月。基础游戏的成就和玩家分数不计入半年度限制。
</Note>

#### 055-01 成就

**测试步骤**

1. 查看游戏支持的玩家分数量和成就总数。
2. 通关游戏并尝试获得尽可能多的成就。
3. 从连接待机恢复后重复步骤 2。
4. 在与 XBOX 服务断开连接时重复步骤 2。

**预期结果** — 所有成就根据其条件解锁,基础游戏发布的最大可能玩家分数为 1000G,分布在 10-100 个成就中。所有成就代表对游戏内容的深入探索或参与。

**通过示例**

1. 可以获得所有成就。
2. 成就按其条件解锁。
3. 所有成就代表对游戏内容的深入探索或参与。
4. 游戏的发布版本具有 1000 玩家分数,分布在 10-100 个成就中。

**失败示例**

1. 满足条件时成就未解锁。
2. 成就在满足条件之前解锁。
3. 成就不代表对游戏内容的深入探索或参与。
4. 所有成就都可以在游戏开始几分钟内解锁。
5. 除非作为核心游戏循环的一部分需要,否则可以在几乎没有用户输入的情况下解锁成就。
6. 游戏的发布版本没有 1000G。
7. 游戏的发布版本有超过或少于 10-100 个成就。
8. 从连接待机恢复后成就未解锁。
9. 单项成就超过 200 玩家分数。
10. 重新连接到 XBOX 服务后成就未解锁。

### [XR-057:解锁成就](/publishing/certification/xr/xr-057) \*

游戏必须提供一种方式,让用户可以获得基础游戏定义的所有成就,而无需购买额外的游戏内内容。

成就必须通过游戏内操作、游戏过程和/或体验解锁。

游戏不得为玩家提供直接解锁成就的替代选项,而不需要相应的游戏活动。不允许的选项的非详尽列表:

* 真实货币购买
* 游戏内作弊代码、控制台或菜单选项

这些选项可用于降低解锁成就所需的游戏难度。

#### 057-01 基础成就无需额外购买

**测试步骤**

1. 查看基础游戏的成就描述。
2. 验证它们不需要额外的购买或内容。
3. 获得所有成就。

**预期结果** — 所有成就都可以在不需要购买额外游戏内内容的情况下获得。

**通过示例**

1. 所有成就都可以在不需要购买额外游戏内内容的情况下获得。
2. 没有成就需要额外的游戏内内容。

**失败示例**

1. 要求用户购买额外的游戏内内容才能解锁基础游戏定义的成就。

## 多人游戏会话

此类别中的要求涉及在 XBOX 上提供多人游戏会话的游戏。XBOX 提供了一种一致且简单的方式来查找多人游戏会话并微调用于查找这些会话的参数。

### [XR-064:可加入的游戏会话和在线游戏](/publishing/certification/xr/xr-064) \*

在 XBOX 控制台上,提供可加入游戏会话的游戏必须通过 XBOX shell 界面启用可加入性。

从使用 XBOX 登录的 PC 设备提供与 XBOX 控制台的跨平台多人游戏的游戏,也必须通过 Game Bar 体验启用加入。

#### 064-01 从游戏外部加入游戏会话

**配置**

* 两个 XBOX 配置文件
* 设备 1 配置文件 A — 与配置文件 B 是好友
* 设备 2 配置文件 B — 与配置文件 A 是好友

<Info>
  对于此测试用例,通过启动"设置"应用并将其保持焦点十分钟,在步骤 5 挂起游戏。
</Info>

**测试步骤**

1. 使用配置文件 A 创建一个可加入的游戏会话。
2. 使用未运行游戏的配置文件 B,通过 XBOX shell 界面访问好友列表,并验证配置文件 A 列为可加入。某些游戏可能仅支持私人多人游戏会话,因此不会对配置文件 B 显示为可加入,在这种情况下,请跳到步骤 6。
3. 配置文件 B 加入配置文件 A 的游戏。
4. 确认两个配置文件一起被放入游戏体验。
5. 在游戏处于挂起状态时,使用配置文件 B 重复步骤 1-4。
6. 重复步骤 1-5,但这次不是配置文件 B 通过好友列表加入,而是让配置文件 A 通过系统 shell 向配置文件 B 发送游戏邀请,并确保配置文件 B 能够接收、接受和加入配置文件 A。

**预期结果** — 用户 B 必须能够加入用户 A 的游戏,并一起进入游戏体验。对于仅支持私人多人游戏会话的游戏,邀请可以是加入配置文件 A 的唯一机制。对于仅支持通过匹配加入会话的多人游戏会话(例如排位赛),不支持通过 XBOX shell 界面加入是可以接受的。对于支持跨平台多人游戏的游戏,用户必须能够在 XBOX One 控制台和 PC 之间加入。

**通过示例**

1. 两个配置文件一起被放入游戏体验。
2. 用户 B 能够加入用户 A 的游戏,并一起进入游戏体验。
3. 由于游戏仅支持私人多人游戏会话,用户 A 未在 XBOX shell 界面的好友列表中显示为可加入,但用户 A 可以通过系统 shell 向用户 B 发送游戏邀请。
4. 用户 A 在参与仅支持通过匹配加入的会话时,不显示为可加入,并且无法通过 XBOX shell 界面发送游戏邀请。

**失败示例**

1. 用户 B 无法成功加入用户 A 的游戏,也未被放入游戏体验。
2. 由于游戏仅支持私人多人游戏会话,用户 A 未在 XBOX shell 界面的好友列表中显示为可加入,并且用户 A 无法通过系统 shell 向用户 B 发送游戏邀请。

#### 064-02 从同一游戏内加入游戏会话

**配置** — 与 064-01 相同。

**测试步骤**

1. 使用配置文件 A 启动游戏,并在游戏内创建一个可加入的游戏会话。
2. 使用配置文件 B 启动同一游戏,并进入游戏内的某些体验。
3. 使用配置文件 B,通过 XBOX shell 界面访问好友列表,并选择加入配置文件 A 的游戏。某些游戏可能仅支持私人多人游戏会话,在这种情况下,请跳到步骤 5。
4. 确认两个配置文件一起被放入游戏体验。
5. 重复步骤 1-4,但这次不是配置文件 B 通过好友列表加入,而是让配置文件 A 通过系统 shell 向配置文件 B 发送游戏邀请,并确保配置文件 B 能够接收、接受和加入配置文件 A。

**预期结果** — 与 064-01 相同。

**通过示例** — 与 064-01 相同。

**失败示例** — 与 064-01 相同。

#### 064-05 不可加入的游戏

**配置**

* 3 个 XBOX 配置文件,每个登录到不同的设备
* 设备 1 配置文件 A — 与配置文件 B 和 C 是好友
* 设备 2 配置文件 B — 与配置文件 A 是好友
* 设备 3 配置文件 C — 与配置文件 A 是好友

**测试步骤**

1. 使用配置文件 A 启动游戏,并创建一个可加入的游戏会话。
2. 使用配置文件 A,邀请配置文件 B 和 C 参加游戏。
3. 使用配置文件 A,进入一个游戏会话,以便在 A 加入后仅剩一个可用位置。
4. 使用配置文件 B,接受邀请。
5. 确认配置文件 A 和 B 一起玩。
6. 使用配置文件 C,接受邀请并尝试加入游戏会话。

**预期结果** — 配置文件 C 被要求等待到下一次加入的机会,或者配置文件 C 收到关于无法加入游戏会话的原因的消息。

**通过示例**

1. 配置文件 C 被要求等待到下一次加入的机会。
2. 配置文件 C 收到关于无法加入游戏会话的原因的消息。

**失败示例**

1. 配置文件 C 未被要求等待到下一次加入的机会,并且未收到关于无法加入的消息。

### [XR-067:维护多人游戏会话状态](/publishing/certification/xr/xr-067) \*

在 XBOX 控制台上,具有在线多人游戏功能的游戏必须在 XBOX 网络上维护会话状态信息。游戏通过 XBOX 多人游戏会话目录 (MPSD) 执行此操作,或者如果游戏有自己的多人游戏会话状态功能,它们可以选择使用多人游戏活动最近玩家功能记录玩家交互。

在 XBOX 控制台以外的设备上,提供与 XBOX 控制台跨平台多人游戏的游戏必须在 XBOX 多人游戏会话目录 (MPSD) 中维护会话状态信息。

#### 067-01 维护会话状态

**测试步骤**

1. 登录 XBOX 配置文件,并在多台设备上启动游戏。
2. 与所有玩家完成 XBOX 游戏会话。
3. 返回主页并查看"最近玩家"列表,以验证游戏会话中的所有玩家都已包含。
4. 重复步骤 1-3 数次,但这次每次使用新账户。
5. 重复步骤 1-4,但这次让一个或多个玩家在游戏过程中离开,并确保他们的配置文件仍出现在步骤 2 期间的"最近玩家"列表中。

**预期结果** — 用户必须能够查看每个最近玩过的游戏会话中的所有玩家。

**通过示例**

1. 所有配置文件都包含在设备的"最近玩家"列表中。

**失败示例**

1. 并非所有配置文件都包含在设备的"最近玩家"列表中。
2. 在多人游戏中退出的用户不会出现在"最近玩家"列表中。

### [XR-070:好友列表](/publishing/certification/xr/xr-070) \*

游戏必须使用 XBOX 网络好友列表作为主要好友列表。游戏必须从 XBOX API 获取好友列表,且不得在游戏服务器上永久存储好友列表。

游戏可以显示来自中央游戏账户的辅助好友列表,以便显示不在 XBOX 网络上或不在用户 XBOX 网络好友列表中的玩家。根据设计,游戏可以创建一个包含 XBOX 网络和发行商账户好友的中心位置的混合好友列表体验;必须使用图标或其他澄清标记来区分 XBOX 好友和其他网络上的好友。

#### 070-01 XBOX 好友列表

**测试步骤**

1. 找到游戏中显示的任何人员列表,并验证它们包含 XBOX 网络好友列表。
2. 如果游戏支持包含 XBOX 网络和发行商账户好友的混合好友列表,请验证它们使用图标或其他澄清标记加以区分。

**预期结果** — 游戏必须使用 XBOX API 使用 XBOX 网络好友列表作为主要好友列表,并且不得在游戏服务器上永久存储它们。显示混合好友列表时,游戏必须区分好友。

**通过示例**

1. 游戏使用 XBOX API 使用 XBOX 网络好友列表作为主要好友列表。
2. 游戏有另一个人员列表,例如最近玩家或公会成员,他们不作为用户的核心列表定位。
3. 游戏显示筛选为仅显示玩过该游戏的好友的好友列表。
4. 游戏显示包含 XBOX 网络和发行商账户好友的混合好友列表,并使用图标或其他澄清标记加以区分。

**失败示例**

1. 游戏未使用 XBOX API 显示好友列表。
2. 游戏在游戏服务器上永久存储好友列表。
3. 游戏显示包含 XBOX 网络和发行商账户好友的混合好友列表,但未加以区分。

### [XR-124:游戏邀请](/publishing/certification/xr/xr-124) \*

支持可加入多人游戏体验的游戏必须允许玩家使用 XBOX 网络平台从游戏内向其他 XBOX 网络用户发送游戏邀请,包括存在跨网络玩家的场景。

#### 124-01 游戏邀请

**配置**

* 两个 XBOX 配置文件,每个登录到不同的设备
* 设备 1 配置文件 A — 与配置文件 B 是好友
* 设备 2 配置文件 B — 与配置文件 A 是好友

<Info>
  对于此测试用例,应在步骤 5 中验证两种方法。
</Info>

**测试步骤**

1. 将用户 A 和 B 登录到各自的设备。
2. 两个用户启动游戏。
3. 用户 A 创建一个游戏会话,并找到游戏内发送邀请的选项。
4. 用户 A 向用户 B 发送游戏邀请。
5. 配置文件 B 从以下每个区域接受邀请以加入配置文件 A 的游戏会话:
   * 从初始启动序列到初始交互状态的任何位置
   * 主菜单(如有)
   * 单人游戏过程中(如有)
   * 多人游戏过程中(如有)
   * 在主菜单上处于挂起状态时(如有)
   * 在单人游戏中处于挂起状态时(如有)
   * 在主菜单上处于受约束状态时(如有)
   * 在任何游戏过程中处于受约束状态时(如有)
6. 确认每次邀请后两个配置文件一起被放入游戏体验。

**预期结果** — 支持可加入多人游戏体验的游戏必须允许玩家从游戏内向其他 XBOX 用户发送游戏邀请。配置文件 B 应能够通过邀请加入由配置文件 A 托管的会话。游戏可以限制谁可以向会话发送邀请(例如,只有团队游戏中的团队队长)。游戏不需要对这种情况采取破坏性操作的确认方法。对于支持跨平台多人游戏的游戏,用户必须能够通过邀请在 XBOX One 控制台和 PC 之间加入会话。

**通过示例**

1. 游戏具有游戏内选项,允许玩家为可加入的会话发送游戏邀请。
2. 玩家在游戏中接受游戏邀请时不会收到破坏性操作的确认消息。
3. 邀请完成,但当控制台上不存在所需的 DLC 时,无法启动/发起会话。这会清楚地告知玩家。
4. 只有游戏会话的主机可以发送邀请,如果主机是谁明确的。

**失败示例**

1. 游戏没有允许玩家为可加入的会话发送游戏邀请的游戏内选项。
2. 游戏在 XBOX 上提供多人游戏会话,但不包含支持游戏邀请的任何游戏模式。
3. 在接受游戏邀请后,活动玩家未被带入其被邀请的游戏会话。
4. 当控制台上不存在所需的 DLC 时,邀请未完成。这未告知玩家。

## Beta 和游戏预览

此类别中的要求仅适用于归类为 beta 或游戏预览的游戏。

Beta 和游戏预览游戏受本文档中提供的 XR 子集的约束。此子集的范围详见 [XBOX 游戏预览和 Beta 要求页面](/publishing/certification/cert-beta-game-preview)。

### [XR-117:Beta/游戏预览通知](/publishing/certification/xr/xr-117) \*

处于 beta 阶段的游戏必须具有启动画面或消息,在启动后但在游戏或应用程序使用之前显示,并在体验中传达:

* 该游戏是 beta/预发布软件。
* 某些平台功能可能无法正常工作。
* 某些游戏功能可能无法正常工作,可能会崩溃。

通知还必须概述游戏的支持范围。

#### 117-01 向用户提供 Beta/游戏预览通知

**测试步骤**

1. 登录 XBOX 配置文件并启动游戏。
2. 验证在用户能够参与游戏或应用程序使用之前,至少显示以下消息:
   * 该游戏是 beta/预发布软件。
   * 某些平台功能可能无法正常工作。
   * 某些游戏功能可能无法正常工作,可能会崩溃。
   * 通知还必须概述游戏的支持范围。

**预期结果** — 游戏必须向用户传达该游戏是 beta/预发布,可能无法完全按预期运行。

**通过示例**

1. 用户在能够与游戏中的功能进行交互之前被通知游戏的 beta/预发布状态。

**失败示例**

1. 游戏未显示通知用户游戏 beta/预发布状态的消息。
2. 用户能够在看到有关 beta/预发布状态的游戏通知之前访问游戏功能。

## BVT:构建的预认证测试

以下测试用于检查游戏是否已准备好进行 XBOX 认证测试。

#### BVT-01 构建稳定性

**测试步骤**

1. 启动游戏,浏览所有菜单并进入游戏。
2. 尝试重现执行其他 BVT 时发现的稳定性问题。

**预期结果** — 游戏必须没有稳定性问题或阻止游戏进行完整 XR 测试的长加载时间。

#### BVT-02 匹配

**测试步骤**

1. 控制台 1:选择最基本的 XBOX 游戏模式并托管 XBOX 游戏会话。
2. 控制台 2:使用快速匹配加入控制台 1 的 XBOX 游戏会话。(重复此步骤,直到最小数量的控制台加入以开始游戏会话。)
3. 控制台 1 和 2:启动并完成 XBOX 游戏会话。
4. 验证匹配是否有效,以及用户可以在所有其他支持的游戏模式中进入游戏。

**预期结果** — 控制台 2 应始终能够定位并加入控制台 1 的游戏会话。两台控制台应能够在不断开连接或遇到稳定性问题的情况下完成 XBOX 游戏会话。

#### BVT-03 DLC

**测试步骤**

1. 验证与游戏一起提交的可下载内容可以使用 XBOX 商店或游戏内机制下载。
2. 下载后,验证可以在游戏中轻松识别内容。

**预期结果** — 与游戏一起提交的可下载内容必须可以使用 XBOX 商店或游戏内 UI 下载,并且一旦下载,应该在游戏中易于识别。

#### BVT-05 语言

**测试步骤**

1. 通过 XBOX 设备"设置"应用,将语言设置为英语。
2. 进入游戏。
3. 验证游戏不崩溃或进入无响应状态,在屏幕上不输出任何调试,并在所有预期区域实现本地化。
4. 对游戏支持的所有语言重复步骤 1-3。

**预期结果** — 游戏包含所有支持的语言。游戏还应不包含特定于语言的稳定性问题或调试。

#### BVT-07 基本配置

**测试步骤**

1. 启动游戏并确保所有 BVT 功能检查不需要更改控制台设置(如时间/日期)才能工作。
2. 验证无需变通方法即可到达游戏的主菜单。

**预期结果** — 当游戏进入认证时,预期基本功能可以正常工作。

#### BVT-08 XBOX 商店可用性

**所需工具** — 游戏已发布到您的开发者沙盒以及 CERT 和 CERT.DEBUG 沙盒。

**测试步骤**

1. 将游戏发布到您的开发者沙盒。
2. 从商店安装游戏。
3. 启动游戏并进入游戏。

<Warning>
  提交到认证时,请将游戏发布到 CERT 和 CERT.DEBUG 沙盒。
</Warning>

**预期结果** — 游戏必须能够从 CERT 和 CERT.DEBUG 沙盒安装。

#### BVT-09 重新提交的条件

**测试步骤**

1. 重现游戏最新认证报告中记录为 CFR 的所有问题。
2. 验证所有记录为 CFR 的问题都已修复。任何可以重现的问题都必须有已批准的例外。

**预期结果** — 除非授予例外,否则先前报告中标记为 CFR 的问题必须已修复。

#### BVT-10 版本检查

**测试步骤**

1. 安装游戏。
2. 进入"我的游戏与应用",突出显示游戏,按"菜单"按钮并选择"管理游戏和附加内容"。
3. 选择"文件信息"。
4. 将已安装产品的 FullName 与提交文档/启动邮件中列出的包名称进行比较。

**预期结果** — 已安装 XVC 的 FullName 与启动邮件/提交文档中记录的完全一致。

#### BVT-12 合作伙伴托管的服务

**测试步骤**

1. 登录 XBOX 配置文件并启动游戏。
2. 验证所有合作伙伴托管的服务都可以访问。

**预期结果** — 所有合作伙伴托管的服务都配置为进行测试,并且所有依赖它们的功能都可以访问。

#### BVT-13 年龄分级验证

**配置**

1. 游戏必须是 Final(基础或内容更新)。Final(基础/内容更新)— 需要证书的所有区域设置都需要证书。超出范围 — DLC、游戏内内容 — 无需测试。
2. 可供审查的提交材料。
3. 访问 Microsoft 合作伙伴中心中的产品年龄分级。

**测试步骤**

1. 验证以下文件/信息可用:提交的 XVC 的提交验证器日志;合作伙伴中心的年龄分级声明;年龄分级证书。
2. 打开提交验证器日志文件,并确保不显示 `<component>Manifest-Ratings</component>` 测试的警告或失败。对于 2020 年 5 月 11 日之后认证的所有游戏:AppxManifest 中不得存在分级元素。对于 2020 年 5 月 11 日之前认证的游戏:AppxManifest 中允许存在分级元素。
3. 打开合作伙伴中心以查看产品的年龄分级信息。对于显示的每个值,验证已提供与年龄分级完全匹配的相应分级证书。

**预期结果**

1. 必须提供所有文件,并与此提交类型相关。
2. 所有分级必须提供相应的证书。
3. 2020 年 5 月 11 日之后认证的基础最终提交不得在 AppxManifest 中定义年龄分级元素。
4. 在 2020 年 5 月 11 日之前认证的游戏的内容更新不得在 AppxManifest 中添加或删除分级,除了完全删除分级元素。

#### BVT-14 UWP 服务配置验证

**配置** — 游戏必须是 UWP 提交。

**测试步骤**

1. 登录以前未访问过游戏的 XBOX 配置文件。
2. 启动游戏。
3. 确保用户被提示接受 XBOX 账户权限。
4. 在主菜单或前端菜单上,运行以下命令 `xbdir "XS:\Program Files\WindowsApps\{XVC}\"` 并搜索"xboxservices.config"文件。

**预期结果** — 游戏的服务配置必须为测试进行配置。

**通过示例**

1. 游戏包含服务配置文件,新用户被提示接受 XBOX 账户权限。

**失败示例**

1. 服务配置文件不存在。
2. 服务配置文件存在,但为 0 字节。
3. 新用户未被提示接受 XBOX 账户权限。

#### BVT-15 智能分发

**测试步骤**

1. 获取游戏的 XVC,并使用 `packageutil chunkinfo [XVC] > chunkinfo.xml` 命令生成 Chunkinfo.xml 文件。
2. 使用生成的 chunkinfo.xml 确定游戏是否支持智能分发。
3. 如果支持智能分发,使用 `xbapp install /[Chunk Parameter] [XVC]` 命令为以下每种情况开始全新安装:
   * 使用参数 `/Languages=` 的语言包(切换到另一个支持的语言块,并使用系统设置或游戏内语言选项下载其他语言包)
   * 使用参数 `/Devices=` 的设备特定内容
   * 使用参数 `/ContentTypes=` 的内容类型
   * 使用参数 `/Tags=` 的按需内容

**预期结果** — 游戏正确安装预期的智能分发块,并且没有遇到任何不利影响。

## 控制台测试台布局

控制台测试台布局包括来自所有 XBOX 控制台平台和世代的设备。这种全面的设置确保测试涵盖广泛的配置,以维持兼容性和性能标准。有关控制台平台和世代的详细要求,请参阅 [XR-130:XBOX 控制台系列和世代](/publishing/certification/xr/xr-130)。

下表提供了测试台中使用的各种控制台设置和配置的概览。

| 设置      | 控制台 1                      | 控制台 2                      | 控制台 3                        | 控制台 4                             | 控制台 5                      |
| ------- | -------------------------- | -------------------------- | ---------------------------- | --------------------------------- | -------------------------- |
| 设备      | XBOX One / XBOX Series X   | XBOX One X / XBOX Series S | XBOX One S / XBOX Series X   | XBOX Series S                     | XBOX Series X              |
| 控制台类型   | 零售                         | 零售                         | 零售                           | 零售                                | 零售                         |
| 显示分辨率设置 | 720p                       | 4k                         | 1080p                        | 1080p                             | 720p                       |
| 色深      | 24 位                       | 36 位                       | 30 位                         | 24 位                              | 30 位                       |
| HDR     | 不适用                        | 4 小时后交替                    | 不适用                          | 不适用                               | 不适用                        |
| 色彩空间    | PC                         | 标准                         | PC                           | 标准                                | 标准                         |
| 音频      | 立体声                        | 5.1 位流                     | 立体声                          | 耳机 - Windows Sonic for Headphones | 立体声                        |
| 控制器     | 1 个无线控制器                   | 1 个无线控制器                   | 4 个无线控制器                     | 1 个无线控制器                          | 2 个无线控制器                   |
| 控制台语言   | 语言 1                       | 英语                         | 语言 2                         | 语言 3                              | 语言 4                       |
| 电源设置    | 即时启用                       | 即时启用                       | 节能                           | 即时启用                              | 节能                         |
| 存储设备    | 内部 HDD                     | 内部 HDD                     | 内部 HDD                       | USB HDD                           | USB HDD                    |
| 安装方法    | 数字下载                       | 数字下载                       | 光盘(如可用)                      | 数字下载                              | 数字下载                       |
| 账户类型    | Game Pass Core - 我的主机 XBOX | Game Pass Core - 我的主机 XBOX | 非 Game Pass Core - 我的主机 XBOX | Game Pass Core - 我的主机 XBOX        | Game Pass Core - 我的主机 XBOX |
| 游戏设置    | 与默认设置相反                    | 默认游戏设置                     | 每 30 分钟或每关卡后更改设置             | 选项应设置为第一四分位                       | 选项应设置为第三四分位                |

## 此版本中的更改

| 日期             | 文档版本     | 更改描述                                                                                                                                                                                    |
| -------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026 年 7 月 1 日 | 控制台:16.2 | 删除了 **XR-083 提交验证器**,并将该要求移到 [XR-003 提交游戏质量](/publishing/certification/xr/xr-003)。作为非测试 XR,没有相应的测试用例。如果提交验证器失败需要例外,请在 XR-003 下记录。重新添加了测试用例 052-05 正确的用户关联到控制台 XR 和测试用例页面,因为在上次更新中被意外删除。 |
