XR-007:跨网络玩游戏、数据使用情况和小帮手应用程序交互

版本 1.3,2021 年 10 月 1 日

允许发布商使用来自 Xbox Live 和 Xbox 主机的用户特定数据,以及使用来自 Xbox Live 和 Xbox 主机上其他平台的数据,但是具有以下限制:

  • 游戏进度、游戏内物品和统计信息

    游戏可以自行决定在各个游戏平台和网络上同步游戏进度、虚拟货币钱包和游戏内物品(包括那些用虚拟货币解锁的物品)。 作为用户进度的一部分,游戏可以提供包括成就解锁在内的历史统计信息值,只要这些成就不需要使用其他平台来玩。

  • Microsoft Store 托管授权

    在 Microsoft Store 和其他平台商店中销售的数字内容或 PDLC(例如地图包或提供其他游戏玩法的任何内容)可能不会跨游戏网络共享/漫游。 但是,为清楚起见并视游戏酌情决定,可以跨游戏网络共享/漫游通过 Microsoft Store 销售并由游戏管理的一堆游戏内物品(例如虚拟货币或使用 VC解锁的物品)。

    如果您为支持“交叉进度”功能的游戏在另一平台上提供购买内容:

    游戏必须:

    • 在 Microsoft Store 中提供相同或更好的待售内容产品,以确保 Xbox 用户不处于不利地位(包括发布时机、市场覆盖范围、功能、内容、语言和本地化以及物理令牌卡);
    • 如果将数字代码直接销售给消费者,请在 Microsoft 的数字内容零售程序中包含相应产品(即代码到内容);并且

    游戏不得:

    • 有意不从 Microsoft Store 直接购买内容,或阻碍从 Microsoft Store 购买(例如,通过营销、广告、店内产品或关联程序);或
    • 将这样的内容购买与某些产品或体验关联:它们不具有 Xbox 主机游戏所具有的特点和功能(但是,玩家进度和游戏数据可能与这类产品或体验共享 - 例如,“小帮手体验”)。
  • 跨平台玩

    游戏可以自行决定在支持 Xbox Live 的平台上在 Xbox Live 用户之间启用同步或异步跨平台玩游戏。

  • 跨网络和小帮手应用程序玩

    游戏可以自行决定在 Xbox Live 用户和非 Xbox Live 游戏网络用户之间启用同步或异步跨平台玩游戏,但是在 Xbox 主机上具有以下限制:

    • 与网外玩家一起玩游戏时,游戏必须直观地标识 Xbox Live 用户。
    • 当用户进入存在跨网络玩家的游戏模式时,游戏必须提供警告。
    • 必须根据以下文章中所述的 Xbox Live 安全设置,限制跨网络通信:“XR-015:管理玩家通信”以及“XR-045:Xbox Live 和帐户权限”。
    • 游戏不得要求所有多人游戏模式均跨网络。
  • 用户生成的内容

    除“XR-018:用户生成的内容”之外,如果内容或小帮手应用用户被认定侵犯 IP/版权或违反法律和/或不宜向公众提供,发布商有义务删除内容和/或阻止小帮手应用用户。 对于非 Xbox Live 用户,内容必须:

    • 是匿名的,且经过合作伙伴筛选;或
    • 使用发布商的中央帐户名称显示(如果内容为非 Xbox Live 用户在不是 Xbox 主机的平台上创建)。 此帐户名称必须清楚地与 Xbox Live 帐户名称的显示方式区分,以避免混淆。 如果将发布商帐户链接到 Xbox Live 帐户,Xbox Live 帐户必须与发布商帐户一起显示,即使该内容已在另一平台上创建。

其他资源

Xbox Live 跨网络多人游戏实现指南

简介

下面的白皮书介绍了针对以下游戏的技术注意事项:它们希望包含跨网络多人游戏体验,且希望能为非 Xbox Live 玩家提供这一体验。 它提供有关游戏和 UI 设计的高级指南以及用于跨网络情形的策略。

与 Xbox Live 多人游戏体验相比,跨网络多人游戏体验允许游戏将来自其他游戏网络的玩家纳入多人游戏体验中。 这些玩家不具有 Xbox Live 标识,因此需要在游戏内谨慎设计。 相关注意事项包括技术方面,如匹配和玩家表示形式(请参阅 Xbox Live 多人游戏平台(NDA 主题)要求授权)、玩家身份标识表示或游戏网络之间的通信权限。

