XR-115:在游戏期间添加和删除用户或控制器 *
版本 1.1, 2021/5/1
支持多个用户的标题必须对用户的添加和删除或活动玩家在游戏过程中未分配控制器或控制器丢失的情况做出响应,如下所示:
添加控制器:在游戏已经选择或被提供初始用户和控制器后,游戏可以选择接受其他控制器的输入。 支持多人游戏体验的游戏应考虑如何将其他玩家或控制器添加到游戏中,以及如何使用 XUserAddAsync 绑定到用户。 例如,在玩家选择屏幕上“按 A 加入”或阐释控制器剪影。
删除控制器:如果玩家驱动游戏的控制器在游戏过程中被删除,则游戏必须允许重新建立新的活动控制器(例如,“按 A 继续”或在 ERA 中接收 ControllerPairingChanged 或在具有有效控制器的活动用户的 GDK 中接收 XUserDeviceAssationChangedCallback 事件)。 游戏还可以使用 XUserFindControwithForUserWithAsync 调用系统 UX,从而提示用户将控制器与用户配对并返回游戏。
添加用户: 当使用 ERA 或 UWP 时,如果新的用户登录,则在游戏支持多用户体验的情况下,可以将该用户添加到游戏中,但游戏不得自动将活动用户切换为新用户,或基于新的已登录用户事件中断活动用户的体验。
使用 GDK(使用简化或高级用户模型)时,仅当游戏调用 XUserAddAsync 时才添加用户。
删除主要用户:对于使用 ERA 或 GDK 高级用户模型的游戏,如果主要用户已注销(通过指南,SPOP 或其他方式),则游戏必须将玩家从游戏中删除,或重新建立用户和活动控制器。
对于使用 GDK 简化用户模型的游戏,删除主要玩家将导致游戏在系统级别挂起。
在所有场景中,游戏都会通过将游戏置于良好状态来处理删除/关闭。 这包括写入连接的存储、通知用户已离开的任何相关 MPSD 会话,以及将用户转到适当的位置以便登录(如果还没有添加新用户)。
其他/次要用户删除: 标题可以根据自己的判断来处理此事件,通常是立即将玩家从游戏中移除,或者提示玩家在使用多人游戏的情况下重新加入游戏。
实现指南和最佳做法
最佳做法是在删除某一活动玩家的控制器后暂停玩游戏。
在活动用户注销时,最佳做法是尽可能多地保存用户进度,以便在用户返回到该体验时,可以清楚地回到其离开时的位置。
如果某一游戏支持多个登录的用户,则在某一活动用户注销并且其他活动用户仍登录时,最佳做法是允许其他活动用户尽可能多地继续当前体验。 对于游戏,已注销用户可能会从游戏中彻底删除或者被计算机驱动的玩家所取代。
其他资源
认证测试用例
下表显示了如果使用 GDK 简化用户模型或 GDK 高级用户模型、ERA 和 UWP 多用户应用程序,则 XR-115 的测试用例适用于您的游戏。
测试用例 | 适用于 GDK 简化用户模型 | 适用于 GDK 高级用户模型、ERA、UWP MUA |
---|---|---|
115-01 添加用户 | 否 | 是 * |
115-02 删除控制器 | 是 | 是 |
115-03 删除用户 | 否 | 是 |
* 115-01 添加用户 仅适用于擦除和 UWP 多用户应用程序。 使用 GDK,游戏只能看到他们有意添加的用户。 通过 shell 添加的用户对于 GDK 游戏未知。
115-01 添加用户
测试步骤
- 登录到档案 A,并确保没有其他档案登录。
- 启动游戏并开始玩游戏。
- 在该游戏使用期间的不同时间点,连接第二个控制器并且登录到档案 B。
- 档案 B 将尝试提供对游戏的控制器输入。
预期结果
ERA 或 UWP MUA 游戏不得自动中断活动用户的体验。通过示例
- 游戏不会自动将活动用户切换到新用户或中断活动用户的体验。
- 游戏可以根据当前上下文选择允许档案 B 控制该游戏。
失败示例
- 该游戏立即将上下文切换到档案 B 作为活动用户。
115-02 删除控制器
测试步骤
- 登录到某一档案并且启动游戏。
- 在该游戏使用期间的不同时间点,从控制器中取出电池。
- 更换控制器中的电池,并确认用户可以继续使用该游戏。
- 重复步骤 [1] - [3],但连接第二个控制器而不是更换电池。
预期结果
游戏必须正确响应对控制器的删除和添加。通过示例
- 在删除或添加某一控制器后,活动用户应该能够继续使用该游戏。
- 系统将提示用户重新建立一个新的活动控制器(例如,"按 A 继续",或调用系统用户体验)。
失败示例
- 在删除某一控制器后,用户无法继续使用游戏。
115-03 删除用户
测试步骤
- 登录到档案 A,并确保没有其他档案登录。
- 启动游戏并开始玩游戏。
- 在该游戏使用期间的不同时间点,注销档案 A。
- 验证游戏是调用帐户选取器还是将用户返回到前端。
- 如果可能,通过以下方式与游戏进行交互:
- 登录到档案 A,并确保游戏不会进一步中断用户体验。
- 登录到档案 B,并确保游戏更新为新用户的上下文。
预期结果
该游戏必须从游戏中删除该玩家,或者重新建立一个用户和活动控制器。 如果该玩家已从游戏中删除,则游戏应保持良好状态。 这包括写入连接的存储、通知用户已离开的任何相关 MPSD 会话,以及将用户转到适当的位置以便登录(如果还没有添加新用户)。通过示例
- 该游戏会将玩家从游戏中删除,并返回到前端。
- 游戏允许用户重新建立新用户并正确更新相关的用户上下文。
失败示例
- 游戏未能对用户状态中的变化作出响应。
- 选择新的档案后,游戏继续使用档案 A 的用户状态。