> ## 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-115 在游戏中添加和移除用户或控制器

> XR-115 要求多用户游戏在游戏过程中处理控制器和用户的添加/移除事件，保留状态并让玩家回到游戏中。

# XR-115：在游戏期间添加和移除用户或控制器 \*

版本 1.1，2021 年 5 月 1 日

支持多用户的游戏必须按如下方式响应用户的添加与移除、活动玩家没有分配控制器的情形，或游戏期间控制器丢失的情形：

**添加控制器：** 在游戏选择或被提供初始用户和控制器后，游戏可以选择接受来自其他控制器的输入。支持多人体验的游戏应考虑如何将额外的玩家或控制器添加到游戏中，并通过 `XUserAddAsync` 将其绑定到用户。例如，"按 A 键加入"或在玩家选择屏幕上显示控制器剪影。

**移除控制器：** 如果驱动游戏的玩家控制器在游戏过程中被移除，游戏必须允许重新确立新的活动控制器（例如，"按 A 键继续"，或在 ERA 中接收 `ControllerPairingChanged`，或在 GDK 中为具有有效控制器的活动用户接收 `XUserDeviceAssociationChangedCallback` 事件）。游戏也可以使用 `XUserFindControllerForUserWithUiAsync` 调用系统 UX，提示用户为其用户配对控制器，并返回到游戏。

**添加用户：** 当使用 ERA 或 UWP 时，如果新用户登录，且游戏支持多用户体验，游戏可以将该用户加入游戏，但不得基于新的登录用户事件自动将活动用户切换为新用户或中断活动用户的体验。

当使用 GDK（简化用户模型或高级用户模型）时，只有在游戏调用 `XUserAddAsync` 时才会添加用户。

**主用户移除：** 对于使用 ERA 或 GDK 高级用户模型的游戏，如果主用户被注销（通过 Guide、SPOP 或其他方式），游戏必须要么将玩家从游戏中移除，要么重新确立用户和活动控制器。

对于使用 GDK 简化用户模型的游戏，主玩家被移除将导致游戏在系统级别被挂起。

在所有场景中，游戏都应在处理移除/关闭时将其游戏置于良好状态。这包括写入连接的存储、通知任何相关的 MPSD 会话用户已离开，并在未添加新用户时将该用户带到适合登录的位置。

**额外/次要用户移除：** 游戏可自行决定处理此事件的方式，通常做法是立即将玩家从游戏中移除，或在所使用的多人体验上下文中提示玩家重新加入。

## 实现指导和最佳实践

一种最佳实践是：当活动玩家的控制器被移除时暂停游戏。

当活动用户注销时，最佳实践是尽可能多地保存用户的进度，以便用户返回体验时几乎能回到他们离开的地方。

如果游戏支持多个已登录用户，当一位活动用户注销而其他活动用户仍已登录时，最佳实践是尽可能允许其他活动用户继续当前体验。对于游戏，可完全将注销的用户从游戏中移除，或用计算机控制的玩家替代。

## 其他资源

## 认证测试用例

下表显示：如果游戏使用 GDK 简化用户模型或 GDK 高级用户模型、ERA 以及 UWP 多用户应用，XR-115 中哪些测试用例适用于该游戏。

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

\* **115-01 添加用户** 仅适用于 ERA 和 UWP 多用户应用。使用 GDK 时，游戏只能看到它有意添加的用户。通过 Shell 添加的用户对 GDK 游戏是未知的。

### 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. 提示用户重新确立新的活动控制器（例如，"按 A 键继续"，或调用系统 UX）。

**不通过示例**

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

### 115-03 移除用户

**测试步骤**

1. 使用配置文件 A 登录，并确保没有其他配置文件已登录。
2. 启动游戏并进入游戏中。
3. 在游戏使用期间的多个时刻，注销配置文件 A。
4. 验证游戏调用账户选择器或将用户返回到前端。
5. 尽可能以下列方式与游戏交互：
   * 登录配置文件 A，并确保游戏不再进一步中断用户的体验。
   * 登录配置文件 B，并确保游戏更新到新用户的上下文。

**预期结果**

游戏必须要么将玩家从游戏中移除，要么重新确立用户和活动控制器。如果玩家被从游戏中移除，游戏应处于良好状态。这包括写入连接的存储、通知任何相关的 MPSD 会话用户已离开，并在未添加新用户时将该用户带到适合登录的位置。

**通过示例**

1. 游戏将玩家从游戏中移除并返回前端。
2. 游戏允许用户重新确立新用户，并正确更新到相应的用户上下文。

**不通过示例**

1. 游戏未能对用户状态的变化做出反应。
2. 在选择新的配置文件后，游戏继续使用配置文件 A 的用户状态。


## Related topics

- [FMA XR-115:游戏过程中添加或移除用户和控制器](/zh-CN/publishing/certification/fma/xr-115.md)
- [XBOX 认证概览](/zh-CN/publishing/certification/overview.md)
- [XR-124 游戏邀请](/zh-CN/publishing/certification/xr/xr-124.md)
- [XBOX 要求 (XR) 认证参考](/zh-CN/publishing/certification/xbox-requirements.md)
- [XR-067 维护多人游戏会话状态](/zh-CN/publishing/certification/xr/xr-067.md)