跨网络多人游戏

跨网络多人游戏允许游戏在 Xbox Live 和其他游戏网络上创建多人游戏体验。 这些体验必须设计用于保护 Xbox Live 玩家:游戏必须遵守 Xbox Live 安全设置,且必须给玩家提供退出跨网络体验的选项。

要启用跨网络玩游戏,游戏必须管理其他玩家、会话和通常由 Xbox Live 处理的状态信息。 这需要额外的游戏服务/服务器。

至少,游戏必须可以通过游戏服务/服务器管理以下事项:

  • 跨网络会话

    需要一个游戏服务来维护在一起玩的跨游戏网络的玩家组。 当前非 Xbox Live 标识无法直接作为成员添加到 Xbox Live 多人游戏会话。

  • 跨网络匹配服务

    需要一个游戏服务来提供跨不同游戏网络的匹配。

  • 跨网络邀请服务

    需要一个游戏服务来提供跨网络邀请和/或加入进程。

除了这些服务要求之外,游戏必须提供以下功能以确保所有玩家的安全玩游戏体验:

  • 跨网络权限验证

    在启用任何跨网络多人游戏模式之前,游戏必须验证用于跨网络玩游戏的权限(权限 185)。 如果不具有此权限,游戏体验只能仅限 Xbox Live 体验。

  • 跨网络玩家标识

    要唯一标识游戏服务中的所有玩家,需要为跨所有多人游戏网络上的玩家提供唯一玩家身份标识。 游戏可使用帐户关联(请参阅“帐户关联最佳做法”白皮书)以将一个 Xbox Live 帐户链接到可以跨网络使用的游戏特定身份标识。

  • 唯一玩家名称

    要唯一标识游戏 UI 中的所有玩家,必须提供唯一的玩家名称。 所有 Xbox Live 和跨网络玩家都需要唯一的身份验证。 在玩游戏期间必须将 Xbox Live 玩家代号传输给其他网络上的玩家,以便标识 Xbox Live 玩家身份。

  • 通信权限验证

    要获得跨网络体验,需要游戏内语音或文本聊天的游戏必须通过自定义游戏服务器/服务支持此功能。 不提供用于与其他网络通信的 Xbox Live API。 但是,Xbox Live 玩家可以指定跨网络通信隐私设置,跨网络体验必须遵守这些设置。

  • 付费虚拟货币

    想支持跨网络付费虚拟货币的游戏必须使用自定义游戏服务来跟踪和维护玩家的虚拟货币余额。 注意:此功能具有限制。 有关详细信息,请参阅“虚拟货币和物品”。

除了这些独特要求外,还需要满足所有标准 Xbox Live 多人游戏和通信要求(如权限检查、家长控制、会话管理和 UI 要求)。

跨设备多人游戏

跨网络多人游戏相比,跨设备多人游戏是在 Xbox Live 内、但在多台不同设备上的多人游戏体验。 通常,这是 Xbox One 游戏和支持 Xbox Live 的 Windows 10 游戏之间的多人游戏体验。 尽管这些体验跨不同设备类型,但是它们属于 Xbox Live 多人游戏体验。 游戏可以选择同时实现跨设备和跨网络多人游戏。

玩游戏流

跨网络玩游戏流应被设计为传统 Xbox Live 多人游戏流的扩展。

