免费游玩游戏、演示版或 Beta 版可以配置为允许非 Game Pass 订阅者的玩家进行多人游戏 (ID 254)。这是通过服务端配置实现的,可以通过联系你的 Microsoft 代表来启动。这些游戏必须继续检查多人游戏权限,以确保遵循家长控制和玩家选择。
详细信息
[!NOTE] 有关技术指南和最佳做法的详细介绍,请参阅 XBOX 服务用户权限的客户端使用文档。如果你的服务处理 XBOX 网络颁发的令牌,则应在你的服务上通过检查令牌中会话用户的 “prv” 声明,强制要求这些用户具有执行所请求操作的相应权限。 如果游戏提供上表中列出的一项或多项活动,则游戏必须检查与特定活动关联的权限。如果用户没有该权限,则不得允许该用户使用相关活动。权限的授予期限为会话/操作的持续时间或刷新 XBOX 网络令牌之前的时间,以较短者为准。 根据开发平台(GDK、XDK、XSAPI)的不同,游戏应调用相应的 API,以确保 (1) 调用系统 UI,告知用户被阻止的权限,并在用户为儿童帐户时提供向父母或监护人请求某些权限的途径;或者 (2) 提供规范且可操作的错误消息。 在 PC 或 XBOX 主机上使用 GDK: 要使用 GDK 检查用户是否具有某项权限,游戏应使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API。有关使用模式和上下文处理的具体信息,请参阅 GDK 文档中的 XBOX 服务用户权限概述主题。 使用 XBOX One XDK: 要检查用户在 XBOX One 上是否具有某项权限,游戏使用 Store::Product::CheckPrivilegeAsync API。如果权限检查是由用户操作(例如进入多人游戏模式)引起的,则 attemptResolution 参数必须设置为 true(或完全不设置)。平台会检查该权限,如果用户没有该权限,则会尝试确定原因。 如果 API 返回 false,则表示用户没有该权限,并且系统未成功解决该问题。在这种情况下,游戏必须阻止该需要权限的活动,但可以假定系统已经适当地告知用户其没有执行该活动的相应权限,或者用户的权限存在问题。 如果权限检查不是由用户操作引起的,而是作为静默后台调用的一部分或用于修饰 UX 等,则应在将 attemptResolution 设置为 false 的情况下调用该 API。因此,不会向用户发送消息,系统也不会介入纠正任何权限问题。 在 UWP、Win32、移动或其他平台上直接使用 XSAPI: 如果 “prv” 声明中不存在该权限,则用户没有该权限,游戏应阻止用户继续进行该需要权限的活动。如果检查是由用户请求访问需要权限的活动(例如尝试启动或加入多人游戏会话)触发的,则游戏应显示一条信息性消息,告知用户其无法参与。_建议_的消息如下:
实现要求
XBOX 网络连接问题: 如果游戏由于无法访问 XBOX 服务而收到失败(通过 API 或因为无法检索 XBOX Live 令牌),则游戏应阻止访问所请求的操作。在这种情况下,游戏应按照 XR-074“与 XBOX 和合作伙伴服务的连接中断”中所述妥善处理失败。
最佳做法
其他资源
有关权限和用户令牌的详细信息,请参阅 Microsoft Game Development Kit (GDK) 或 XBOX Application Development Kit 文档中的“用户令牌”。 就本 XR 而言,社交网络是指 XBOX 网络之外、默认允许个人与其他用户共享内容的站点或服务。如果外部站点上的默认选项是启用与好友或所有人共享,那么就本 XR 而言,外部站点不必允许用户在上传时选择限制共享。豁免
付费交易型视频产品可以提供给所有 XBOX 用户,无论其视频内容权限设置如何。如果应用同时提供高级内容和付费交易型视频产品,则高级内容必须遵守此要求。 如果应用是在 XBOX 平台上提供该应用的国家/地区内的公共服务广播机构,则必须向该国家/地区的所有 XBOX 用户提供所有非商业化内容,无论用户的视频内容权限设置如何。 在 XBOX One 主机与非主机设备之间提供异步多人游戏的游戏,无需针对非主机设备上的体验检查多人游戏权限。认证测试用例
045-01 遵循用户权限测试步骤
- 登录到 XBOX 个人资料并启动游戏。
- 对于 XR 备注中列出的每项权限,确定游戏是否支持相关活动。
- 对于步骤 [2] 中确定的每项适用权限的每个可能设置,执行以下操作:
预期结果
- 退出游戏并更改用户对该权限的设置。
- 重新启动主机。
- 登录到同一个人资料并启动游戏。
- 访问游戏的所有相关区域,使用与该权限相关的所有游戏功能,并验证游戏是否遵循用户当前的权限设置。
- 尝试使用 Silver XBOX 个人资料访问所有离线和在线区域。
游戏必须遵循用户的权限设置。 通过示例失败示例
- 游戏遵循用户的权限设置。
- 游戏将部分允许的权限设置视为该权限已禁用/不允许(例如,当用户生成内容 (UGC) 权限设置为“仅限好友”时,游戏的行为就像该权限设置为“已阻止”一样)。
- 对于使用 XDK 的游戏,游戏调用系统 UI 以提醒用户任何权限冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。当无法调用系统 UI 时(权限 252、189、247),游戏显示一条信息性消息,告知用户其无法参与。
- 对于使用 GDK 的游戏,游戏调用系统 UI 以提醒用户任何权限冲突。在游戏无法调用系统 UI 的情况下(252、189、247),游戏显示一条信息性消息,告知用户其无法参与。游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API。
- 对于使用 XSAPI 的游戏,游戏显示一条信息性消息,告知用户其无法参与。
- 游戏保留用户的权限设置,并且在用户的实际权限更改后未反映这些更改。
- 游戏将部分允许的权限设置视为该权限设置为限制最少的设置(例如,当用户生成内容 (UGC) 权限设置为“仅限好友”时,游戏的行为就像该权限设置为“允许”一样)。
- 对于使用 XDK 或 GDK 的游戏,游戏使用游戏内消息提醒用户任何权限冲突,而不显示系统 UI。
- 对于使用 XSAPI 的游戏,游戏未显示信息性消息来告知用户其无法参与。
045-02 遵循用户权限 - XBOX 家庭
测试设置和配置
XBOX 家庭,其中包括以下 Microsoft 帐户:
- 被指定为组织者的成人(年满 18 岁)。
- 采用_儿童默认_权限设置的儿童(未满 13 岁):
参考和链接: 测试步骤
- 登录到成人和儿童 Microsoft 帐户,并使用儿童帐户启动游戏。
- 对于 XR 备注中列出的每项权限,确定游戏是否支持相关活动。
- 对于步骤 [2] 中确定的每项适用权限的每个可能设置,执行以下操作:
- 根据帐户权限验证相关活动是否被允许/不被允许。例如:游戏支持多人游戏,而儿童帐户的多人游戏权限被阻止。验证游戏是否阻止儿童的所有多人游戏活动,并在儿童尝试参与多人游戏活动时显示家长权限提示(系统 UI)。
- 退出游戏,并针对游戏支持的权限活动更改用户的儿童权限设置,从“阻止”更改为“允许”。例如:将多人游戏或用户生成内容从“阻止”更改为“允许”。
- 重新启动主机。
- 登录到同一个人资料并启动游戏。
- 访问游戏的所有相关区域,使用与该权限相关的所有游戏功能,并验证游戏是否遵循用户当前的权限设置。例如:游戏支持多人游戏。儿童之前被阻止,但现在已被授予多人游戏权限。游戏正确地允许儿童访问多人游戏模式。
预期结果
- 在家长帐户未登录到主机的情况下重复步骤 [2]-[3]。
游戏必须遵循所有 XBOX 家庭成员的权限设置。 通过示例失败示例
- 游戏遵循儿童的权限设置。
- 当某项活动的权限被允许时,游戏允许儿童参与该活动。
- 当某项活动的权限被阻止时,游戏不允许儿童参与该活动。
- 对于被阻止但家长已(通过家长权限 UI)允许的活动,游戏允许儿童参与。
- 对于被阻止且家长未(通过家长权限 UI)允许的活动,游戏不允许儿童参与。
- 游戏将部分允许的权限设置视为该权限已禁用/不允许(例如,当用户生成内容 (UGC) 权限设置为“仅限好友”时,游戏的行为就像该权限设置为“已阻止”一样)。
- 对于使用 XDK 的游戏,游戏调用系统 UI 以提醒用户任何权限冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。当无法调用系统 UI 时(权限 252、189、247),游戏显示一条信息性消息,告知用户其无法参与。
- 对于使用 GDK 的游戏,游戏调用系统 UI 以提醒用户任何权限冲突(游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API)。当无法调用系统 UI 时(权限 252、189、247),游戏显示一条信息性消息,告知用户其无法参与。
- 对于使用 XSAPI 的游戏,游戏显示一条信息性消息,告知用户其无法参与。
- 游戏未遵循儿童的权限设置。
- 示例:游戏支持多人游戏,并允许多人游戏权限被阻止的儿童访问多人游戏模式。
- 游戏未调用适当的 UI 来提醒和告知儿童权限冲突。
- 示例:游戏支持多人游戏,但在权限被阻止时,从未提示儿童获取家长许可。
- 当某项活动的权限被阻止时,游戏允许儿童参与该活动。
- 当某项活动的权限被允许时,游戏不允许儿童参与该活动。
- 对于被阻止且家长未(通过家长权限 UI)允许的活动,游戏允许儿童参与。
- 对于被阻止但家长已(通过家长权限 UI)允许的活动,游戏不允许儿童参与。
- 游戏保留用户的权限设置,并且在用户的实际权限更改后未反映这些更改。
- 示例:游戏支持多人游戏。儿童帐户的多人游戏权限被阻止,但家长通过系统 UI 授予了许可。尽管已授予该权限,游戏仍继续阻止多人游戏。
- 游戏将部分允许的权限设置视为该权限设置为限制最少的设置。例如:当用户生成内容 (UGC) 权限设置为“仅限好友”时,游戏的行为就像该权限设置为“允许”一样。
- 对于使用 XDK 的游戏,游戏未调用系统 UI 来提醒用户任何权限冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。当无法调用系统 UI 时(权限 252、189、247),游戏未显示信息性消息来告知用户其无法参与。
- 对于使用 GDK 的游戏,游戏未调用系统 UI 来提醒用户任何权限冲突(游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API)。当无法调用系统 UI 时(权限 252、189、247),游戏未显示信息性消息来告知用户其无法参与。
- 对于使用 XSAPI 的游戏,游戏未显示信息性消息来告知用户其无法参与。
