- 本页定义了在 XBOX 认证中针对 XBOX 主机游戏进行测试的 XR。有关所有 XR(包括未在 XBOX 认证中测试的 XR)的列表,请转到 XBOX 要求。
- 有关此版本中更改的摘要,请参阅本页底部的此版本中的更改。
- 若要查看 XR 和测试用例的历史更改日志,请参阅 XBOX 要求和测试用例的更改历史记录。
- 查看主机上最常失败的十个测试用例。
[!Important] 对于所有最终提交,认证团队会在 CERT 沙盒中的零售硬件上进行测试:主机测试用例使用零售版 XBOX 主机,设备特定的测试用例则使用同等的零售硬件(例如零售版 PC 或掌机设备)。以前,某些测试用例依赖于在 XBOX 开发工具包上执行的 GDK 命令。这些用例已经修订为仅使用零售硬件上可用的步骤。可选提交仍在 CERT.DEBUG 沙盒中的开发工具包上进行测试。
测试挂起、睡眠和休眠
许多测试用例会验证游戏从低功耗状态或挂起状态恢复_之后_的行为。由于这些状态转换可能在正常游戏过程中发生,游戏必须保留进度、奖励和成就,并且必须在恢复时不重新启动、不崩溃、不挂起、不丢失进度。本节介绍如何在每种设备上让游戏进入这些状态。涉及挂起、睡眠或休眠游戏的测试用例会指明应使用哪些方法,以及哪些方法适用于被测设备。 XBOX 主机 有关构成游戏生命周期的概念和事件的详细介绍,请参阅 XBOX 游戏生命周期。其中演示了如何在游戏中实现游戏状态和状态更改事件。 在 XBOX 主机上,游戏会在以下情况下被挂起:- 在电源模式设置为“即时开启”的情况下关闭主机,使主机进入连接待机状态时。
- 游戏持续十分钟处于非焦点状态时。例如,启动“设置”等应用程序并使其保持焦点状态十分钟。
基本要求
此类别中的要求适用于编码标准、游戏行为和游戏提交的一般规则。XR-001:游戏稳定性 *
游戏必须符合 Microsoft Store 关于游戏稳定性的政策。以下政策适用于此要求: 10.4.2产品必须迅速启动、持续运行并保持对用户输入的响应。产品必须正常关闭,不得意外关闭。产品必须处理任何托管或本机系统 API 引发的异常,并在处理异常后保持对用户输入的响应。
001-01 游戏稳定性
测试步骤- 登录 XBOX 配置文件。
- 启动游戏。
- 浏览游戏的所有区域,包括但不限于:
- 游戏过程
- 菜单和功能
- 可下载内容 (DLC)
- 使用没有先前存档数据的新 XBOX 配置文件,在与 XBOX 服务断开连接的情况下重复步骤 1-3。
游戏不稳定是指无法识别用户输入的任何状态,或由于软件崩溃导致用户无法继续推进且未向用户发出任何通知的情况。 通过示例
- 游戏稳定。
- 游戏不会导致用户数据意外丢失。
- 游戏崩溃、无响应或导致主机重新启动。
- 游戏导致用户数据丢失。
- 出现持续超过二十秒的非交互式暂停或静态画面。
- 游戏包含超过两分钟且没有任何进度指示的加载画面。
- 游戏包含超过三分钟且带有进度指示器的加载画面。
001-02 挂起、睡眠和休眠后的游戏稳定性
此测试验证游戏在 XBOX 主机上从挂起状态恢复时,以及在 PC 和掌机设备上从睡眠或休眠状态恢复时的稳定性。有关如何在主机上挂起游戏,以及如何让 PC 或掌机设备进入睡眠和休眠状态,请参阅测试挂起、睡眠和休眠。就此测试用例而言,请在步骤 3 中验证被测设备上可用的每种方法。 测试步骤- 登录配置文件并启动游戏。在 XBOX 主机上,将主机电源模式设置为“即时开启”。
- 进入游戏过程。
- 在整个游戏中的不同时间点,包括菜单和所有游戏模式中:
- 在 XBOX 主机上,挂起游戏。
- 在 PC 和掌机设备上,先让系统进入睡眠状态,然后再进入休眠状态。
- 设备重新开机后,恢复游戏并验证用户可以从上次的游戏位置继续。
- 继续前进到下一个存档点,保存游戏,然后返回主菜单。
- 重新加载步骤 5 中创建的存档,并确保所有进度仍然存在。
- 在整个游戏过程中重复步骤 3-6。
游戏恢复时,会出现以下情况:
- 游戏不会崩溃、挂起或导致游戏进度意外丢失。
- 游戏不会完全重新启动,也不会要求用户重新启动游戏。
- 游戏会重新建立与 XBOX 和/或合作伙伴服务的在线连接。
- 游戏不会崩溃、挂起或导致游戏进度意外丢失。
- 游戏不会完全重新启动,也不会要求用户重新启动游戏。
- 所有菜单和游戏模式均可访问,并且用户可以从上次的游戏位置继续。
- 系统提示用户是否要从上次的游戏位置恢复。
- 游戏返回到之前的菜单或初始交互状态。
- 在需要在线服务连接的在线游戏过程中,于主机上挂起游戏,或让 PC 或掌机设备进入睡眠或休眠状态后,游戏恢复并将用户返回到之前的菜单或初始交互状态。
- 游戏重新建立与 XBOX 和/或合作伙伴服务的在线连接。
- 由于连接存储不同步,游戏被系统终止。
- 游戏崩溃、挂起或重新启动。
- 游戏因挂起、睡眠或休眠失败而被终止,或在恢复后意外终止。
- 用户无法加载其上次的存档位置。
- 游戏未重新建立与 XBOX 和/或合作伙伴服务的在线连接,或用户无法重新建立与合作伙伴托管服务的连接。
XR-003:提交时的游戏质量 *
XBOX 游戏必须符合 XBOX 质量标准,并且功能完整、可测试。功能完整且可测试
游戏在提交认证时必须功能完整且可测试。这包括所有客户端代码、提交项目和可下载内容。游戏必须使用当前版本的 Submission Validator 干净地打包,且不得出现任何失败。提交时必须附带 Submission Validator 日志。XBOX 质量标准
XBOX 游戏必须在所有游戏模式和场景中正常运行,以满足玩家的期望。游戏完整性
游戏不得存在严重问题,例如崩溃、冻结、无法游玩的帧速率、严重阻碍进度的 bug 或图形损坏。游戏设置、选项和控制必须正确应用,并在适当情况下遵循默认设置。导航和内容可用性应流畅无阻,不得存在死胡同或无法访问的菜单。无论玩家人数多少,多人游戏功能都必须稳定且正常运行。游戏存档兼容性
游戏存档和玩家进度在内容更新后必须继续正常运行。此外,使用基础光盘版本加载更新后的存档时,不得发生永久性数据丢失。详细信息
不准确和不完整的提交将被认证拒绝。在提交认证之前,请务必查看在 Partner Center 中提交到 XBOX 认证文档。如果对提交认证有疑问,请联系你的 Microsoft 联系人。Submission Validator
Submission Validator 并不是供开发者使用的独立工具。相反,每当使用 makepkg pack 命令时,系统都会自动调用它来检查应用。有关语法和命令行用法的详细信息,请参阅 makepkg 参考页面。 Submission Validator 所识别的问题类型会随着时间的推移不断增加和演变,目的是让从提交、认证到上市的整个过程更加顺畅。有关 Submission Validator 当前检测的问题列表,请参阅 Submission Validator 质量检查。合作伙伴托管的服务
提交认证时,游戏运行所需的合作伙伴服务必须正常运行且配置正确。这些服务会在安排游戏测试之前进行验证,并且必须在整个认证过程中保持正常运行。实施指南和最佳做法
选项和设置
游戏设置(例如选项、控制和语言)在游戏中更新后以及在终止并再次启动游戏后都能正确应用。在适当情况下会遵循默认设置。导航
所有导航命令都必须按预期运行。在主机上,游戏必须能够完全使用控制器进行导航。内容中没有死胡同,所有游戏菜单均可导航,并且所有内容均可用。本地化支持
对于游戏必须支持的本地化程度没有要求。在支持本地化文本的区域中,无论显示设置如何,文本都必须清晰易读。排行榜
游戏必须允许用户将统计数据发布到所有可用的排行榜,并使用提供的筛选器对这些排行榜进行排序。主机上的耳机状态更改
在主机上,连接、移除并重新连接耳机时,必须仍能继续听到音频。请参阅 XBOX One 软件开发工具包与 Microsoft Game Development Kit 音频 API 的比较。下表显示了哪些 XR-003 测试用例适用于主机或 PC 上的游戏。
003-02 游戏完整性
配置 测试步骤- 登录 XBOX 配置文件并启动游戏。
-
浏览所有菜单和子菜单,查看所有功能,并完成所有游戏模式。
- 以所有受支持的语言与所有菜单 UI、额外内容、单人和多人游戏模式(包括任何附加功能)进行交互并完成它们。
- 测试离线、在线和分屏模式(如果适用)。
- 以最大玩家人数测试多人游戏模式。
- 将统计数据发布到所有受支持的排行榜。
所有游戏都必须为用户提供可靠、公平、一致且完整的 XBOX 娱乐体验。 通过示例
- 所有游戏模式都可以完成。
- 在游戏过程中设置的选项在终止并重新启动游戏后会被保存。
- 游戏的所有区域均可按预期导航。
- 本地化文本在所有受支持的区域中正确显示。
- 用户能够按预期发布到排行榜。
- 游戏在关卡结束时崩溃,或用户在游戏的任何区域中无法继续推进。
- 游戏的某些区域无法按预期导航。
- 如果用户通过暂停菜单反转水平或垂直镜头控制,游戏中的镜头控制没有变化。
- 用户无法按预期发布到排行榜。
- 如果用户已经完成了另一种模式,则无法完成某个特定的游戏模式。
- 在游戏过程中设置的选项在终止并重新启动游戏后被重置为默认值。
- 游戏因帧速率问题而无法游玩。
003-16 游戏存档兼容性
测试步骤- 登录 XBOX 配置文件,并在不连接到 XBOX 的情况下启动游戏。
- 玩游戏并保存进度和设置。
- 重新启动游戏,并验证可以加载并恢复步骤 2 中保存的进度。
- 连接到 XBOX 并安装基础游戏的内容更新。
- 验证更新后仍可以加载并继续保存的进度。
- 重新启动游戏,开始新游戏,然后再次保存进度。
- 退出并卸载游戏。
- 在未连接到 XBOX 网络的情况下重新安装并启动基础游戏。
- 验证是否出现以下情况之一:
- 可以加载并继续保存的进度
- 游戏显示一条消息,指示该存档需要安装内容更新
- 游戏不显示步骤 6 中创建的存档
- 重新启动游戏并安装内容更新。
- 验证更新后仍可以加载保存的进度并从中继续。
内容更新后的游戏版本必须能够成功加载使用未进行内容更新的游戏版本创建的存档。 通过示例
- 内容更新后的游戏版本可以成功加载所有存档。
- 启动基础版本以加载更新后的存档时,系统会通知用户缺少内容,并说明无法加载存档文件的原因;或者在内容更新版本中创建的存档在基础版本中不可见。
- 内容更新后的游戏版本无法加载使用先前游戏版本创建的游戏存档。
- 基础版本的游戏在加载使用内容更新版本创建的存档时崩溃。
003-17 耳机状态更改
测试步骤- 将耳机连接到控制器,或以无线方式将耳机连接到游戏设备。
- 启动游戏并进入游戏过程。
- 验证可以通过电视和耳机听到音频。
- 拔下耳机,验证音频在短时间后恢复。
- 重新插入耳机,验证可以通过电视和耳机听到音频。
- 在整个游戏中重复步骤 4-5。
音频继续正常播放,没有问题。 通过示例
- 每当移除耳机时,音频都能毫无问题地恢复。
- 连接耳机时,音频能毫无问题地恢复。
- 耳机状态更改后不再能听到音频。
- 耳机状态更改后音频失真或损坏。
003-18 挂起、睡眠和休眠后的耳机状态更改
有关如何在 XBOX 主机上挂起游戏,以及如何让 PC 或掌机设备进入睡眠和休眠状态,请参阅测试挂起、睡眠和休眠。 就此测试用例而言,请在步骤 6 中验证被测设备上可用的每种挂起、睡眠和休眠方法。 测试步骤- 登录配置文件。在 XBOX 主机上,将主机电源模式设置为“即时开启”。
- 在 XBOX 主机上,在 XBOX 音频设置下启用 Windows Sonic for Headphones 作为耳机格式。
- 连接耳机。在 XBOX 主机上,将耳机连接到控制器或以无线方式连接到主机。在 PC 和掌机设备上,通过 USB、3.5 毫米接口或蓝牙连接耳机。
- 启动游戏并进入游戏过程。
- 验证可以通过电视和耳机听到音频。
- 在整个游戏中的不同时间点:
- 在 XBOX 主机上,挂起游戏。
- 在 PC 和掌机设备上,先让系统进入睡眠状态,然后再进入休眠状态。
- 恢复游戏并验证可以通过电视听到音频。
- 重新连接耳机,并验证可以通过电视和耳机听到音频。
- 在整个游戏中重复步骤 6-8。
音频继续正常播放,没有问题。 通过示例
- 每当移除耳机时,音频都能毫无问题地恢复。
- 连接耳机时,音频能毫无问题地恢复。
- 耳机状态更改后不再能听到音频。
- 耳机状态更改后音频失真或损坏。
003-20 流式安装初始游玩标记
包含初始游玩标记的游戏在从初始游玩标记启动时必须提供游戏体验。 有关使用 GDK 进行流式安装或智能分发的详细信息,请阅读流式安装和智能分发概述。 测试步骤- 登录 XBOX 配置文件。
- 安装游戏,并在初始游玩标记安装完成后启动游戏。
- 在游戏完成完整安装之前,尝试进入游戏的所有区域。
初始游玩标记安装必须提供游戏体验(例如教程、游玩第一关,或在某一游戏模式中进行快速多人对战)。 通过示例
- 从初始游玩标记启动时,游戏会提供游戏体验(例如教程、游玩第一关,或在某一游戏模式中进行快速多人对战)。
- 安装初始游玩标记后,游戏不提供游戏体验。失败的体验包括:
- 仅显示进度条
- 播放视频和/或一系列图像
- 仅提供对主菜单的访问
- 任何其他非交互式体验
XR-130:XBOX Series X|S 世代 *
所有面向某一主机世代的游戏都必须支持该世代的整个设备系列。 为了在主机世代之间保持一致性,游戏必须:- 确保游戏存档可以在该世代内的各种主机类型之间正常使用。
- 确保在线玩家不会根据该世代内的主机类型而被分隔。
- 确保在该世代内的各种主机类型上提供相同的游戏模式。
130-02 游戏存档漫游
所需工具- 1 台 XBOX Series S
- 1 台 XBOX Series X
- 在设备 A 上登录 XBOX 配置文件并启动游戏。
- 开始游戏过程并保存进度(如有可能,通过更改或添加新的设置配置来创建设置存档)。
- 退出游戏。
- 使用步骤 1 中的同一配置文件,在同一世代的另一台设备上登录。
- 启动步骤 1 中的同一游戏,并验证所有游戏存档以及任何设置和/或配置文件都可以正确访问和加载,并且不依赖于特定的同世代设备。
- 在同一世代的设备上重复上述所有步骤。
游戏存档必须在同一世代内的所有主机类型上完全正常使用。 通过示例
- 在 XBOX Series S 上创建的游戏存档可以在 XBOX Series X 上使用,反之亦然,适用于整个 XBOX Series 设备系列。
- 在某一世代内创建的游戏存档无法在该世代的所有设备类型上完全加载。
130-03 在线分隔
所需工具- 1 台 XBOX Series S
- 1 台 XBOX Series X
- 在同一世代的所有设备类型上登录 XBOX 配置文件并启动游戏。
- 完成一场包含所有设备的 XBOX 网络多人游戏会话。
- 在游戏支持的所有 XBOX 网络多人游戏模式中重复步骤 2。
无论使用的是同一世代中的哪种主机类型,XBOX 网络玩家都必须能够加入其他 XBOX 网络玩家。 通过示例
- 同一世代设备中的所有主机都能够在多人游戏过程中相互对战。
- XBOX 网络玩家在同一世代内根据其主机类型被分隔。
130-04 特色游戏模式
所需工具- 1 台 XBOX Series S
- 1 台 XBOX Series X
- 登录 XBOX 配置文件并启动游戏。
- 找到并访问所有特色游戏模式。
- 在同一世代的设备上重复上述所有步骤,并确保每台设备上的所有游戏模式都相同。
必须在同一世代的设备上提供相同的游戏模式。 通过示例
- 同一世代设备中的所有主机都提供同一组相同的游戏模式。
- 同一世代设备中的一台或多台主机根据其同世代主机类型提供不同的游戏模式。
XR-022:官方命名标准 *
在提及 XBOX 平台功能、服务、硬件或外设时,游戏必须使用最新版术语列表中定义的命名标准。这些标准适用于每款 XBOX 游戏,无论其运行在何种设备上。 游戏不得显示设备或其外设组件的图像,也不得使用术语列表中未包含的术语来指代这些组件。022-01 官方命名标准
测试步骤- 启动游戏。
- 访问游戏的所有区域。
- 浏览所有菜单和子菜单。
- 更改所有可用的设置和选项。
- 如果游戏支持存档,请保存并加载所有可能的游戏类型。
- 观看所有过场动画。
- 记录显示的所有文本和图像。
所有文本都符合最新的术语列表。图像不得使用术语列表中未明确包含的术语来显示设备或其外设的组件。 通过示例
无 失败示例
- 游戏使用了竞争平台的专有术语或图像。
- 游戏使用术语列表中未包含的任何术语来指代设备或外设的组件。
XR-074:与 XBOX 和合作伙伴服务的连接丢失 *
游戏必须妥善处理与 XBOX 和合作伙伴服务连接相关的错误。在发生失败后尝试重试对 XBOX 服务的请求时,游戏必须遵循 XBOX 设置的重试策略。当服务不可用时,游戏必须适当地管理向用户显示的消息。如果合作伙伴服务不可用,游戏不得指示 XBOX 网络存在问题。如果网络服务速度变慢或间歇性可用,游戏不得崩溃或挂起。074-01 与 XBOX 服务的 WAN 连接断开
测试步骤- 登录 XBOX 配置文件。
- 在执行以下操作时断开 WAN 网络。如果使用的是以太网交换机/集线器,请从网络设备上拔下上行链路电缆。如果设备通过 Wi-Fi 连接,请从无线接入点连接上拔下上行链路电缆:
- 创建新的存档点
- 加载存档点
- 到达自动存档点
- 枚举游戏存档列表
- 搜索并加入在线会话
- 尝试创建在线会话
- 查看排行榜(如果适用)
- 离线游玩
如果主机无法访问 XBOX 服务,游戏应以用户友好的错误消息进行响应。 通过示例
- 游戏显示一条错误消息,指示与 XBOX 服务的网络连接丢失。
- 在游玩不需要 XBOX 服务的本地游戏模式时,游戏不显示错误消息。
- 在 AppX 清单中包含
RequireXboxLive的游戏在连接丢失时会挂起,然后终止。
- 用户无法完成非在线 XBOX 游戏会话。
- 游戏进入无响应或不稳定状态。
074-02 直接断开连接
测试步骤- 启动游戏并登录 XBOX 配置文件。
- 在游戏中执行以下操作时,从设备上拔下网线,或关闭 WAP 或无线路由器的电源:
- 创建新的存档点。
- 加载存档点。
- 到达自动存档点。
- 枚举游戏存档列表。
- 搜索并加入在线会话。
- 尝试创建在线会话。
- 查看排行榜(如果适用)。
- 离线游玩。
如果设备与 XBOX 服务的连接丢失,游戏应以用户友好的错误消息进行响应。 通过示例
- 游戏在在线游戏模式下显示用户友好的消息。
- 游戏在离线游戏模式下不会中断游戏过程。
- 在 AppX 清单中包含
RequireXboxLive的游戏在连接丢失时会挂起,然后终止。
- 在离线游戏模式下显示错误消息。
- 游戏进入无响应或不稳定状态。
- 网络离线后,用户仍能查看在线菜单或查看缓冲的媒体。
074-03 挂起、睡眠或休眠期间与 XBOX 服务的连接断开
有关如何在 XBOX 主机上挂起游戏,以及如何让 PC 或掌机设备进入睡眠和休眠状态,请参阅测试挂起、睡眠和休眠。 就此测试用例而言,请在步骤 3 中验证被测设备上可用的每种挂起、睡眠和休眠方法。 测试步骤- 登录配置文件。在 XBOX 主机上,将主机电源模式设置为“即时开启”。
- 启动游戏并进入游戏过程。
- 在整个游戏中的不同时间点:
- 在 XBOX 主机上,挂起游戏。
- 在 PC 和掌机设备上,先让系统进入睡眠状态,然后再进入休眠状态。
- 设备重新开机后,恢复游戏并验证游戏能够妥善处理连接断开的情况。
- 在整个游戏中重复步骤 3-4。
如果设备从挂起、睡眠或休眠状态恢复后无法访问 XBOX 服务,游戏必须成功恢复,妥善处理这种情况,并在适当时以用户友好的错误消息进行响应。 通过示例
- 在在线 XBOX 多人游戏会话期间,游戏显示一条错误消息,指示与 XBOX 服务的网络连接丢失。
- 在游玩不需要 XBOX 服务的本地游戏模式时,游戏不显示错误消息。
- 用户无法完成非在线 XBOX 游戏会话。
- 游戏进入无响应或不稳定状态。
- 游戏在恢复后显示误导性或不正确的错误消息。
074-04 挂起、睡眠或休眠期间重新连接 XBOX 服务
有关如何在 XBOX 主机上挂起游戏,以及如何让 PC 或掌机设备进入睡眠和休眠状态,请参阅测试挂起、睡眠和休眠。 就此测试用例而言,请在步骤 3 中验证被测设备上可用的每种挂起、睡眠和休眠方法。 测试步骤- 登录配置文件,并确保设备设置为主页。在 XBOX 主机上,将主机电源模式设置为“即时开启”。
- 在未连接到 XBOX 但保留本地网络连接的情况下,启动游戏。
- 如果使用的是以太网交换机/集线器,请从网络设备上拔下上行链路电缆。
- 如果设备通过 Wi-Fi 连接,请从无线接入点上拔下上行链路电缆。
- 在整个游戏中的不同时间点:
- 在 XBOX 主机上,挂起游戏。
- 在 PC 和掌机设备上,先让系统进入睡眠状态,然后再进入休眠状态。
- 重新连接上行链路电缆,并等待设备重新连接到 XBOX 服务。
- 设备重新开机后,恢复游戏并验证游戏能够妥善处理重新连接的情况。
- 在整个游戏中重复步骤 2-5。
如果设备从挂起、睡眠或休眠状态恢复后无法访问 XBOX 服务,游戏必须成功恢复,妥善处理这种情况,并在适当时以用户友好的错误消息进行响应。 通过示例
- 用户能够恢复游戏,并在不中断的情况下完成离线 XBOX 游戏会话。
- 游戏保持稳定,不会崩溃。
- 用户无法完成非在线 XBOX 游戏会话。
- 游戏进入无响应或不稳定状态。
- 游戏在恢复后显示误导性或不正确的错误消息。
074-07 动态连接丢失
所需工具: 配置 XMAT 以阻止合作伙伴服务 有关安装、捕获设置和脚本编写说明,请参阅使用 XBOX Multiplayer Analysis Tool 检查和修改网络流量。- 以管理员身份启动 XMAT,并为被测设备添加 Web Proxy 捕获。
- 在 XBOX 开发主机上,选择 Enable XBOX Proxy 并等待主机重新启动。
- 在 Windows 上,选择 Start Capture。
- 在 XMAT 进行捕获时,启动游戏并浏览所有菜单,完成一场多人游戏会话,加载每种游戏模式,并浏览游戏的所有区域,包括:
- 菜单。
- 排行榜。
- 服务器(创建一个服务器并加入其他人的服务器)。
- 好友列表。
- 游戏内商店。
- 限时活动。
- 使用 Host 筛选器识别在正常游戏过程中联系的合作伙伴服务主机。在阻止所选主机之前,请确认这些主机不属于 Microsoft、XBOX 或 PlayFab。
- 打开 Script Editor,选择 SSL Connection Request 事件,然后创建一个脚本,为每个合作伙伴服务主机将
Params.Continue设置为false。 - 启用该脚本并验证其编译成功。然后禁用该脚本,以便在测试开始时合作伙伴服务仍然可用。保持 XMAT 捕获处于运行状态。
- 在禁用 XMAT 阻止脚本的情况下,登录 XBOX 配置文件并启动游戏。
- 导航到使用合作伙伴托管服务的游戏功能,并确认该功能可用。
- 在不关闭游戏的情况下,启用 XMAT 阻止脚本。
- 继续进行游戏并使用所有适用的区域,包括:
- 菜单
- 排行榜
- 服务器(创建一个服务器并加入其他人的服务器)
- 好友列表
- 游戏内商店
- 限时活动
- 验证游戏不会显示指示 XBOX 网络存在问题的错误消息。
游戏能够妥善处理与非 Microsoft 服务的连接断开。 通过示例
- 与合作伙伴托管服务的连接丢失时,游戏不会挂起或崩溃。
- 显示的消息暗示 Microsoft 服务存在问题。
- 显示的错误消息不具描述性。
- 游戏崩溃、变得不稳定或导致主机重新启动。
074-08 发布前停机
所需工具:- GDK/XDK 中的 xbstress.exe
- 适用于 Windows 的 XBOX Multiplayer Analysis Tool (XMAT)。
- 在主机上,使用以下命令通过 xbstress.exe 为非 Microsoft 流量创建中断的网络通道:
xbstress set channel=0 network=broken addresses=[semicolon delimited list of addresses]
- 使用以下命令启动网络模拟:
xbstress simulate network=channels。 - 如果在 Windows 上进行测试,请在启动游戏之前配置 XMAT Web 代理捕获,并启用阻止适用合作伙伴服务主机的脚本。
- 登录 XBOX 配置文件。
- 启动游戏。
- 访问非 Microsoft 在线功能。
游戏应提供用户友好的错误消息,指示访问非 Microsoft 服务时出现问题,并应提供重试连接的机会。 通过示例
- 与合作伙伴托管服务的连接丢失时,游戏不会挂起或崩溃。
- 显示的错误暗示 Microsoft 服务存在问题。
- 显示的错误消息不具描述性。
- 游戏崩溃、变得不稳定或导致主机重新启动。
XR-132:服务访问限制 *
调用 XBOX 网络服务时超出基于游戏和用户的限制或不遵循 XBOX 网络服务重试策略的游戏可能会受到速率限制,这可能导致服务中断或弃用。不遵守指定的限制可能会阻止游戏发布,而已发布游戏在生产环境中出现的问题可能会导致 XBOX 网络服务被暂停,甚至导致游戏被下架。132-01 服务访问限制
所需工具- 主机上的 Fiddler或 PC 上的 Fiddler
- GDK 开发工具下载包中的 XBOX services Trace Analyzer。它用于检查游戏发出的服务调用,并查找调用模式中的任何违规行为。
- 在启动游戏之前,启动 Fiddler Classic,并确保已将其配置为捕获来自主机或 Windows 10 PC(即相关游戏运行所在的设备)的网络流量。
- 在 Fiddler Classic 运行并捕获网络流量的情况下,启动游戏并继续浏览所有区域,包括但不限于以下内容:
- 创建游戏存档,重新启动主机并加载该游戏存档
- 快速连续地更改丰富状态(如有可能)
- 解锁并查看成就
- 发布到所有排行榜,并使用所有筛选器查看所有排行榜
- 查看游戏内好友列表(包括屏蔽了状态的好友),并在页面之间快速切换
- 获得并查看 Hero Stat
- 通过匹配进入所有在线模式,包括无法找到可用会话的情况(如有可能),并产生语音流量
- 创建、保存和分享游戏剪辑
- 访问游戏内商店(如果适用)
- 测试结束后,将 Fiddler 捕获保存到本地目录。
- 在 GDK 命令提示符中,运行
xbltraceAnalyzer -data filepath -outputdir filepath。 - 打开步骤 4 中的输出目录并打开“index”文件(如果出现提示,请选择“允许阻止的内容”)。
xbtrace.exe 在游戏启动之前无法启动,但应尽快启动,以便捕获游戏在启动期间发出的任何 XBOX 服务调用。因此,捕获游戏流量的首选方法是 Fiddler Classic,因为它可以在启动游戏之前启动。
- 在游戏运行时,运行
xbtrace start xboxliveservices并继续浏览游戏的所有区域,包括但不限于以下内容:- 创建游戏存档,重新启动主机并加载该游戏存档
- 快速连续地更改丰富状态(如有可能)
- 解锁并查看成就
- 发布到所有排行榜,并使用所有筛选器查看所有排行榜
- 查看游戏内好友列表(包括屏蔽了状态的好友),并在页面之间快速切换
- 获得并查看 Hero Stat
- 通过匹配进入所有在线模式,包括无法找到可用会话的情况(如有可能),并产生语音流量
- 创建、保存和分享游戏剪辑
- 访问游戏内商店(如果适用)
- 测试结束后,运行两次
run xbtrace stop。 - 浏览主机的文件,在 SystemScratch > xbtrace 中可以找到该 csv 文件。检查时间戳,确保其记录的是你停止录制的时间。将其复制到本地。
- 在 XDK 命令提示符中,运行
Xbltraceanalyzer -data filepath -outputdir filepath。 - 打开步骤 4 中的输出目录并打开“index”文件(如果出现提示,请选择“允许阻止的内容”)。
游戏必须确保其对 XBOX 终结点的服务调用低于指定的突发限制和持续限制,并且其 XBOX services Trace Analyzer 报告中不得有任何红色结果。 XBOX services Trace Analyzer 工具会生成一个 report.txt 文件,其中指出发现违规的规则以及这些违规的详细信息。
[!Tip] 解读 XBOX services Trace Analyzer 报告通过示例
- 红色 - 表示问题超出细粒度速率限制生效点的 10 倍。这在认证中属于严重问题。
- 黄色 - 表示由于游戏超出了允许调用服务的频率,服务正在受到速率限制,但未超出在认证中会被视为严重问题的阈值。游戏应设法解决这些问题。
- 绿色 - 表示游戏调用 XBOX 服务的频率低于速率限制生效的频率。
- 游戏在调用 XBOX 服务时未超出持续限制。
- XBOX services Trace Analyzer 报告仅包含黄色和/或绿色结果。
- 游戏超出持续限制(速率限制生效的限制)的 10 倍。例如,如果细粒度速率限制生效的持续限制设置为 300 秒内 300 次调用,则在 300 秒内调用次数达到或超过 3000 次的游戏将失败。
- XBOX services Trace Analyzer 报告包含一个或多个红色结果。
132-02 游戏事件限制
测试步骤- 安装游戏,并在游戏运行时继续浏览游戏的所有区域,包括但不限于以下内容:
- 创建游戏存档,重新启动主机并加载该游戏存档
- 快速连续地更改丰富状态(如有可能)
- 解锁并查看成就
- 发布到所有排行榜,并使用所有筛选器查看所有排行榜
- 查看游戏内好友列表(包括屏蔽了状态的好友),并在页面之间快速切换
- 获得并查看 Hero Stat
- 通过匹配进入所有在线模式,包括无法找到可用会话的情况(如有可能),并产生语音流量
- 创建、保存和分享游戏剪辑
- 访问游戏内商店(如果适用)
- 在测试期间,观察游戏,查看是否出现游戏事件限制系统通知。
游戏不得触发游戏事件限制系统通知。 通过示例
- 游戏不会触发游戏事件限制系统通知。
- 游戏触发游戏事件限制系统通知。
在线安全和隐私
此类别中的要求涉及保护用户的安全和隐私。XR-013:将 Microsoft 帐户与发行商帐户关联 *
在 XBOX 上,使用发行商托管服务、发行商帐户、合作伙伴托管帐户或其他非 XBOX 凭据的游戏必须为 XBOX 用户提供一致、安全且适龄的体验。 如果游戏玩法或游戏功能需要发行商帐户登录、帐户创建或帐户关联,则游戏必须为所有有资格访问该游戏或功能的用户提供适龄的访问途径,资格依据如下:- 游戏的年龄分级;
- XBOX 家庭、隐私和安全设置;
- 提供该游戏或功能的受支持国家/地区;
- 适用的当地或区域法律;以及
- 特定于功能的隐私、安全或审核要求。
- 支持用户所在年龄组和国家/地区的标准发行商帐户。
- 具有适龄默认设置的儿童或青少年发行商帐户。
- 需家长同意或由家长授权的帐户创建流程。
- 受限制、功能有限或保护隐私的发行商帐户。
- 通过 Microsoft 或 XBOX 进行身份验证、避免不必要的发行商帐户创建的访问途径。
- 特定于功能的回退方案,使符合资格的用户无需完整关联发行商帐户即可访问该功能。
游戏的某些功能(包括在线多人游戏、通信、用户生成内容、跨网络功能或其他在线功能)可能无法供 XBOX 儿童或青少年帐户使用,也可能无法供不符合发行商帐户要求的用户使用。可能存在年龄和地区限制。当存在已知限制时,请使用特定于游戏的措辞。示例:
[功能]需要 [X] 岁及以上的 [发行商帐户]。存在年龄限制。发行商帐户和 Microsoft 帐户关联 使用 XBOX 安全令牌服务 (XSTS) 进行身份验证 将用户的发行商帐户关联到用户的 Microsoft 帐户时,必须使用 XSTS 令牌提供身份验证所需的身份信息。有关 XSTS 令牌身份验证的详细信息,请参阅游戏服务的 XBOX 服务身份验证。游戏必须在建立关联之前对 Microsoft 帐户和发行商帐户都进行身份验证,并且不得使用未经身份验证的标识符(例如仅使用玩家代号)关联帐户。请使用合作伙伴 XUID (PXUID) 或成对标识符进行帐户关联。除非经批准的服务到服务方案明确要求,否则请勿使用 XUID 存储帐户关联信息。 获得同意并提供选择 当用户的发行商帐户关联到其 Microsoft 帐户时,必须通知用户;当帐户关联为可选项时,必须为用户提供选择退出的权利。用户必须能够取消帐户关联。取消帐户关联功能可以在游戏内、网页上、配套应用中或通过其他专用帐户管理体验提供。 照顾符合关联资格的用户 如果游戏玩法或游戏功能需要关联发行商帐户,则关联功能必须支持提供该游戏且法律允许这些功能的国家/地区中符合资格的用户类型、年龄和地区。如果需要关联的发行商帐户,但发行商无法支持用户的年龄组、国家/地区或帐户类型,则游戏必须提供经批准的替代访问途径或申请例外。 年龄和帐户处理 在向 Microsoft 帐户用户提供帐户创建或关联功能之前,游戏必须调用
XUserGetAgeGroup 验证用户的年龄组。游戏必须正确处理以下帐户类别:
- 当用户的 Microsoft 帐户年龄与发行商帐户年龄不同时,游戏或服务应采用保护性更强的处理方式,除非使用了其他合法合规的方法(例如经批准的年龄验证平台)。
- 对于儿童帐户,在法律要求的情况下,发行商必须在创建帐户之前获得家长同意。家长同意(包括在需要时接受发行商条款和隐私声明)必须通过发行商的合规帐户流程提供,而不能仅凭参与 XBOX 网络就推定已获得同意。
- 对于青少年帐户,发行商必须提供有关社交、UGC、通信、数据共享和影响隐私的功能的明确信息。在适当情况下,发行商应要求青少年通知家长或监护人已创建帐户。
- 如果发行商在帐户设置期间收集年龄并确定用户不符合发行商帐户要求,则发行商应在收集不必要的个人信息之前停止创建帐户,告知用户无法继续,在适当情况下阻止用户立即重新输入不同的年龄信息,销毁已收集的不必要保留的个人信息,并避免重复失败的注册或关联尝试。
- 语音或文本聊天;
- 好友系统或社交关系图功能;
- 跨网络通信;
- UGC 上传或发布;
- 公开个人资料;
- 外部论坛或社区功能;
- 购买、高级货币或货币化;以及
- 行为广告、用户画像或可选的数据共享。
[!NOTE] 发行商可以实施额外的防欺诈机制,例如当已关联的帐户首次从新设备登录时进行双重身份验证。此行为不违反此 XR。例外 如果发行商无法为符合分级资格的用户提供适龄的访问途径,则发行商必须申请特定于游戏的例外。对一款游戏的批准并不意味着对未来游戏的全面批准。例外申请必须包括:
- 受影响的游戏、分级、平台、国家/地区、功能和用户群体。
- 在没有发行商帐户的情况下,核心游戏玩法是否仍然可用。
- 哪些功能被阻止或受限,以及原因。
- 限制的法律、隐私、安全、技术或审核依据。
- 拟议的 Store、包装和游戏内披露措辞。
- 被阻止或受限用户的用户体验。
- 针对儿童、青少年、成人、家庭管理和特定国家/地区帐户情况的测试计划。
- 未来支持适龄访问的任何缓解计划或路线图。
013-01 将 Microsoft 帐户与发行商帐户关联
测试步骤- 验证游戏是否支持或需要使用非 XBOX 帐户、发行商帐户或发行商登录来获得服务或功能。
- 使用新创建的 XBOX 个人资料,在初始设置期间关联或创建发行商帐户。
- 验证游戏在完成帐户关联之前允许用户查看使用条款和隐私信息,或明确告知用户如何查看这些信息。
- 验证在初始设置后不会提示用户重新输入非 XBOX 帐户凭据。
- 在游戏运行时注销并重新登录。
- 验证单一登录仍然有效。
- 使用同一个人资料终止并重新激活游戏。
- 验证单一登录仍然有效。
- 使用同一个人资料在另一台主机上启动游戏。
- 验证单一登录仍然有效。
- 通过删除游戏可能创建的所有已保存文件,验证游戏未在本地存储非 XBOX 帐户凭据。
- 验证用户可以取消其 XBOX 个人资料与非 XBOX 帐户的关联。
- 使用属于游戏年龄分级范围内的 XBOX 儿童和青少年帐户重复适用的步骤。
- 使用允许或阻止多人游戏、通信、UGC、购买和跨网络游戏的家庭设置重复适用的步骤。
- 使用 Microsoft 帐户年龄与发行商帐户年龄不匹配的情况重复适用的步骤。
- 在适用的情况下,针对具有不同同意年龄门槛的受支持国家/地区重复适用的步骤。
- 如果发行商不支持儿童、青少年、某个国家/地区或某种帐户类型,请验证游戏提供了经批准的替代访问途径、妥善的消息提示或有经批准的例外支持的限制。
只要使用发行商帐户,游戏就必须提供安全的发行商帐户登录、帐户创建、关联、取消关联和单一登录。如果游戏玩法或游戏功能需要发行商帐户登录或关联,则游戏必须为根据游戏分级、XBOX 家庭设置、区域法律以及特定于功能的安全或隐私要求有资格访问该游戏或功能的所有用户提供适龄的访问途径。用户必须能够在关联之前查看适用的条款和隐私信息,并且必须能够取消其 XBOX 个人资料与发行商帐户的关联。 通过示例
- 游戏对两个帐户都进行身份验证,通过 PXUID 或成对标识符进行关联,并且在初始关联后从不要求用户重新输入发行商凭据。
- 游戏提供条款、隐私信息、同意、取消关联和单一登录。
- 游戏通过合规的儿童或青少年发行商帐户、家长同意流程、受限制帐户、经 XBOX 身份验证的途径或经批准的特定于功能的回退方案来支持儿童和青少年用户。
- 游戏限制聊天、UGC 上传、购买或跨网络通信等高风险功能,同时在法律允许的情况下保留对适当分级的游戏玩法的访问。
- 游戏在 Store、包装和游戏内消息中明确披露发行商帐户要求和任何功能限制。
- 游戏在每次启动时都要求输入发行商凭据。
- 游戏在另一台主机上运行时再次要求输入发行商凭据。
- 游戏在帐户创建或关联期间未提供条款或隐私信息。
- 游戏未提供取消发行商帐户与 Microsoft 帐户关联的方法。
- 游戏玩法或宣传的功能需要发行商帐户,但游戏未为符合资格的儿童或青少年用户提供适龄的访问途径。
- 仅仅因为发行商的标准帐户系统不支持用户的年龄组、国家/地区或帐户类型,游戏就阻止符合分级资格的用户访问核心游戏玩法或宣传的功能。
- 在没有经批准的例外的情况下,游戏仅依靠 Store 披露来阻止符合资格的用户访问所需的游戏玩法或宣传的功能。
- 游戏未能安全地处理 Microsoft 帐户年龄与发行商帐户年龄不匹配的情况。
XR-014:玩家数据和个人信息 *
游戏发行商全权负责按照适用法律收集和处理最终用户数据,尤其是当用户是儿童时。 此外,当游戏拥有从 XBOX 获取的或通过与玩家的直接关系(例如网站或移动应用)获取的玩家信息时,游戏不得向其他玩家显示:- 可能被用于对用户造成经济损失的信息(例如社会保障号码或信用卡号)。
- 透露用户国家/地区以外地址信息的信息。
- 允许用户在线冒充其他用户的信息,例如帐户凭据。
处理儿童数据
从儿童或青少年年龄组的帐户收集数据时,游戏只能请求验证年龄、获得家长同意或完成发行商帐户关联所需的个人数据。[!Important] 数据请求必须说明数据的用途。例如,如果游戏询问用户的出生日期,则必须说明出生日期的用途: 良好示例:不良示例:
- 请提供你的出生日期,以便我们验证你的年龄
- 请提供你的出生日期,以便我们为你提供个性化体验
- 我们需要你的出生日期,以便提供适龄内容
- 我们需要你的出生日期,以便遵守法定年龄限制
- 请提供你的出生日期
- 输入你的出生日期
- 我们需要你的出生日期
- 需要出生日期
定义
地址是指能够将用户位置识别到城市或城镇级别的任何信息。这包括但不限于以下内容:- 实际地址
- 邮寄地址
- 帐单地址
- 邮政编码
- IP 地址或相关信息
- 地理位置信息
014-01 个人信息
测试步骤- 访问游戏的所有区域,包括所有可能的 XBOX 多人游戏会话。
- 访问可能保存内容或以其他方式通过 XBOX 网络发送内容或将内容发送到游戏服务器的所有区域。
游戏绝不能显示 XR 正文中详细说明的其他用户的个人信息。 通过示例
- 游戏向另一台主机上的用户显示并共享居住国家/地区信息。
- 游戏使用用户的 IP 地址来确定用户的大致位置(不比州或国家/地区更具体),并在排行榜上向其他用户显示该位置。
- 游戏向其他主机上的用户传输和共享用户的个人信息。 示例:电子邮件地址、位置(比州/国家/地区更具体的任何信息)、姓名、出生日期、个人资料密码、安全问题、密码、信用卡详细信息。
014-02 数据收集
测试步骤- 使用儿童或青少年帐户启动游戏。
- 访问游戏的所有区域,包括所有可能的单人和 XBOX 多人游戏模式。
- 检查向用户请求了哪些数据。
游戏不得向儿童或青少年用户请求超出以下用途所需的数据:
- 年龄验证
- 获得家长同意(例如家长的电子邮件地址)
- 发行商帐户关联(例如家长、儿童或青少年用户的电子邮件地址)
- 游戏未向儿童或青少年用户请求任何数据。
- 游戏请求用户的出生日期,并说明数据的用途。
- 游戏请求家长的电子邮件地址,并说明数据的用途。
- 游戏请求用于帐户关联的电子邮件地址,并说明数据的用途。
- 游戏请求的数据可能被用于验证年龄、获得家长同意或发行商帐户关联以外的目的。
- 游戏请求用户的出生日期,但未说明数据的用途。
- 游戏请求家长的电子邮件地址,但未说明数据的用途。
- 游戏请求用于帐户关联的电子邮件地址,但未说明数据的用途。
XR-015:管理玩家通信 *
当用户的隐私设置不允许时,游戏不得允许通过 XBOX 网络进行通信。 游戏通过从 XBOX 网络服务检索数据来满足此 XR。如果游戏使用自己的服务,则必须在会话开始时或新用户加入会话时检查用户的隐私权限。对于会话之外由用户发起的方案,游戏通过在显示用户数据之前和执行操作之前检查隐私来满足此要求。游戏可以检查以下权限:
在游戏会话期间,提供 XBOX 网络玩家与非 XBOX 网络玩家之间通信功能的游戏必须提供在会话期间将任何非 XBOX 网络玩家静音的功能。
[!Note] 有关如何在游戏中检查和解决隐私和权限问题的详细信息,请参阅隐私和权限概述。
015-01 用户通信
配置:- 创建一组个人资料,将“其他人可以通过语音、文本或邀请进行通信”分别设置为“所有人”、“好友”和“已阻止”。
- 对于支持 XBOX 外部通信的游戏,创建一组个人资料,将“你可以在 XBOX 外部通过语音和文本进行通信”分别设置为“允许”、“游戏内好友”和“已阻止”。
[!Note] “允许”和“游戏内好友”选项之间的区别在于:“允许”表示你可以跨网络与所有人交谈(包括你在随机匹配中遇到的玩家)。“游戏内好友”是指你通过将其添加到游戏内好友列表而明确选择与之一起玩的人。测试步骤
- 在设备 1 上,登录已按照“配置”设置了特定权限集的个人资料。
- 在设备 2 上,登录没有通信限制的个人资料。
- 在两台设备上启动游戏,尝试在每个受支持的位置使用文本、语音(通过 Kinect 和耳机)以及视频进行通信,并尝试发送多人游戏邀请。
- 对“配置”步骤中的所有个人资料重复步骤 1-3。
游戏必须检查 XBOX 服务中用户在隐私和在线安全相关操作方面的权限,并且当用户的隐私和在线安全设置不允许时,不得传输用户数据或允许通过 XBOX 进行通信。 通过示例
- 当特定通信方式被配置为阻止时,游戏阻止用户通过 XBOX 进行语音和文本通信。
- 当特定通信方式被配置为阻止时,游戏阻止用户在 XBOX 外部进行语音和文本通信。
- 当多人游戏邀请被阻止时,游戏阻止用户在 XBOX 上接收多人游戏邀请。
- 当特定通信方式被配置为阻止时,用户仍能够通过 XBOX 进行语音和文本通信。
- 当特定通信方式被配置为阻止时,用户仍能够在 XBOX 外部进行语音和文本通信。
- 当多人游戏邀请被阻止时,游戏仍允许用户在 XBOX 上接收多人游戏邀请。
015-02 静音支持
测试步骤- 以用户 A 身份将用户 B 静音。
- 让两个用户加入 XBOX 多人游戏会话。
- 尝试从用户 B 向用户 A 发送语音通信。
- 确保用户 A 无法接收来自用户 B 的任何语音通信。
用户 A 必须无法听到来自用户 B 的通信。 通过示例
- 发起静音的用户听不到被静音用户的语音通信。
- 发起静音的用户可以听到被静音用户的语音通信。
015-03 被阻止的用户
测试步骤- 以用户 A 身份阻止用户 B。
- 让两个用户加入 XBOX 多人游戏会话。
- 尝试从用户 B 向用户 A 发送语音和书面通信。
- 尝试从用户 B 向用户 A 发送多人游戏邀请。
- 确保用户 A 无法接收来自用户 B 的任何通信或多人游戏邀请。
用户 A 必须无法听到或看到来自用户 B 的通信。用户 A 不得收到来自用户 B 的多人游戏邀请。 通过示例
- 发起阻止的用户看不到也听不到被阻止用户的通信。
- 发起阻止的用户不会收到被阻止用户的多人游戏邀请。
- 发起阻止的用户可以看到或听到被阻止用户的通信。
- 发起阻止的用户会收到被阻止用户的多人游戏邀请。
XR-018:用户生成内容 *
用户生成内容 (UGC) 是指由玩家制作并在联机状态下对一个或多个其他人可见或可访问的任何游戏内数字内容。 如果你的产品包含 UGC,则必须:- 在产品内提供一种方式,让用户可以向开发者举报不当或有害的 UGC,以供审查和删除/禁用(如果违反内容准则),和/或实施主动检测不当或有害 UGC 的方法(例如文本筛选)。
- 发布用户生成内容的内容准则(例如使用条款或行为准则),用户可以在产品内或游戏网站上获取这些准则。
- 做好准备,以便在极少数情况下,当 Microsoft 发现 XBOX 网络上存在尚未通过标准操作机制或流程处理的非法材料时,按照 Microsoft 的要求删除/禁用高风险非法内容。
- 遵守玩家的 UGC 设置,并妥善处理用户因权限受限而无法在游戏中访问 UGC 的情况。
- 与该平台的举报/投诉 API(如果可用)集成,并在与第三方的合同协议要求时审核内容。
- 当内容并非来自开发者时,向用户显示免责声明、对话框或视觉指示器。
018-01 举报不当内容和 UGC 文本字符串验证
测试步骤- 确定游戏中非好友之间可以输入文本、随后其他设备上的用户可以查看这些文本的所有区域。
- 验证游戏在产品内提供了一种向开发者举报其他用户不当或有害 UGC 的方式。
-
如果无法举报不当内容,请在每个区域中输入禁用术语列表中的字符串、子字符串等。
- 直接输入禁用术语(即“ForbiddenTerm”)。
- 输入禁用术语以及用空格分隔的另一个非禁用术语,即(“Good ForbiddenTerm”)。
- 如果游戏允许在脱机状态下创建 UGC(例如角色名称),请断开设备与网络的连接,输入禁用术语组合,然后重新连接到网络。
- 验证其他设备上的任何其他用户都看不到该禁用术语。
- 使用匹配区域设置中的禁用术语,以游戏支持的每种语言重复步骤 3-5。
游戏必须在产品内为用户提供向开发者举报不当或有害 UGC 的方式,和/或实施主动检测不当或有害 UGC 的方法(例如使用 StringService API 进行文本筛选)。不当或有害的内容必须在 XBOX 服务上对非本地玩家进行阻止或模糊处理。 XBOX 玩家代号不受 UGC 要求的约束,不应因 UGC 权限受限而受到文本筛选、游戏管理的举报选项或模糊处理的影响。 用户可以在产品内或游戏网站上获取 UGC 准则,例如使用条款或行为准则。 游戏不得为 UGC 权限受限的用户阻止整个游戏模式或体验。 通过示例
- XBOX 玩家代号未经过筛选、模糊处理,也不受游戏内举报的约束。
- 跨网络用户名、发行商管理的用户名、自定义角色名称或战队/小队/公会名称未经过模糊处理。
- 游戏在产品内为用户提供向开发者举报不当或有害 UGC 的方式。
- 游戏阻止发布不当或有害的 UGC,并通知用户发布失败的原因。
- 游戏将不当或有害的文本替换为字词或字符,例如 Content Blocked 或 $!*#&。
- 在游戏中实时共享(例如在大厅或游戏内文本叠加层中)或仅在好友之间共享的用户输入文本未经过筛选。
- 不当或有害的文本字符串对本地主机上的用户可见,但不会传输到本地主机以外的其他非好友。
- 用户可以在产品内或游戏网站上获取 UGC 准则,例如使用条款或行为准则。
- 游戏不会为 UGC 权限受限的用户阻止整个游戏模式或体验。
- XBOX 玩家代号经过筛选或模糊处理。
- 游戏未为用户提供向开发者举报不当或有害 UGC 的方式,或允许其他设备上的非好友看到不当或有害的 UGC。
- 游戏允许用户通过在脱机状态下创建 UGC 并随后在线共享来规避不当或有害 UGC 的筛选。
- 用户无法在产品内或游戏网站上获取 UGC 准则(例如使用条款或行为准则)。
- 游戏为 UGC 权限受限的用户阻止整个游戏模式或体验。
内容包和更新
此类别中的要求规定了游戏必须如何打包以及必须如何与附加内容包交互。XR-037:对内容包的依赖 *
用户不得被要求购买附加内容(耐用型或消耗型)才能完成基础游戏的任何主要功能或内容。可选内容包不得依赖于其他可选内容包。也就是说,不得要求用户下载其他内容包才能使用某个内容包。包含与附加内容关联的独特内容的游戏存档必须仍能在基础游戏中加载,或者提供明确的消息说明无法加载的原因。详细信息
此要求的关键方面包括:- 不得要求用户购买附加内容才能完成基础游戏的主要功能。
- 不得要求用户购买其他附加内容才能使用另一个内容包。附加内容必须能够独立于其他附加内容使用。
- 包含与附加内容关联的独特内容的游戏存档必须仍能在基础游戏中加载,或者提供明确的消息说明无法加载的原因。作为最佳做法,消息应包括提示:如果用户已拥有该内容,则提示其下载;如果未拥有,则提示其考虑购买。
- 支持多人游戏所需附加内容的游戏必须向未安装该内容的用户提供明确的消息。
实施指南和最佳做法
理想情况下,当用户之前使用过现已删除的附加内容进行游戏时,游戏应妥善处理这种情况,让用户加载其游戏存档并继续游戏。如果无法做到这一点,游戏必须向用户显示明确的消息,指出需要安装该内容才能加载游戏存档。游戏可以查询用户是否拥有该内容的权利,然后执行以下任一操作:- 如果用户已拥有特定内容,则提示用户下载该内容。
- 如果用户未拥有该内容,则提示用户考虑购买该内容。
037-01 基础游戏的游戏存档不依赖内容包
测试步骤- 登录 XBOX 个人资料并启动游戏。
- 尝试访问基础游戏的所有功能和内容。验证不要求用户下载任何附加内容。
- 下载可在游戏中使用的可用内容包。
- 加载并使用该内容包,推进足够远以创建基于内容的游戏存档。
- 返回主页并删除该内容包。
- 再次启动游戏。
- 确保可以成功加载游戏存档并继续游戏,或者明确告知用户无法继续的原因。
- 消息必须清晰,并具体告知用户如何排查问题。
- 对所有其他受支持的内容包重复步骤 1-8。
用户必须能够在无需购买附加内容的情况下完成基础游戏的任何主要功能和/或内容。在用户删除内容包后,游戏必须正常运行,或明确告知用户无法正常运行的原因。 通过示例
- 用户无需购买附加内容即可完成基础游戏中包含的所有功能和内容。用户删除内容包后,可以毫无问题地玩游戏的所有部分。
- 在内容包提供的区域内创建存档,随后删除该内容包后,游戏向用户显示明确的消息,指出需要安装内容 x 才能加载游戏存档。游戏还可以查询用户是否拥有该内容的权利,如果已拥有,则提示用户下载特定内容;如果未拥有,则提示用户考虑购买该内容。
- 用户被迫购买附加内容才能完成基础游戏中包含的功能或内容。用户在步骤 3 中下载内容包 1 和内容包 2 后,如果随后删除内容包 1,则无法在游戏中使用内容包 2。
- 存在内容与游戏存档的依赖关系且未安装该内容,而游戏未向用户显示明确的消息,指出需要安装该内容才能加载游戏存档。
037-02 不依赖其他内容包
测试步骤- 登录 XBOX 个人资料。
- 启动游戏。
- 下载游戏支持的单个附加内容。
- 尝试在游戏中使用该内容。
- 验证不要求用户下载其他内容即可使用步骤 3 中的内容。
- 退出游戏并删除步骤 3 中的内容。
- 对游戏支持的每项内容重复步骤 2-6。
不得要求用户下载其他内容包才能使用某个内容包。内容包必须能够独立使用。 通过示例
- 游戏不要求用户下载其他内容即可使用单独的内容包。
- 要求用户下载其他内容才能使用单独的内容包。
037-03 DLC 依赖
测试步骤- 登录 XBOX 个人资料。
- 下载游戏的可下载内容 (DLC)。
- 进入游戏,并使用 DLC 保存进度。
- 退出游戏。
- 从游戏设备(主机、电脑)中删除 DLC。
- 启动游戏并尝试访问已保存的进度。
当使用 DLC 创建的游戏存档存在而该 DLC 已不再安装时,游戏能够妥善处理这种情况。 通过示例
- 用户能够加载其已保存的进度,并毫无问题地与游戏交互。
- 系统通知用户需要特定 DLC 才能访问其游戏存档。
- 当 DLC 不存在时,游戏无法使用。
- 用户无法访问已保存的进度,并且未收到说明原因的通知。
037-04 多人游戏 DLC
测试步骤- 登录 XBOX 个人资料。
- 启动游戏。
- 游戏设备 A:下载可在多人游戏中使用的所有可用可下载内容。
- 游戏设备 A:使用可下载内容(关卡、角色、赛车、赛道等)主持游戏会话。
- 游戏设备 B:尝试使用所有可能的方法加入游戏设备 A 创建的游戏会话。
- 如果无法加入游戏会话,请验证系统提供了明确的指示,说明无法加入的原因或让用户能够轻松推断出原因。
- 对所有游戏模式重复步骤 3-6。
- 以游戏设备 B 作为主机重复步骤 3-6。
支持多人游戏所需可下载内容的游戏必须向未安装该可下载内容的用户提供明确的指示。 通过示例
- 当用户尝试加入有 DLC 要求的会话但不符合要求时,会向用户显示适当的消息,并提供有关如何解决问题(下载、重新下载等)的信息。
- 当用户尝试加入有 DLC 要求的会话但不符合要求时,会通过图标和/或其他屏幕元素向用户发出明确的通知,并向用户提供或让用户能够轻松推断出有关如何解决问题的信息。
- 符合多人游戏比赛 DLC 要求的用户能够加入会话并进行游戏。
- 不符合多人游戏会话 DLC 要求的用户未获得有关 DLC 要求及其解决方法的明确视觉指示。
- 符合多人游戏会话 DLC 要求的用户无法一起加入。
从游戏内商店和 Microsoft Store 购买
此类别中的要求规定了必须如何从游戏内商店和 Microsoft Store 进行购买。有关定价、元数据和优惠的政策,请参阅游戏发布指南。用户个人资料
此类别中的要求适用于游戏如何与 XBOX 用户模型、个人资料以及保存用户数据进行交互。XR-112:在初始激活和恢复期间建立用户和控制器 *
游戏必须建立一个或多个活动用户,作为游戏中的一个或多个主要用户,并在从挂起、睡眠或休眠状态恢复时处理这些用户。在 GDK 中,游戏通过使用简化用户模型或高级用户模型来实现这一点。 GDK 简化用户模型游戏 GDK 中的简化用户模型代表游戏处理默认用户的获取。游戏仍负责确保为用户分配控制器,并使用该控制器进行游戏输入。如果没有为默认用户分配控制器,游戏应使用 XUserFindControllerForUserWithUiAsync 调用系统对话框来选择控制器,并开始接受玩家的输入。 GDK 高级用户模型 在初始激活时,游戏可以根据其游戏设计和偏好来确定初始用户,既可以使用启动游戏的用户,也可以明确提示选择用户。 游戏必须在对活动用户的个人资料执行第一个与个人资料相关的操作(例如保存进度或设置)之前,指示该活动用户。 所有使用高级用户模型的 Microsoft Game Development Kit (GDK) 游戏都必须提供账户选择器的入口点,以便更改活动用户。 当游戏从挂起、睡眠或休眠状态恢复时,游戏必须验证用户/控制器配对,并相应地做出反应,恢复之前用户的会话或获取一个或多个新用户。[!Note] 下表显示了在使用 GDK 简化用户模型或 GDK 高级用户模型时,哪些 XR-112 测试用例适用于您的游戏。
112-02 初始用户和控制器
测试步骤- 登录个人资料 A 并启动游戏。
- 验证活动用户可以控制游戏。
- 在没有已登录个人资料的情况下重复步骤 [1],并验证游戏会提示建立活动用户。
- 建立活动用户,并验证该用户可以控制游戏。
游戏必须将活动用户设置为启动游戏的控制器/用户配对,或者显示参与提示以识别控制器和用户,或者显示账户选择器以进行登录。 通过示例
- 游戏将活动用户设置为启动游戏的控制器/用户配对。
- 游戏显示参与提示以识别控制器和用户。
- 游戏显示账户选择器以进行登录。
- 游戏不允许用户使用最初使用的控制器来控制游戏。
- 在没有用户登录的情况下启动时,游戏不提示用户建立活动用户。
112-03 无已登录用户
测试步骤- 验证没有用户登录。
- 启动游戏并进入支持保存用户数据的每种模式。
- 验证每种模式都会在发生任何数据丢失之前为用户提供登录的机会。
- 取消登录机会,并验证游戏会提供警告,指出进度将不会被保存。
如果游戏处于通常会保存用户数据或游戏状态的模式,则游戏必须为用户提供登录的机会。如果用户在未登录的情况下继续游戏,游戏必须通知用户其进度将不会被保存 通过示例
- 未登录的用户在访问通常会保存用户数据或游戏状态的游戏模式时,会收到登录提示。
- 如果用户在未登录的情况下继续该模式,则会收到进度将不会被保存的通知。
- 在通常会保存用户数据或游戏状态的模式中,如果用户在未登录的情况下继续该模式,不会收到进度将不会被保存的通知。
- 在数据丢失已经发生之后,用户才收到无法保存进度的通知。
112-04 活动用户指示
测试步骤- 登录一个之前从未使用过该游戏且没有关联存档数据的个人资料。
- 启动游戏。
- 验证游戏在执行任何与个人资料相关的操作之前,会在 UI 中标识活动用户。“与个人资料相关的操作”的示例包括更改用户的游戏存档或首选项、将数据保存到用户的个人资料、授予成就、为用户写入统计信息,或对用户数据或状态进行的任何其他本地或云端使用或操作。
- 创建存档。
- 重新启动游戏,并验证游戏在执行任何与个人资料相关的操作之前,会在 UI 中标识活动用户。
- 断开与 XBOX Live 的连接。
- 重新启动游戏,并验证游戏在执行任何与个人资料相关的操作之前,会在 UI 中标识活动用户。
游戏必须在执行第一个与个人资料相关的操作之前指示当前用户上下文。 通过示例
- 游戏在执行任何与个人资料相关的操作之前,在游戏中显示用户的玩家代号和/或玩家图片。
- 不使用用户个人资料的游戏不指示活动用户。
- 游戏针对支持多个用户的游戏模式显示多个活动用户。
- 游戏在执行与个人资料相关的操作之前未指示游戏的活动用户。
112-05 访问账户选择器
测试步骤- 登录个人资料并启动游戏。
- 确认游戏允许活动用户在游戏中访问账户选择器并选择其他个人资料。
游戏必须允许用户在游戏中访问账户选择器以更改活动用户。 通过示例
- 游戏允许用户在游戏中访问账户选择器。
- 游戏不允许用户在游戏中访问账户选择器。
112-06 处理个人资料更改
测试步骤- 登录个人资料并启动游戏。
- 访问账户选择器并选择其他个人资料。
- 验证游戏做出适当反应,并将活动用户的上下文切换到新的个人资料。
- 针对游戏中可访问账户选择器的每个位置重复步骤 1-4。
游戏必须允许用户无缝切换到另一个用户的上下文。 通过示例
- 游戏通知用户更改活动用户可能会导致数据丢失,并在进入账户选择器之前提示用户进行确认。
- 游戏适当地更新到新活动用户的上下文。
- 游戏未适当地更新到新活动用户的上下文。
112-08 在挂起、睡眠或休眠期间更改用户
有关如何在 XBOX 控制台上挂起游戏以及如何使 PC 或掌上设备进入睡眠和休眠状态,请参阅测试挂起、睡眠和休眠。 出于此测试用例的目的,在 XBOX 控制台上,在步骤 2 中通过启动”设置”应用并使其保持焦点十分钟来挂起游戏,以便可以更改已登录的用户。在 PC 和掌上设备上,在步骤 2 中使系统进入睡眠或休眠状态。 测试步骤- 登录个人资料并启动游戏。
- 在整个游戏的不同位置:
- 在 XBOX 控制台上,通过启动”设置”应用并使其保持焦点十分钟来挂起游戏。
- 在 PC 和掌上设备上,使系统进入睡眠或休眠状态。
- 当游戏处于挂起、睡眠或休眠状态时,更改活动用户。在 XBOX 控制台上,注销个人资料 A 并登录个人资料 B。在 PC 和掌上设备上,切换到其他 Windows 用户账户。
- 重新打开设备电源后,恢复游戏并验证游戏会对新的活动用户做出相应反应。
- 使用新的活动用户进入游戏过程,并验证该用户能够取得进展。
- 当游戏从挂起、睡眠或休眠状态恢复时,游戏必须验证所有之前参与的用户是否仍登录到游戏设备。
- 游戏在恢复时自动将活动用户上下文切换到个人资料 B。
- 游戏自动从游戏中移除个人资料 A,或重新建立新用户并使用该新用户的状态进行游戏。
- 游戏未进行更新以将个人资料 A 从活动用户上下文中移除。
- 选择新的个人资料后,游戏继续使用个人资料 A 的状态进行游戏。
XR-115:在游戏过程中添加和移除用户或控制器 *
支持多个用户的游戏必须按如下方式响应用户的添加和移除,以及活动玩家未分配控制器或在游戏过程中失去控制器的场景: 添加控制器:在游戏选择或接收初始用户和控制器之后,可以选择接受来自其他控制器的输入。支持多人体验的游戏应考虑如何将额外的玩家或控制器添加到游戏过程中,并通过
XUserAddAsync 将其绑定到用户。例如,“按 A 加入”或在玩家选择屏幕上显示控制器轮廓。
移除控制器:如果在游戏过程中移除了驱动游戏过程的玩家控制器,游戏必须允许重新建立新的活动控制器(例如,“按 A 继续”,或者针对拥有有效控制器的活动用户,在 ERA 中接收
ControllerPairingChanged 或在 GDK 中接收 XUserDeviceAssociationChangedCallback 事件)。游戏还可以使用 XUserFindControllerForUserWithUiAsync 调用系统 UX,提示用户将控制器与其用户配对并返回游戏过程。
添加用户:使用 GDK 时(使用简化用户模型或高级用户模型),只有在游戏调用
XUserAddAsync 时才会添加用户。
移除主要用户:对于使用 GDK 高级用户模型的游戏,如果主要用户已注销(通过指南、SPOP 或其他方式),游戏必须从游戏中移除该玩家,或者重新建立用户和活动控制器。 对于使用 GDK 简化用户模型的游戏,移除主要玩家会导致游戏在系统级别被挂起。 在所有场景中,游戏都通过使游戏处于良好状态来处理移除/关闭。这包括写入连接存储、通知任何相关的 MPSD 会话该用户已离开,以及在未添加新用户的情况下将用户带到适当的位置进行登录。 移除其他/次要用户:
游戏可以自行决定如何处理此事件,通常是立即将该玩家从游戏过程中移除,或者在所使用的多人体验上下文中提示该玩家重新加入。
[!Note] 下表显示了在使用 GDK 简化用户模型或 GDK 高级用户模型时,哪些 XR-115 测试用例适用于您的游戏。
115-02 移除控制器
测试步骤- 登录个人资料并启动游戏。
- 在使用游戏的不同时刻,取出控制器中的电池。
- 将电池装回控制器,并验证用户可以继续使用游戏。
- 重复步骤 1-3,但连接第二个控制器,而不是装回电池。
游戏必须正确响应控制器的移除和添加。 通过示例
- 在移除或添加控制器后,活动用户应能够继续使用游戏。
- 系统会提示用户重新建立新的活动控制器(例如,“按 A 继续”或通过调用系统 UX)。
- 移除控制器后,用户无法继续使用游戏。
115-03 移除用户
测试步骤- 登录个人资料 A,并确保没有其他个人资料登录。
- 启动游戏并进入游戏过程。
- 在使用游戏的不同时刻,注销个人资料 A。
- 验证游戏会调用账户选择器或将用户返回到前端。
- 在可能的情况下,通过以下方式与游戏交互:
- 登录个人资料 A,并确保游戏不会进一步中断用户的体验。
- 登录个人资料 B,并确保游戏更新到新用户的上下文。
游戏必须从游戏中移除该玩家,或者重新建立用户和活动控制器。如果从游戏中移除了该玩家,游戏应保持在良好状态。这包括写入连接存储、通知任何相关的 MPSD 会话该用户已离开,以及在未添加新用户的情况下将用户带到适当的位置进行登录。 通过示例
- 游戏从游戏中移除该玩家并返回到前端。
- 游戏允许用户重新建立新用户,并正确更新到相关的用户上下文。
- 游戏未对用户状态的更改做出反应。
- 选择新的个人资料后,游戏继续使用个人资料 A 的用户状态。
XR-045:XBOX 网络和账户权限 *
XBOX 网络为用户及其子女提供预期级别的隐私和在线安全。为了兑现这一承诺,游戏必须向 XBOX 网络服务检查权限,才能在 XBOX 网络服务上或游戏体验中完成某些操作。 尽管权限检查和遵守适用于所有账户,但请特别注意儿童账户的体验和期望。对于儿童账户,某些活动可能会因基于年龄的默认设置和/或儿童的家庭组织者(父母或监护人)的配置而被阻止。儿童无法自行进行更改,但对于某些活动,游戏可以而且应当调用必要的系统 UI,以便年幼的玩家可以通过审批流程为该相关活动请求例外。在这种情况下,例如,年幼的玩家可能会被全局阻止参与多人游戏,但家庭中的父母或监护人可以通过系统 UI 为特定游戏批准多人游戏;然后儿童就会而且应该能够在该特定游戏中访问此游戏模式。
免费游玩游戏、演示版或 Beta 版可以配置为允许非 Game Pass 订阅者的玩家进行多人游戏 (ID 254)。这是通过服务端配置实现的,可以通过联系您的 Microsoft 代表来启动。这些游戏必须继续检查多人游戏权限,以确保遵守家长控制和玩家的选择。
045-01 尊重用户权限
测试步骤- 登录 XBOX 个人资料并启动游戏。
- 对于 XR 备注中确定的每项权限,确定游戏是否支持相关活动。
- 对于步骤 2 中确定的每项适用权限的每种可能设置,执行以下操作:
- 退出游戏并更改用户对该权限的设置。
- 重新启动控制台。
- 登录同一个人资料并启动游戏。
- 访问游戏的所有相关区域,使用与该权限相关的所有游戏功能,并验证游戏遵守用户当前的权限设置。
- 尝试使用 Silver XBOX 个人资料访问所有离线和在线区域。
游戏必须遵守用户的权限设置。 通过示例
- 游戏遵守用户的权限设置。
- 游戏将部分允许的权限设置视为该权限已禁用/不允许(例如,当用户生成的内容 (UGC) 权限设置为”仅限好友”时,游戏的行为就像该权限设置为”已阻止”一样)。
- 对于使用 XDK 的游戏,游戏调用系统 UI 提醒用户任何权限冲突(游戏必须使用
Store::Product::CheckPrivilegeAsyncAPI)。当无法调用系统 UI 时(权限 252、189、247),游戏会显示一条信息性消息,让用户知道他们无法参与。 - 对于使用 GDK 的游戏,游戏调用系统 UI 提醒用户任何权限冲突(游戏必须使用
XUserCheckPrivilege和XUserResolvePrivilegeWithUiAsyncAPI)。当无法调用系统 UI 时(权限 252、189、247),游戏会显示一条信息性消息,让用户知道他们无法参与。 - 对于使用 XSAPI 的游戏,游戏会显示一条信息性消息,让用户知道他们无法参与。
- 游戏保留用户的权限设置,并且在用户的实际权限更改后不反映这些权限。
- 游戏将部分允许的权限设置视为该权限设置为其限制最少的设置(例如,当用户生成的内容 (UGC) 权限设置为”仅限好友”时,游戏的行为就像该权限设置为”允许”一样)。
- 对于使用 XDK 或 GDK 的游戏,游戏使用游戏内消息提醒用户任何权限冲突,而不显示系统 UI。
- 对于使用 XSAPI 的游戏,游戏不显示信息性消息来让用户知道他们无法参与。
045-02 尊重用户权限 - XBOX 家庭
测试设置和配置- XBOX 家庭,其中包括以下 Microsoft 账户:
- 指定为组织者的成人(18 岁以上)。
- 具有_儿童默认_权限设置的儿童(13 岁以下):
参考和链接
测试步骤
- 登录成人和儿童 Microsoft 账户,并使用儿童账户启动游戏。
- 对于 XR 备注中确定的每项权限,确定游戏是否支持相关活动。
- 对于步骤 2 中确定的每项适用权限的每种可能设置,执行以下操作:
- 根据账户权限验证相关活动是否被允许/不被允许。例如:游戏支持多人游戏,而儿童账户的多人游戏权限被阻止。验证游戏会阻止儿童的所有多人游戏活动,并且在儿童尝试参与多人游戏活动时会显示家长许可提示(系统 TCUI)。
- 退出游戏,针对游戏支持的权限活动更改用户的儿童权限设置,从阻止改为允许。例如:将多人游戏或用户生成的内容从阻止改为允许。
- 重新启动控制台。
- 登录同一个人资料并启动游戏。
- 访问游戏的所有相关区域,使用与该权限相关的所有游戏功能,并验证游戏遵守用户当前的权限设置。例如:游戏支持多人游戏。儿童之前被阻止,但现在已被授予多人游戏权限。游戏正确地允许儿童访问多人游戏模式。
- 在家长账户未登录控制台的情况下重复步骤 2-3。
游戏必须遵守所有 XBOX 家庭成员的权限设置。 通过示例
- 游戏遵守儿童的权限设置。
- 当某项活动的权限被允许时,游戏允许儿童参与该活动。
- 当某项活动的权限被阻止时,游戏不允许儿童参与该活动。
- 在家长(通过家长许可 UI)允许某项被阻止活动的许可后,游戏允许儿童参与该活动。
- 对于被阻止且家长(通过家长许可 UI)未允许许可的活动,游戏不允许儿童参与。
- 游戏将部分允许的权限设置视为该权限已禁用/不允许(例如,当用户生成的内容 (UGC) 权限设置为”仅限好友”时,游戏的行为就像该权限设置为”已阻止”一样)。
- 对于使用 XDK 的游戏,游戏调用系统 UI 提醒用户任何权限冲突(游戏必须使用
Store::Product::CheckPrivilegeAsyncAPI)。当无法调用系统 UI 时(权限 252、189、247),游戏会显示一条信息性消息,让用户知道他们无法参与。 - 对于使用 GDK 的游戏,游戏调用系统 UI 提醒用户任何权限冲突(游戏必须使用 XUserCheckPrivilege 和
XUserResolvePrivilegeWithUiAsyncAPI)。当无法调用系统 UI 时(权限 252、189、247),游戏会显示一条信息性消息,让用户知道他们无法参与。 - 对于使用 XSAPI 的游戏,游戏会显示一条信息性消息,让用户知道他们无法参与。
- 游戏不遵守儿童的权限设置。
- 示例:游戏支持多人游戏,并允许多人游戏权限被阻止的儿童访问多人游戏模式。
- 游戏未调用适当的 UI 来提醒儿童并告知其权限冲突。
- 示例:游戏支持多人游戏,但在权限被阻止时,从未提示儿童请求家长许可。
- 当某项活动的权限被阻止时,游戏允许儿童参与该活动。
- 当某项活动的权限被允许时,游戏不允许儿童参与该活动。
- 对于被阻止且家长(通过家长许可 UI)未允许许可的活动,游戏允许儿童参与。
- 对于被阻止但家长(通过家长许可 UI)已允许许可的活动,游戏不允许儿童参与。
- 游戏保留用户的权限设置,并且在用户的实际权限更改后不反映这些权限。
- 示例:游戏支持多人游戏。儿童账户的多人游戏被阻止,但家长通过系统 UI 授予了许可。尽管已授予该权限,游戏仍继续阻止多人游戏。
- 游戏将部分允许的权限设置视为该权限设置为其限制最少的设置。例如:当用户生成的内容 (UGC) 权限设置为”仅限好友”时,游戏的行为就像该权限设置为”允许”一样。
- 对于使用 XDK 的游戏,游戏未调用系统 UI 提醒用户任何权限冲突(游戏必须使用
Store::Product::CheckPrivilegeAsyncAPI)。当无法调用系统 UI 时(权限 252、189、247),游戏未显示信息性消息来让用户知道他们无法参与。 - 对于使用 GDK 的游戏,游戏未调用系统 UI 提醒用户任何权限冲突(游戏必须使用
XUserCheckPrivilege和XUserResolvePrivilegeWithUiAsyncAPI)。当无法调用系统 UI 时(权限 252、189、247),游戏未显示信息性消息来让用户知道他们无法参与。 - 对于使用 XSAPI 的游戏,游戏未显示信息性消息来让用户知道他们无法参与。
XR-046:显示名称和玩家图片 *
在 XBOX 控制台上,游戏必须使用玩家代号作为其主要显示名称。 根据设计选择,游戏可以在玩家的新式玩家代号或经典玩家代号之间进行选择。新式玩家代号在 GDK 中可用,经典玩家代号在 ERA 和 GDK 中均可用。 在非控制台平台上,虽然不是必需的,但我们建议您在游戏体验中的适当位置使用 XBOX 网络玩家的玩家代号。 必须根据所使用的玩家代号类型在游戏中正确显示玩家代号: 新式玩家代号显示唯一新式玩家代号的全部 16 个字符,其中包括最多 12 个字符的新式玩家代号,后跟 # 和后缀数字(如果存在)。例如:Major Nelson(不存在后缀)或 Major Nelson#881。如果使用新式玩家代号,则必须支持新式玩家代号可用的所有 Unicode 字符范围。有关新式玩家代号的更多信息和最佳做法,请访问 GDK 开发文档文章”新式玩家代号概述”。 经典玩家代号
正确显示经典玩家代号的全部 15 个字符。经典玩家代号仅包含 ASCII 字符 a-z、A-Z、0-9、逗号 (,) 和空格(ASCII 字符 0x20)。例如:Major Nelson 在 GDK 中,这些项是使用 XUserGetGamertag API 返回的。在 ERA 中,玩家代号是使用
GetUserProfileAsync API 获取的。
046-01 显示名称和玩家图片
所需工具- GDK 中的 XblTestAccountGui.exe
为以下每个名称创建四个测试账户,并使用 XblTestAccountGui.exe 将每个测试账户的玩家代号更改为以下内容:
- สฐ众нь컴퓨퓨
- आथाώঙぁヺ
- øÜêþЯЂў
- gttest1
- 找到并查看游戏中显示玩家代号的位置。
- 检查用户的玩家代号在步骤 [1] 中确定的所有区域中的显示方式。
- 如果游戏显示用户的图片,请验证每个账户都显示了正确的 Microsoft 账户图片或玩家图片。
必须正确显示用户的玩家代号。 通过示例
- 使用新式玩家代号时,玩家代号正确显示 Unicode 字符(包括自动生成的后缀)。
- 使用经典玩家代号时,玩家代号正确显示。
- 由于 Unicode 字符显示为空白字符,玩家代号根本未呈现。
- 使用经典玩家代号时,玩家代号未正确显示。
XR-047:用户个人资料访问 *
在枚举用户显示名称的任何位置,游戏都必须为用户提供访问其他 XBOX 网络用户的玩家卡(用户个人资料)的选项。047-01 用户个人资料访问
测试步骤- 设备 1 和 2:启动游戏。
- 设备 1 和 2:登录 XBOX 个人资料。
- 设备 1:设置 XBOX 多人游戏会话。
- 设备 2:查找并加入由控制台 1 创建的游戏会话。
- 在设备 2 加入游戏会话后,验证以下内容:
- 在游戏前大厅中,通过选择玩家代号或用户名来访问另一个 XBOX 用户的玩家卡。
- 在游戏过程中,尝试通过选择用户的用户名或玩家代号来访问另一个 XBOX 用户的玩家卡(根据游戏的不同,这可能可行,也可能不可行)。
- 在游戏后统计信息屏幕中,通过选择用户的用户名或玩家代号来访问另一个 XBOX 用户的玩家卡。
- 在排行榜区域中,通过选择用户的用户名或玩家代号来访问另一个 XBOX 用户的玩家卡。
- 查找列出玩家代号的任何其他区域,并尝试通过选择用户的用户名或玩家代号来访问另一个 XBOX 用户的玩家卡。
预期用户将能够查看其他 XBOX 用户的玩家卡信息。 通过示例
- 在显示玩家代号且启用了 UI 导航的所有位置,用户都能够访问另一个 XBOX 用户的玩家卡。
- 无论是否启用了 UI 导航,用户都能够在排行榜、会话大厅、游戏后统计信息和其他游戏内菜单中访问另一个 XBOX 用户的玩家卡。
- 在显示玩家代号且可以进行 UI 导航的任何位置,用户无法访问另一个 XBOX 用户的玩家卡。
- 无论是否启用了 UI 导航,用户都无法在排行榜、会话大厅、游戏后统计信息和其他游戏内菜单中访问另一个 XBOX 用户的玩家卡。
- 在显示玩家代号且启用了 UI 导航的任何位置,用户无法访问另一个 XBOX 用户的玩家卡。
XR-048:个人资料设置的使用 *
XBOX 网络是 XBOX 用户个人资料信息的可信来源。为了支持这一点,除了为支持网络断开场景而在本地存储的缓存之外,游戏不得存储来源于 XBOX 网络的用户信息,例如个人资料数据、首选项或玩家代号。任何离线缓存都必须在下一次可以连接到服务时进行更新。048-01 个人资料设置的使用
配置- 2 台 XBOX 设备
- 选择一个个人资料并创建存档。
- 更改用户个人资料数据,包括更新玩家代号或账户名称。
- 启动游戏并加载在步骤 [2] 中创建的存档。
- 验证游戏过程中可见的用户个人资料数据已更改,并且未存储在游戏存档中。
- 验证对玩家代号的任何引用(由游戏自动创建)都已更新。这包括服务器托管功能上的任何引用以及游戏内的任何引用。
- 在第二台设备上启动游戏,并验证更新后的玩家代号正确显示。
不得存储用户个人资料数据。例如,如果游戏在游戏中(如在欢迎消息中)或在非 XBOX 服务器上(如为上传的数据命名)使用玩家代号,则在用户更改其玩家代号时,不得保留该玩家代号。如果用户是手动输入的玩家代号,则此规定不适用。 通过示例
- 用户个人资料数据和首选项设置在更改后,在所有显示位置都会更新。
- 对于本地存储的存档数据(例如回放、存档、选项、地图和队伍),游戏未在游戏中或在 XBOX 主页上显示用户更新后的玩家代号或 Microsoft 账户名称。
- 游戏未针对持久发布内容更新用户的玩家代号,例如游戏剪辑、回放、排行榜或其他自定义发布内容,如消息、公告帖子、用户挑战、服装、主题、涂装、锦标赛和联赛。 注意:这同时适用于新的和以前创建的发布内容。
- 游戏为用户的存档数据(例如回放、存档、选项、地图和队伍)存储用户的玩家代号,导致用户更改其玩家代号或账户名称后存档数据变得不可用。
XR-052:用户状态和游戏存档位置、漫游及依赖项 *
游戏必须将进度、保存的状态、首选项、成就和其他奖励与记录该进度、选择该首选项或获得该奖励的用户相关联。游戏通过正确处理用户更改通知来实现这一点。游戏必须避免为不再登录的用户保存状态。游戏存档数据不得对共享内容或本地存储有任何依赖。 对于跨平台、跨设备和/或跨控制台世代使用相同 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®),不要求游戏存档漫游,但建议这样做以支持玩家体验。
更多信息
共享内容是指在加载游戏存档时可能不存在于漫游到的控制台上的内容,例如游戏加载项。该内容可能不可用,因为当前登录的用户尚未下载或不拥有该内容。 使用 GDK 的开发人员可以使用XGameSave、XGameSaveFiles 或 PlayFab Game Saves 作为实现这些要求的简便方法。
- 有关使用 GDK 保存游戏状态的信息,请阅读游戏存档。
- 有关使用 GDK 管理游戏状态和保存数据的信息,请阅读 XBOX 游戏生命周期。
[!Note] 下表显示了在使用 GDK 简化用户模型或 GDK 高级用户模型时,哪些测试用例适用于您的游戏。有关使用简化用户模型与高级用户模型的更多详细信息,请参阅 XR-112。
052-01 用户登录和注销
测试步骤- 确保个人资料 A 具有存档数据,包括游戏进度和用户首选项。
- 确保个人资料 B 没有任何存档数据。
- 登录个人资料 A 并启动游戏。通过访问游戏的所有区域来确保所有存档数据都已保留,这些区域包括但不限于:
- 单人或多人游戏会话
- 菜单
- 视频或音频播放
- 注销个人资料 A 并登录个人资料 B。
- 通过重新访问在步骤 3 中验证过的游戏的所有区域,验证游戏正确更新了个人资料 B 的用户进度、保存的状态、首选项、成就或其他奖励。
- 开始游戏以创建存档进度,并更改个人资料 B 的用户首选项。
- 终止并重新启动游戏,并验证步骤 6 中的存档数据已准确反映。
- 注销个人资料 B。
- 从个人资料 A 中删除”所有位置”的存档数据,然后重复步骤 3-7。
游戏应适当地处理主要用户的更改。 通过示例
- 在用户更改后,用户进度、保存的状态、首选项、成就或其他奖励与正确的用户相关联。
- 在用户更改后,游戏错误地将用户进度、保存的状态、首选项、成就或其他奖励与某个用户相关联。
- 游戏继续将存档数据授予第一个用户。
- 新用户可以在之前的用户注销后更改该用户的存档数据、状态或个人资料。
052-02 在挂起、睡眠和休眠期间更改用户
有关如何在 XBOX 控制台上挂起游戏以及如何使 PC 或掌上设备进入睡眠和休眠状态,请参阅测试挂起、睡眠和休眠。 出于此测试用例的目的,在 XBOX 控制台上,在步骤 2 中通过启动”设置”应用并使其保持焦点十分钟来挂起游戏,以便可以更改已登录的用户。在 PC 和掌上设备上,在步骤 2 中使系统进入睡眠或休眠状态。 测试步骤- 登录个人资料并启动游戏。
- 在整个游戏的不同位置:
- 在 XBOX 控制台上,通过启动”设置”应用并使其保持焦点十分钟来挂起游戏。
- 在 PC 和掌上设备上,使系统进入睡眠或休眠状态。
- 更改活动用户。在 XBOX 控制台上,注销主要用户并以其他用户身份登录。在 PC 和掌上设备上,切换到其他 Windows 用户账户。
- 使用新用户启动游戏,并尝试从之前用户的位置继续。
- 针对游戏的所有区域重复步骤 1-4。
游戏应适当地处理主要用户的更改。 通过示例
- 使用其他用户启动时的游戏状态在上下文上适合该游戏的类型。
- 在用户更改后,用户进度、保存的状态、首选项、成就或其他奖励与正确的用户相关联。
- 在用户更改后,游戏错误地将用户进度、保存的状态、首选项、成就或其他奖励与某个用户相关联。
- 游戏继续将存档数据授予第一个用户。
- 新用户可以在之前的用户注销后更改该用户的存档数据、状态或个人资料。
052-05 正确的用户关联
测试步骤- 登录个人资料并启动游戏。
- 进入游戏过程并保存游戏进度。
- 终止游戏。
- 注销步骤 1 中的个人资料并登录新的个人资料。
- 启动游戏并尝试访问保存的进度。
为原始用户保存的进度不得对新的个人资料可见/可访问。 通过示例
- 步骤 5 中仅显示与步骤 4 中的新个人资料关联的保存进度。
- 游戏允许新的个人资料加载其他个人资料的保存进度。
052-06 云存储:漫游
所需设备- XBOX One
- XBOX One S
- XBOX One X
- XBOX Series X|S
- 2 台 PC
- 在设备 A 上登录 XBOX 个人资料并启动游戏。
- 开始游戏并创建存档进度(如果可能,通过更改或添加新的设置配置来创建设置存档)。
- 退出游戏。
- 使用步骤 1 中使用的同一个人资料,在与步骤 1 中所用设备属于同一平台/世代的第二台设备(例如,XBOX Series S 和 XBOX Series X、XBOX One 和 XBOX One S,以及第二台 PC)上登录。
- 启动步骤 1 中的同一游戏,并验证所有游戏存档以及任何设置和/或配置文件都可以正确访问和加载,并且它们对共享内容没有任何依赖。
- 对于在同一平台上跨世代使用相同 TitleID 的游戏(例如,XBOX One 和 XBOX Series X|S),重复步骤 4。
- 对于在 Windows 平台上使用相同 TitleID 的 PC 游戏,重复步骤 4。
- 如果支持,对于跨平台使用相同 TitleID 的游戏(例如,Windows 和 XBOX Series X|S):
- 在其他受支持的平台上启动步骤 1 中的同一游戏,并验证所有游戏存档以及任何设置和/或配置文件都可以正确访问和加载,并且它们对共享内容没有任何依赖。
当用户登录到 XBOX 服务时,游戏存档进度必须与用户个人资料相关联,并且必须在同类设备/平台之间漫游。对于在同一平台上跨世代使用相同 TitleID 的游戏,游戏存档数据必须在这些平台之间漫游。对于在 Windows 平台上使用相同 TitleID 的 PC 游戏,游戏存档数据必须在不同的 PC 之间漫游。游戏存档数据不得对共享内容有任何依赖。 通过示例
- 可以在同一控制台平台/世代的第二台控制台(例如,XBOX Series S 和 XBOX Series X 或 XBOX One 和 XBOX One S)上成功下载游戏存档和关联的设置文件。
- 可以在 Windows 平台上的第二台 PC 上成功下载游戏存档和关联的设置文件。
- 对于在同一平台上跨世代共享相同 TitleID 的控制台游戏(例如 XBOX One 和 XBOX Series X|S),存档和关联的设置文件可以在这些设备之间漫游。
- 游戏存档数据对共享内容没有任何依赖。
- 无法在同一平台/世代的第二台控制台(例如,XBOX Series S 和 XBOX Series X 或 XBOX One 和 XBOX One S)上成功下载游戏存档和关联的设置文件。
- 无法在 Windows 平台上的第二台 PC 上成功下载游戏存档和关联的设置文件。
- 对于在同一平台上跨世代共享相同 TitleID 的控制台游戏(例如 XBOX One 和 XBOX Series X|S),存档和关联的设置文件无法在这些设备之间漫游。
- 游戏在首次启动时无法识别云中的存档,并且在没有任何用户交互的情况下,这些存档随后在第二台设备上被覆盖。
- 游戏存档数据对共享内容存在依赖。
成就和奖励
以下要求适用于在 XBOX 网络上提供成就的游戏。所有面向 XBOX 主机的游戏都必须具有成就并满足以下要求。试玩版不允许具有成就;但可以选择支持 Hero Stats。XR-055:成就和玩家分数 *
游戏在发布时必须提供所需数量(最小值和最大值)的成就及其关联的玩家分数。游戏在发布后可随时添加成就或玩家分数,无论是否附带相应的新内容,但不得超过基于游戏或基于日历的限制。 单个成就不得超过 200 玩家分数,并且游戏中的所有成就都必须可以达成。 在基础游戏或内容更新中解锁成就必须代表对游戏内容的深入探索或投入。[!Note] “每半年”指 1 月至 6 月、7 月至 12 月。基础游戏的成就和玩家分数不计入每半年的限制。成就不得在多个游戏之间共享。当单个游戏通过使用相同的游戏 ID 在不同设备上受支持时,该游戏必须共享同一组成就,并且可以自行决定是否拥有特定于设备的成就。 成就名称和说明只能包含评级为 PEGI 12、ESRB EVERYONE 10+ 或更低级别的内容。成就名称和说明不得包含通常被视为脏话的内容,无论是明文形式还是经过删改的形式。
055-01 成就
测试步骤- 查看游戏支持的玩家分数数量和成就总数。
- 通关游戏并尝试获得尽可能多的成就。
- 在主机上从挂起状态恢复后,以及在 PC 或掌机设备上从睡眠和休眠状态恢复后,重复步骤 2。
- 在与 XBOX 服务断开连接时重复步骤 2。
所有成就均按照其条件解锁,并且基础游戏发布时可获得的最大玩家分数为 1000G,分布在 10-100 个成就之间。所有成就都代表对游戏内容的深入探索或投入。 通过示例
- 所有成就都可以获得。
- 成就按照其条件解锁。
- 所有成就都代表对游戏内容的深入探索或投入。
- 游戏的发布版本具有 1000 玩家分数,分布在 10-100 个成就之间。
- 满足条件时成就未解锁。
- 在满足条件之前成就就已解锁。
- 成就不代表对游戏内容的深入探索或投入。
- 在开始游戏后的几分钟内即可解锁所有成就。
- 无需任何(或只需极少)用户输入即可解锁成就,除非这是核心游戏循环所必需的。
- 游戏的发布版本没有 1000G。
- 游戏的发布版本的成就数多于或少于 10-100 个。
- 在主机上从挂起状态恢复后,或在 PC 或掌机设备上从睡眠或休眠状态恢复后,成就未解锁。
- 单个成就超过 200 玩家分数。
- 重新连接到 XBOX 服务后成就未解锁。
XR-057:解锁成就 *
游戏必须为用户提供一种方式,使其无需购买额外的游戏内内容即可获得基础游戏定义的所有成就。 成就必须通过游戏内操作、游戏玩法和/或体验来解锁。 游戏不得为玩家提供无需相应游戏活动即可直接解锁成就的替代选项。不允许的选项包括但不限于:- 真实货币购买
- 游戏内作弊码、控制台或菜单选项
057-01 基础成就无需额外购买
测试步骤- 查看基础游戏中的成就说明。
- 验证这些成就不需要额外购买或额外内容。
- 获得所有成就。
无需购买额外的游戏内内容即可获得所有成就。 通过示例
- 无需购买额外的游戏内内容即可获得所有成就。
- 没有任何成就需要额外的游戏内内容。
- 用户必须购买额外的游戏内内容才能解锁基础游戏定义的成就。
多人游戏会话
此类别中的要求适用于在 XBOX 上提供多人游戏会话的游戏。XBOX 提供了一种一致且简单的方式来查找多人游戏会话,并微调用于查找这些会话的参数。XR-064:可加入的游戏会话和在线游戏 *
提供可加入的多人游戏或合作体验的游戏,必须使用 Multiplayer Activity (MPA) 功能通过 XBOX 外壳界面公布可加入性。公布可加入的活动后,玩家能够通过 XBOX 外壳(例如好友列表、玩家卡和 Game Bar)加入游戏以及发送和接收邀请,包括存在跨网络玩家的场景。更多信息
可加入的体验是指其他玩家可以合理加入的任何在线会话,例如合作战役、随时加入的多人游戏或社交空间。当游戏通过 MPA 公布可加入的活动时,XBOX 外壳会显示该会话,以便好友可以直接加入或从外壳中受邀加入。 当玩家不再可加入时,游戏必须清除所公布的活动,以便外壳不会显示无法进入的会话。当加入无法完成时,游戏必须向玩家显示消息说明原因(例如,会话已满或需要可下载内容)。 XBOX 外壳不会强制执行会话容量限制;游戏负责管理玩家数量,并在会话已满时拒绝加入或将加入请求排队。仅支持通过匹配加入的游戏(例如排位赛)无需通过 XBOX 外壳公布可加入性。游戏可以将加入限制在满足先决条件(例如所需的可下载内容)的前提下,前提是已向玩家明确说明。邀请
对于可加入的会话,从 XBOX 外壳发送的平台邀请必须始终可用。建议提供游戏内邀请,但这并非硬性要求;游戏无需先提供游戏内邀请机制,玩家即可通过外壳邀请他人。 当游戏确实提供游戏内邀请机制时,该机制必须通过 XBOX 平台发送邀请,以便接收者通过 XBOX 外壳通知收到邀请。游戏可以限制谁可以发送邀请(例如,仅限主持人或队长),并且可以仅显示玩家 XBOX 好友中的一部分。仅可在某个系列、俱乐部或战队内加入的游戏可以相应地限定邀请范围。实施指南和最佳实践
使用 Multiplayer Activity (MPA) 功能公布可加入的活动以及发送和接受邀请。不要为同一目的将 MPA 与旧版 Multiplayer Session Directory (MPSD) 混合使用,因为同时维护两者可能会产生重复记录和加入冲突。每当会话变为不可加入时都应清除活动,并使用 XBOX 平台邀请 API,以使平台邀请和游戏内邀请的行为保持一致。 有关使用 GDK 公布可加入活动和发送邀请的信息,请阅读 Multiplayer Activity 概述。064-01 从游戏外部加入游戏会话
配置- 两个 XBOX 个人资料
- 设备 1 个人资料 A - 与个人资料 B 是好友
- 设备 2 个人资料 B - 与个人资料 A 是好友
- 使用个人资料 A 创建一个可加入的游戏会话。
- 使用未运行该游戏的个人资料 B,通过 XBOX 外壳界面访问好友列表,并验证个人资料 A 列为可加入。
- 某些游戏可能仅支持私人多人游戏会话,因此不会对个人资料 B 显示为可加入,在这种情况下,请跳到步骤 6。
- 个人资料 B 加入个人资料 A 的游戏。
- 确认两个个人资料一起进入游戏体验。
- 在主机上游戏处于挂起状态时,以及在 PC 或掌机设备上系统处于睡眠或休眠状态时,使用个人资料 B 重复步骤 1-4。
- 重复步骤 1-5,但这次不是由个人资料 B 通过好友列表加入,而是由个人资料 A 通过系统外壳向个人资料 B 发送游戏邀请,并确保个人资料 B 可以接收、接受并加入个人资料 A。
用户 B 必须能够加入用户 A 的游戏,并一起进入游戏体验。对于仅支持私人多人游戏会话、因此不会对个人资料 B 显示为可加入的游戏,可以接受邀请作为加入个人资料 A 的唯一机制。对于仅支持通过匹配加入会话的多人游戏会话(例如排位赛),可以不支持通过 XBOX 外壳界面加入。对于支持跨平台多人游戏的游戏,用户必须能够在 XBOX One 主机和 PC 之间加入。 通过示例
- 两个个人资料一起进入游戏体验。
- 用户 B 能够加入用户 A 的游戏,并一起进入游戏体验。
- 由于游戏仅支持私人多人游戏会话,用户 A 未在 XBOX 外壳界面的好友列表中显示为可加入,但用户 A 可以通过系统外壳向用户 B 发送游戏邀请。
- 用户 A 在参与仅支持通过匹配加入的会话(例如排位赛)时,未显示为可加入,并且无法通过 XBOX 外壳界面发送游戏邀请。
- 用户 B 无法成功加入用户 A 的游戏,并且未进入游戏体验。
- 由于游戏仅支持私人多人游戏会话,用户 A 未在 XBOX 外壳界面的好友列表中显示为可加入,并且用户 A 无法通过系统外壳向用户 B 发送游戏邀请。
064-02 从同一游戏中加入游戏会话
配置- 2 个 XBOX 个人资料
- 设备 1 个人资料 A - 与个人资料 B 是好友
- 设备 2 个人资料 B - 与个人资料 A 是好友
- 使用个人资料 A 启动游戏,并在游戏中创建一个可加入的游戏会话。
- 使用个人资料 B 启动同一游戏,并进入游戏中的某个体验。
- 使用个人资料 B,通过 XBOX 外壳界面访问好友列表,并选择加入个人资料 A 的游戏。
- 某些游戏可能仅支持私人多人游戏会话,因此不会对个人资料 B 显示为可加入,在这种情况下,请跳到步骤 5。
- 确认两个个人资料一起进入游戏体验。
- 重复步骤 1-4,但这次不是由个人资料 B 通过 XBOX 外壳界面的好友列表加入,而是由个人资料 A 通过系统外壳向个人资料 B 发送游戏邀请,并确保个人资料 B 可以接收、接受并加入个人资料 A。
用户 B 必须能够加入用户 A 的游戏,并一起进入游戏体验。对于仅支持私人多人游戏会话、因此不会对个人资料 B 显示为可加入的游戏,可以接受邀请作为加入个人资料 A 的唯一机制。对于仅支持通过匹配加入会话的多人游戏会话(例如排位赛),可以不支持通过 XBOX 外壳界面加入。对于支持跨平台多人游戏的游戏,用户必须能够在 XBOX One 主机和 PC 之间加入。 通过示例
- 两个个人资料一起进入游戏体验。
- 用户 B 能够加入用户 A 的游戏,并一起进入游戏体验。
- 由于游戏仅支持私人多人游戏会话,用户 A 未在 XBOX 外壳界面的好友列表中显示为可加入,但用户 A 可以通过系统外壳向用户 B 发送游戏邀请。
- 用户 A 在参与仅支持通过匹配加入的会话(例如排位赛)时,未显示为可加入,并且无法通过 XBOX 外壳界面发送游戏邀请。
- 用户 B 无法成功加入用户 A 的游戏,并且未进入游戏体验。
- 由于游戏仅支持私人多人游戏会话,用户 A 未在 XBOX 外壳界面的好友列表中显示为可加入,并且用户 A 无法通过系统外壳向用户 B 发送游戏邀请。
064-03 游戏内邀请
此测试用例仅适用于提供游戏内邀请机制的游戏。 配置- 两个 XBOX 个人资料,各自登录到不同的设备
- 设备 1 个人资料 A - 与个人资料 B 是好友
- 设备 2 个人资料 B - 与个人资料 A 是好友
- 将用户 A 和 B 登录到各自的设备。
- 两个用户都启动游戏。
- 用户 A 创建一个游戏会话,并找到用于发送邀请的游戏内选项。
- 用户 A 向用户 B 发送游戏邀请。
- 个人资料 B 在以下每个区域中接受邀请,以加入个人资料 A 的游戏会话。
- 从初始启动序列到初始交互状态之间的任何位置
- 主菜单(如果有)
- 单人游戏过程中(如果有)
- 多人游戏过程中(如果有)
- 在主菜单上(如果有),游戏在主机上处于挂起状态时,或在 PC 或掌机设备上处于睡眠或休眠状态时
- 在单人游戏过程中(如果有),游戏在主机上处于挂起状态时,或在 PC 或掌机设备上处于睡眠或休眠状态时
- 游戏在主菜单上处于受限状态时(如果有)
- 游戏在任何游戏过程中处于受限状态时(如果有)
- 确认每次邀请后两个个人资料都一起进入游戏体验。
当游戏提供游戏内邀请机制时,该机制必须通过 XBOX 平台发送邀请,以便个人资料 B 通过 XBOX 外壳通知收到邀请,并可以加入个人资料 A 主持的会话。 游戏可以限制谁可以向会话发送邀请(例如,在团队游戏中仅限队长)。 对于这种情况,游戏无需采用确认破坏性操作的方法。由于游戏无法阻止邀请或加入操作的执行,因此即使该操作会对游戏产生破坏性影响,也无需请求确认。 对于支持跨平台多人游戏的游戏,用户必须能够通过邀请在 XBOX One 主机和 PC 之间加入会话。 通过示例
- 游戏内邀请选项通过 XBOX 平台发送邀请,个人资料 B 通过 XBOX 外壳接收并接受邀请。
- 玩家在游戏中接受游戏邀请时,不会收到确认破坏性操作的消息。
- 当设备上没有所需的 DLC 时,邀请已完成,但会话无法开始/启动。这一点已向玩家明确说明。
- 如果能清楚地知道谁是主持人,则只有游戏会话的主持人可以发送邀请。
- 游戏内邀请机制未通过 XBOX 平台发送邀请,因此个人资料 B 未通过 XBOX 外壳收到邀请。
- 接受游戏邀请后,活动玩家未被带入其受邀加入的游戏会话。
- 当设备上没有所需的 DLC 时,邀请未完成,并且未向玩家显示相关消息。
064-04 不可加入的游戏
配置- 3 个 XBOX 个人资料,各自登录到不同的设备
- 设备 1 个人资料 A - 与个人资料 B 和 C 是好友
- 设备 2 个人资料 B - 与个人资料 A 是好友
- 设备 3 个人资料 C - 与个人资料 A 是好友
- 使用个人资料 A 启动游戏并创建一个可加入的游戏会话。
- 使用个人资料 A 邀请个人资料 B 和 C 加入游戏。
- 使用个人资料 A 进入一个游戏会话,使 A 加入后只剩下一个空位。
- 使用个人资料 B 接受邀请。
- 确认个人资料 A 和 B 正在一起游戏。
- 使用个人资料 C 接受邀请并尝试加入游戏会话。
系统请个人资料 C 等待下一次加入机会,或者向个人资料 C 显示消息说明无法加入游戏会话的原因。 通过示例
- 系统请个人资料 C 等待下一次加入机会。
- 向个人资料 C 显示消息说明无法加入游戏会话的原因。
- 系统未请个人资料 C 等待下一次加入机会,也未向个人资料 C 显示加入失败的消息。
XR-067:维护“最近一起玩过”互动 *
具有在线多人游戏功能的游戏必须使用 Multiplayer Activity (MPA) Recent Players 功能在 XBOX 网络上记录有意义的玩家互动。记录互动可让 XBOX 网络了解哪些玩家一起玩过游戏,以便平台显示“最近一起玩过”列表、玩家反馈和使用情况报告。 对于仍在使用旧版 Multiplayer Session Directory (MPSD) 的游戏,可以改为在 MPSD 中维护会话状态信息。不要为此目的同时使用 MPA Recent Players 和 MPSD,因为同时维护两者可能会产生重复记录。067-01 “最近一起玩过”互动
测试步骤- 登录 XBOX 个人资料,并在多台设备上启动游戏。
- 与所有玩家完成一个 XBOX 游戏会话。
- 返回主页并查看“最近一起玩过”列表,验证游戏会话中的所有玩家均已包含在内。
- 再重复步骤 1-3 几次,但每次都使用新帐户。
- 重复步骤 1-4,但这次让一个或多个玩家在游戏过程中离开,并确保其个人资料在步骤 2 期间仍显示在“最近一起玩过”列表中。
用户必须能够查看最近玩过的每个游戏会话中的所有玩家。 通过示例
- 所有个人资料都包含在设备的“最近一起玩过”列表中。
- 并非所有个人资料都包含在设备的“最近一起玩过”列表中。
- 在多人游戏过程中退出的用户未显示在“最近一起玩过”列表中。
XR-070:好友列表 *
游戏必须使用 XBOX 网络好友列表作为主要好友列表。游戏必须从 XBOX API 获取好友列表,并且不得在游戏服务器上永久存储好友列表。 对于不在 XBOX 网络上或不在用户的 XBOX 网络好友列表中的玩家,游戏可以显示来自中央游戏帐户的辅助好友列表。根据设计,游戏可以在一个中心位置创建同时包含 XBOX 网络好友和发行商帐户好友的混合好友列表体验;必须使用图标或其他说明性标记来区分 XBOX 好友与其他网络上的好友。 有关使用 GDK 使用好友列表的信息,请阅读 People System(好友列表)概述070-01 XBOX 好友列表
测试步骤- 找到游戏中显示的任何人员列表,并验证其中包含 XBOX 网络好友列表。
- 如果游戏支持同时包含 XBOX 网络好友和发行商帐户好友的混合好友列表,请验证是否使用图标或其他说明性标记对其进行了区分。
游戏必须通过 XBOX API 使用 XBOX 网络好友列表作为主要好友列表,并且不得在游戏服务器上永久存储这些好友。在显示同时包含 XBOX 网络好友和发行商帐户好友的混合好友列表时,游戏必须对好友进行区分。 通过示例
- 游戏通过 XBOX API 使用 XBOX 网络好友列表作为主要好友列表。
- 游戏具有备用人员列表(例如最近的玩家或公会成员),但这些列表未被定位为用户的核心列表。
- 游戏显示经过筛选的好友列表,仅显示玩过该游戏的好友,并且在某些情况下仅显示当前在线或当前在线且在游戏中处于活动状态的好友。
- 游戏显示同时包含 XBOX 网络好友和发行商帐户好友的混合好友列表,并使用图标或其他说明性标记对其进行区分。
- 游戏未使用 XBOX API 显示好友列表。
- 游戏在游戏服务器上永久存储好友列表。
- 游戏显示同时包含 XBOX 网络好友和发行商帐户好友的混合好友列表,但未对其进行区分。
测试版和 Game Preview
此类别中的要求仅适用于归类为测试版或 Game Preview 的游戏。有关其他商店政策,以及特定于计划的公开测试版和封闭测试版定义、大小限制、持续时间、定价、元数据和优惠,请联系你的 Microsoft 联系人。 测试版和 Game Preview 游戏须遵守本文档中所列 XR 的一个子集。此子集的范围详见 Game Preview 和测试版的 XBOX 要求页面。XR-117:测试版/Game Preview 通知 *
处于测试版阶段的游戏必须在体验中显示初始屏幕或消息(在启动后、开始游戏或使用应用程序之前),传达以下信息:- 该游戏是测试版/预发布软件。
- 某些平台功能可能无法正常工作。
- 某些游戏功能可能无法正常工作,并且可能会崩溃。
117-01 向用户发送测试版/Game Preview 通知
测试步骤- 登录 XBOX 个人资料并启动游戏。
- 验证在用户能够参与游戏或使用应用程序之前,会显示一条消息,至少传达以下信息:
- 该游戏是测试版/预发布软件。
- 某些平台功能可能无法正常工作。
- 某些游戏功能可能无法正常工作,并且可能会崩溃。
- 该通知还必须概述游戏的支持范围。
游戏必须告知用户该游戏是测试版/预发布版本,可能无法完全按预期运行。 通过示例
- 在用户能够使用游戏中的功能之前,向用户通知游戏的测试版/预发布状态。
- 游戏未显示通知用户其测试版/预发布状态的消息。
- 用户在看到游戏关于测试版/预发布状态的通知之前,即可访问游戏功能。
BVT:版本的认证前测试
以下测试用于检查游戏是否已准备好进行 XBOX 认证测试。BVT-01 版本稳定性
测试步骤- 启动游戏,浏览所有菜单并进入游戏
- 尝试重现在执行其他 BVT 时发现的稳定性问题
游戏不得存在会阻碍对游戏进行完整 XR 测试的稳定性问题或过长的加载时间。
BVT-02 匹配
测试步骤- 主机 1:选择最基本的 XBOX 游戏模式并主持一个 XBOX 游戏会话。
- 主机 2:使用快速匹配加入主机 1 的 XBOX 游戏会话。(重复此步骤,直到加入的主机达到开始游戏会话所需的最少数量。)
- 主机 1 和 2:开始并完成 XBOX 游戏会话。
- 验证匹配正常工作,并且用户可以在所有其他受支持的游戏模式中进入游戏。
主机 2 应始终能够找到并加入主机 1 的游戏会话。两台主机都应能够完成 XBOX 游戏会话,而不会断开连接或遇到稳定性问题。
BVT-03 DLC
测试步骤- 验证随游戏提交的可下载内容可以通过 XBOX Store 或游戏内机制下载。
- 下载后,验证可以在游戏中轻松识别该内容。(随提交材料提供详细的可下载内容说明有助于认证团队找到可下载内容。)
随游戏提交的可下载内容必须可以通过 XBOX Store 或游戏内 UI 下载,并且下载后应可以在游戏中轻松识别。
BVT-05 语言
测试步骤- 通过 XBOX 设备的“设置”应用程序,将语言设置为英语。
- 进入游戏。
- 验证游戏:
- 不会崩溃或进入无响应状态。
- 不会在屏幕上输出任何调试信息。
- 在所有预期区域中实现了本地化。
- 对游戏支持的所有语言重复步骤 1-4。
游戏包含所有受支持的语言。游戏也不应包含特定于语言的稳定性问题或调试信息。
BVT-07 基本配置
测试步骤- 启动游戏,并确保所有 BVT 功能检查无需更改主机设置(例如时间/日期)即可正常工作。
- 验证无需变通方法即可进入游戏的主菜单。
游戏进入认证时,基本功能应正常工作。
BVT-08 XBOX Store 可用性
所需工具:- 已发布到开发者沙盒的游戏。
- 已发布到 CERT 和 CERT.DEBUG 沙盒的游戏。
- 将游戏发布到开发者沙盒。
- 从 Store 安装游戏。
- 启动游戏并进入游戏。
[!Important] 提交认证时,请将游戏发布到 CERT 和 CERT.DEBUG 沙盒。预期结果
游戏必须能够从 CERT 和 CERT.DEBUG 沙盒安装。
BVT-09 重新提交条件
测试步骤- 重现游戏最新认证报告中记录为 CFR 的所有问题。
- 验证记录为 CFR 的所有问题均已修复。任何可重现的问题都必须有已批准的例外。
除非已授予例外,否则必须修复之前报告中标记为 CFR 的问题。
请联系你的 Microsoft 联系人,了解提交例外申请的步骤。
BVT-10 版本检查
测试步骤- 安装游戏。
- 进入“我的游戏和应用”,突出显示该游戏,按 Menu button 并选择“管理游戏和附加内容”。
- 选择“文件信息”。
- 将已安装产品的 FullName 与提交文档/启动邮件中列出的包名称进行比较。
已安装 XVC 的 FullName 与启动邮件/提交文档中记录的内容完全匹配。
BVT-12 合作伙伴托管的服务
测试步骤- 登录 XBOX 个人资料并启动游戏。
- 验证所有合作伙伴托管的服务均可访问。
所有合作伙伴托管的服务均已配置用于测试,并且依赖于这些服务的所有功能均可访问。
BVT-13 年龄分级验证
配置:- 游戏必须是最终版本(基础版本或内容更新)。
- 最终版本(基础版本/内容更新)- 所有需要证书的区域设置都必须提供证书。
- 不在范围内 - DLC、游戏内内容 - 无需测试。
- 提交材料可供审查。
- 可以访问 Microsoft Partner Center 中的产品年龄分级。
- 验证以下文档/信息可用:
- 提交的 XVC 的 Submission Validator 日志。
- Partner Center 中的年龄分级声明。
- 年龄分级证书。
- 打开 Submission Validator 日志文件,并确保
<component>Manifest-Ratings</component>测试未显示任何警告或失败。- 对于 2020 年 5 月 11 日之后认证的所有游戏:AppxManifest 中不得存在 ratings 元素。
- 对于 2020 年 5 月 11 日之前认证的游戏:允许 AppxManifest 中存在 ratings 元素。
- 打开 Partner Center 查看产品的年龄分级信息
- 对于显示的每个值,验证是否已提供与年龄分级完全匹配的相应分级证书。
- 必须提供所有这些文件,并且这些文件必须与此提交类型相关。
- 所有分级都必须提供相应的证书。
- 在 2020 年 5 月 11 日之后进行认证的基础最终提交,不得在 AppxManifest 中定义年龄分级元素。
- 对于 2020 年 5 月 11 日之前认证的游戏,其内容更新不得在 AppxManifest 中添加或删除分级,但完全删除 ratings 元素的情况除外。
BVT-14 UWP 服务配置验证
配置 游戏必须是 UWP 提交。 测试步骤- 登录之前未访问过该游戏的 XBOX 个人资料。
- 启动游戏。
- 确保系统提示用户接受 XBOX 帐户权限。
- 在主菜单或前端菜单中,运行以下命令
xbdir "XS:\Program Files\WindowsApps\{XVC}\"并搜索“xboxservices.config”文件。
游戏的服务配置必须配置为用于测试。 通过示例
- 游戏包含服务配置文件,并且系统提示新用户接受 XBOX 帐户权限。
- 不存在服务配置文件。
- 存在服务配置文件,但大小为 0 字节。
- 系统未提示新用户接受 XBOX 帐户权限。
BVT-15 Intelligent Delivery
测试步骤- 获取游戏的 XVC,并使用
packageutil chunkinfo [XVC] > chunkinfo.xml命令生成 Chunkinfo.xml 文件。 - 使用生成的 chunkinfo.xml 确定游戏是否支持 Intelligent Delivery。
- 如果支持 Intelligent Delivery,请使用
xbapp install /[Chunk Parameter] [XVC]命令针对以下每一项分别开始一次全新安装:- 使用参数
/Languages=的语言包(切换到另一个受支持的语言区块,并使用系统设置或游戏内语言选项下载其他语言包) - 使用参数
/Devices=的特定于设备的内容 - 使用参数
/ContentTypes=的内容类型 - 使用参数
/Tags=的按需内容
- 使用参数
游戏正确安装预期的 Intelligent Delivery 区块,并且未遇到任何不良影响。