建议的流程如下所示:

  1. 权限验证

    对于所有多人游戏和匹配流,游戏负责验证当前用户的多人游戏、跨网络玩游戏和通信权限。 游戏还必须验证用户的跨网络通信隐私设置并按隐私设置的要求限制通信。

  2. 跨网络邀请、加入进程或匹配

    游戏提供邀请、加入或匹配到新游戏的功能。 所有选项都包括游戏中的非 Xbox Live 玩家。 必须使用一个自定义游戏服务来支持跨网络邀请、加入进程或匹配(根据需要)。

  3. 跨网络会话

    在确定了一组跨网络玩家后,标题 (或标题服务) 保持了跨网络玩家的名册/游戏会话。 该功能必须通过标题服务来提供,以支持同一会话中的 Xbox Live 和非 Xbox Live 玩家。

  4. Xbox Live 邀请和加入进程

    根据游戏设计,拥有开放名额并允许新玩家的游戏环节必须标明可加入,并允许通过 Xbox Live 邀请。 这最好通过多玩家活动 (MPA) 服务使用直接调用创建 Xbox Live 邀请和设置玩家活动的 Xbox Live 加入支持来实现。

  5. 跨网络会话清理和 Xbox Live 最近玩家

    多玩家游戏结束后,游戏环节可以重新用于进一步的游戏/匹配,也可以停止使用。 对于任何持续的流量,使用 MPA 设置正确的活动状态。 标题需要报告信息以填充 Xbox Live 玩家的最近玩家列表。 这是通过直接调用 MPA 反映所有 Xbox Live 玩家的近期玩家活动来实现的。 如果合适,最近玩家活动也可在游戏过程中更新。

对于今后的游戏会话,必须在游戏中提供阻止与非 Xbox Live 用户通信的功能。

邀请、加入过程中和最近玩家支持也可以通过多玩家游戏会话目录 (MPSD) 服务实现。 然而,由于增加的复杂性,不建议采用这种解决方案。 使用 MPSD 的标题必须将播放器状态镜像到 MPSD 会话中,同时也要镜像现有的跨网络会话。

玩家权限

与 Xbox Live 多人游戏类似,在跨网络玩多人游戏前,游戏必须验证多人游戏权限以及语音和文本聊天的聊天权限。 除了这些权限外,游戏还必须验证“跨网络玩”权限以启用跨网络功能。

为了保持安全体验不变,游戏必须始终验证 Xbox Live 帐户权限并相应限制来自多人游戏或其他功能的玩家。

会话和匹配流

从 2018 年春季开始,游戏可以启用所需的跨网络玩游戏功能。 这包括邀请、加入进程和匹配流。

标题仍必须确保基于流提供 Xbox Live 邀请、加入过程和最近玩家支持 (如果适用):

  • 匹配/会话浏览

    要启用跨网络匹配/会话浏览,必须使用一个自定义游戏服务。

  • 邀请

    对于 Xbox Live 玩家,必须使用 Xbox Live 邀请系统来支持游戏外邀请。 对于来自非 Xbox Live 玩家的游戏内邀请或邀请非 Xbox Live 玩家的游戏内邀请,必须使用一个自定义游戏服务。

  • 加入进程

    对于 Xbox Live 用户,玩家活动必须设置为支持加入过程中的场景。 这允许执行游戏外加入进程。 对于来自非 Xbox Live 玩家的游戏内加入进程或向非 Xbox Live 玩家发起游戏内加入进程,可使用自定义游戏服务。

在上述所有 Xbox Live 功能中,最好使用多玩家活动 (MPA) 服务通过直接调用来实现。 标题必须支持按标题流 Xbox Live 的邀请和加入过程 (如果适用)。 有关详细信息,请参阅 XR-067 和 XR-124

游戏内聊天

游戏可选择支持游戏内语音聊天和/或文本聊天,这两项功能适用于仅限 Xbox Live 的游戏或跨平台/跨网络游戏。

  • Xbox Live 语音聊天

    支持 Xbox Live 玩家之间进行语音聊天的游戏可选择使用 Microsoft 提供的解决方案、工作室专有实现或第三方中间件解决方案。

    无论使用哪种技术来实现游戏内聊天,游戏都必须确保遵守 Xbox Live 权限、隐私设置和静音列表。 Microsoft 为 Xbox Live 提供了两个选项:

    • GameChat2
      • 自动处理 Xbox Live 权限和隐私设置。
        • 不支持跨网络或跨平台方案。
      • PlayFab 群
        • 提供一个简单的模型,用于通过 Xbox Live 帮助程序库应用权限和隐私设置,但不自动处理它们。
        • 支持跨网络和跨平台方案。
  • 跨网络语音/文本聊天

    需要跨网络语音或文本聊天的游戏可通过 Party APIPlayFab Party API 或自定义游戏/中间件提供的库/服务/服务器来支持此功能。

    所有功能必须遵守权限、跨网络通信隐私设置和 Xbox Live 用户的静音列表。

    如需 GameChat2 和 PlayFabParty 提供的功能的完整概述,请查看“Azure PlayFab Party”和“游戏聊天 2 简介”文档页。

网络连接

我们鼓励游戏在实现跨网络多人游戏体验的网络连接时遵循网络安全的最佳做法。 有关主机网络安全最佳做法的详细信息,请参阅通信安全概述(NDA 主题)要求授权

Xbox Live 连接

与 Xbox Live 多人游戏类似,要获得跨网络多人游戏体验,客户端需要连接到 Xbox Live。 如果连接不可用且服务调用失败,游戏必须为 Xbox Live 服务显示连接错误。 但是,游戏可以容忍服务中断一段时间。

建议的方法是允许玩家完成游戏轮次或在超时窗口内允许中断。 游戏应在此时段内重试失败的 Xbox Live 服务调用,之后将失败。

安全要求

为了保护 Xbox Live 服务和设备完整性,游戏必须针对所有游戏通信强化和测试协议和分析程序。

有关主机网络安全最佳做法的详细信息,请参阅通信安全概述(NDA 主题)要求授权

跨网络游戏功能

除了基本跨网络多人游戏功能外,游戏具有可能受跨网络玩家影响的其他功能。 游戏必须注意针对跨网络玩家提供玩游戏模式下的正确行为。

用户帐户权限

在跨网络多人游戏体验中,必须正确处理 Xbox Live 玩家的帐户权限。 游戏需要验证该体验所需的所有权限并相应应用它们。 相关权限包括:

  • 多人游戏权限 (254)

    用于验证对多人游戏功能的访问权限。 游戏必须在此权限后设置多人游戏功能的闸门。

  • 跨网络玩 (185)

    用于验证对跨网络多人游戏功能的访问权限。 游戏必须在此权限后设置跨网络功能的闸门。

  • 通信权限 (252)

    用于语音和文本通信的权限。 游戏必须基于此权限来限制通信(语音和文本)。

  • 用户生成的内容 (UGC) 权限 (247)

    游戏必须基于此权限来限制 UGC 访问(浏览和创建)。

根据游戏功能,更多权限可能适用于游戏。 有关权限的问题,请与开发者客户经理 (DAM) 联系。

玩家通信阻止/举报

游戏必须遵守 Xbox Live 玩家之间的通信阻止列表。 标题可通过 .NET 查询与另一个 Xbox Live 玩家的不同操作权限 check_permission_with_target_user。 Xbox Live 玩家可以通过平台 UI 和存储在 Xbox Live 服务上的阻止列表(和权限)阻止其他 Xbox Live 玩家。

对于跨网络通信,标题必须遵守跨网络通信隐私权限 (communicateUsingVoicecrossNetworkUser/crossNetworkFriend)。 这些权限表明用户是否允许跨网络通信、仅限制与朋友通信、或阻止所有跨网络通信。

代码示例:

std::vector<string_t> userList;
userList.push_back(L"crossNetworkUser");
userList.push_back(L"crossNetworkFriend");

std::vector<string_t> permissionList;
permissionList.push_back(L"communicateUsingVoice");

auto checkCrossCommunicationTask = liveContext->privacy_service().check_multiple_permissions_with_multiple_target_users(
    permissionList,
    userList);

create_task(checkCrossCommunicationTask)
    .then([this](xbox_live_result<std::vector<multiple_permissions_check_result>> permResult)
{
    if (!permResult.err())
    {
        auto& permissionResults = permResult.payload();

        if (permissionResults[0].items()[0].is_allowed())
        {
            // enable cross-network voice communication for all
        }
        else
        {
            if (permissionResults[1].items()[0].is_allowed())
            {
                // enable cross-network voice communication for friends only
            }
            else
            {
                // disable cross-network voice communication for all
            }
        }
    }
    else
    {
        // handle error
    }
});

CrossNetWorkUsercrossNetworkWorkWork 权限仅支持通过 check_multiple_permissions_with_multiple_target_users API 的批处理调用或对 Xbox Live Privacy 服务 (用于服务间验证) 执行 POST 请求。 使用这些权限进行 check_permission_with_target_user 将导致错误。

要求游戏基于好友关系的游戏上下文正确处理通信限制:

  • 游戏好友列表

    如果游戏仅使用游戏特定好友列表(不与特定网络相关),则必须使用这些好友关系来确定 Xbox Live 玩家和非 Xbox Live 玩家之间的好友状态。

  • 非 Xbox Live 网络好友列表

    如果游戏使用另一网络的好友列表,必须使用此列表来确定 Xbox Live 玩家和非 Xbox Live 玩家之间的好友关系。

  • 无好友概念

    如果游戏不支持跨网络用户的好友概念,则限制为好友的跨网络通信必须被解释为受阻通信限制。

除了这些要求外,最佳做法是为非 Xbox Live 用户提供基于每个玩家的通信阻止功能。

可以通过以下方法之一维护跨网络阻止列表:

  • 连接的存储

    将跨网络阻止列表保存为某个保存的游戏的一部分或玩家设置的一部分。 玩家删除本地保存的游戏内容时,可以删除阻止列表。

  • 游戏托管的存储 (TM)

    跨网络阻止列表存储在 TMS 中。 这可以防止玩家在删除本地内容时意外删除阻止列表。

  • _自定义游戏服务 _

    自定义游戏服务(如游戏的跨网络匹配服务)也可以用于存储阻止列表。

不同游戏的阻止功能可能有所不同,如 MMO。 如果您有关于特定阻止列表情形的其他问题,请与 DAM 联系。

可下载内容

在大多数游戏中,提供其他内容(永久或消耗的 DLC)。 对于跨网络体验,内容使用受到限制,并且游戏配置和匹配应对这些限制进行筛选:

  • 仅 Xbox Live DLC 内容

    对于跨网络体验,从 Xbox Live 卖场外购买的永久(传统 DLC)内容可能不能扩展到 Xbox Live 用户。 仅当所有 Xbox Live 用户和非 Xbox Live 用户拥有同一内容集(例如,相同的地图包),才能使用跨网络内容。

  • 独占内容

    在经过 DAM 审查后,独占(网络特定的)内容可以与其他多人游戏网络共享。 有关详细信息,请与 DAM 联系。

只要所有玩家对其有访问权限,免费内容(如果在所有多人游戏网络中提供)可以跨网络使用。

虚拟货币和物品

随着最近策略的变化,有可能在 Xbox Live 和其他网络中纳入一个单一的、统一的虚拟货币钱包。 通过虚拟货币购买的物品也可以通过相同的方式来共享。

需要安全的游戏服务和帐户关联来支持跨网络的统一钱包和物品栏。

耐用内容例外

通过 Microsoft Store 授权的耐用内容(例如地图包)不能跨网络共享。 玩家必须在 Microsoft Store 购买耐用内容以获得对相关功能的访问权限。

游戏必须确保只允许从提供游戏的相应平台上的 Microsoft Store 进行购买。 卖场流不能设计为将玩家引导到其他平台上的另一应用商店。

成就

多人游戏通常提供活动的相关成就,并且需要考虑通过以下方式跨网络玩游戏:

  • 允许跨网络成就进度

    跨网络多人游戏体验不需要采用与 Xbox Live 独占体验不同的方式来处理成就进度。 跨网络玩游戏时,游戏活动(游戏获胜或其他玩家被击败)可以根据成就来计入,就像发生在 Xbox Live 多人游戏体验中一样。

  • 无独占跨网络成就

    游戏不能为跨网络多人游戏体验提供独占成就。 此外,所有多人游戏成就只能在 Xbox Live 内获得。

为了维持成就的完整性和质量,对于跨网络多人游戏体验,游戏应防止通过作弊增加成就。

玩家进度

对于使用跨网络帐户关联并提供唯一跨网络游戏玩家标识的游戏,可以跨网络共享玩家进度。

只要成就不需要使用另一平台来玩,在某游戏服务上跟踪成就进度的游戏还可以跨网络共享成就进度。

游戏 DVR/广播

为玩家提供游戏 DVR,以便他们可以在 Xbox One 和 Windows 10 上录制玩游戏(包括跨网络玩游戏)和捕获屏幕截图。 由于有跨网络互动,游戏必须确保录制内容中不包含任何冒犯性字符串(聊天、UGC 或玩家标识符)。 这同样适用于通过服务或游戏内功能实现的游戏广播。

排行榜

Xbox Live 统计信息和排行榜服务仅提供针对 Xbox Live 玩家的排行榜,但是游戏可以通过自己的服务提供更复杂的排行榜。 对于这些排行榜,必须格外小心,确保为 Xbox Live 玩家提供一致的体验。

如果玩家启用跨网络玩游戏,游戏应确保只显示合并的跨网络排行榜。 在内部,游戏服务可以为每个多人游戏网络创建不同的排行榜,还可以创建合并的排行榜,前提是只将正确的排行榜显示给 Xbox Live 玩家。

游戏和游戏服务必须确保为 Xbox Live 玩家显示最新的正确玩家标识。 玩家信息最多只能缓存 4 个小时以避免过时信息。

用户界面要求

为了在跨网络玩游戏时保持一致的玩家体验,对于这些玩游戏情形,要求游戏遵守一组用户界面要求。 以下要求和示例概括了最常见的 UI 情形。

跨网络玩家表示

对于 Xbox Live 玩家,在所有体验上游戏使用玩家代号作为玩家标识符。 它相对其他玩家是唯一的,但可以进行更改。 它还遵守明确定义的字符串大小和字符限制。 将 Xbox Live 玩家代号与来自其他多人游戏网络的玩家标识符合并时,不适用同样的规则。

为了避免玩家混淆并确保在所有游戏上获得一致的体验,对于显示跨网络玩家存在以下要求:

  • 游戏/发布商标识符

    具有唯一游戏/发布商标识符的游戏可以使用它来识别某个玩家。 但是,Xbox Live 玩家代号必须始终可见,并且 Xbox Live 玩家始终可访问它。 对于已将 Xbox Live 标识链接到游戏/发布商标识符的任何玩家,必须在所有支持 Xbox Live 的游戏版本上显示相应玩家代号(无论远程玩家当前位于哪个平台上)。

  • 可直观区分的 Xbox Live 玩家

    必须可直观将 Xbox Live 玩家与其他网络上的玩家区分开。 这可以通过为 Xbox Live 玩家提供独特的颜色和/或图标来实现。 建议的方法是使用玩家的玩家图片并用独特的颜色突出显示玩家代号。

  • 批准的网络标识符

    游戏只能通过批准的网络标识符或通用平台标识符来识别非 Xbox Live 玩家的多人游戏网络。 游戏还可以选择对于所有非 Xbox Live 玩家使用单个通用标识符。

  • 唯一玩家标识符

    跨网络体验中的玩家名称都必须是唯一可识别的。 所有 Xbox Live 玩家必须用玩家代号表示。 其他网络的玩家应通过等价的用户标识符来识别。 如果发生名称冲突,应将后缀(如“PlayerName (2)”)用于非 Xbox Live 玩家。

跨网络好友列表

为了避免玩家混淆并确保在所有游戏上获得一致的体验,对于显示 Xbox Live/非 Xbox Live 玩家的社交关系(好友)信息存在以下要求:

  • Xbox Live 好友列表

    游戏可以显示游戏内 Xbox Live 好友列表。 此列表必须从 Xbox Live 获取,不能在游戏服务器上缓存。

  • 游戏/发布商社交关系

    游戏可以在游戏内 UI 中显示游戏/发布者社交关系。 如果在游戏中可见,那么这种关系必须清晰地识别为发布者关系或 Xbox Live 玩家身份。 玩家必须能够区分发布者和 Xbox Live 身份,即使名称字符串相同。

  • 非 Xbox Live 社交关系

    游戏可以显示 Xbox Live 玩家的非 Xbox Live 标识与非 Xbox Live 玩家的标识之间的社交关系。 该关系指示必须可以清晰地识别为非 Xbox 玩家的身份。 玩家必须能够区分非 Xbox Live 和 Xbox Live 的身份,即使名称字符串相同。 玩家必须能够区分 Xbox Live 和非 Xbox Live 好友状态。

强烈建议游戏包含游戏内 UI,以便可以轻松将玩家从游戏/发布商/非 Xbox Live 好友列表添加到 Xbox Live 好友列表(反之亦然)。 游戏可以获取客户端上的好友列表以确定尚未在 Xbox Live 好友列表中的玩家,并使用 ShowAddRemoveFriendAsync 来支持通过 Xbox Live 快速添加好友。

实现示例

Xbox Live 跨网络多人游戏实现示例:多人游戏

Xbox Live 跨网络多人游戏实现示例:MMO