多人游戏概念概述
多人游戏系统包括多人游戏会话、多人游戏会话目录 (MPSD)、SmartMatch 匹配和服务质量 (QoS)。
本主题描述了 Xbox 服务文档中经常使用的许多重要多人游戏术语和概念。 熟练掌握这些术语和概念将帮助你理解 Xbox 服务多人游戏的工作原理。
多人游戏会话
多人游戏会话代表一组 Xbox 服务玩家以及与其关联的属性。 会话通过游戏创建和维护。 它表示保存在 Xbox 服务云内的一个安全 JSON 文档。
会话文档本身包含有关连接到会话的 Xbox 服务玩家、可用位置数量、自定义元数据(适用于会话和各会话成员)以及与游戏会话相关的其他信息。
每个会话基于一个会话模板。 它由游戏开发人员定义,并在游戏实例的 Xbox 服务配置中进行配置。
游戏可以创建和更新会话,但不能直接删除会话。 相反,从会话中删除所有玩家后,Xbox 服务多人游戏服务会在指定的超时时间后自动删除会话。
游戏可以选择使用多个会话,但通常实现多人游戏会使用以下两个会话。
大厅会话:代表一群想要在游戏中一起玩的朋友;例如,多个回合、关卡和地图。
游戏会话:表示在游戏中玩家的特定会话实例。例如回合、比赛和关卡。 该会话可以包括来自多个大厅会话的成员,这些成员通常一起通过匹配服务一起加入会话实例。
有关多人游戏会话的详细信息,请参阅多人游戏会话高级主题。
示例场景
在此示例场景中,Tereza 想和她的朋友 Sergio 和 Alejandra 进行多人游戏。
- Tereza 开启一场游戏,然后邀请 Sergio 和 Aledradra 加入。
- 加入后,Tereza、Sergio 和 Alejandra 都在大厅会话中。
- 在此会话中,他们决定在线和其他玩家比赛。
- 游戏将创建一个游戏会话。 该游戏使用 Xbox 服务匹配服务,使用其他 Xbox 服务玩家来填补剩余空位。
- 假设匹配到 Ermal 和 Miguel 与他们一起,那么就是他们这五个人在这一回合中一起玩。
- 在这一回合结束后,Tereza、Sergio 和 Alejandra 离开游戏会话,但他们仍在大厅会话中(不包括 Ermal 和 Miguel)。 这三个好友可选择进行另一回合游戏或切换到不同的游戏模式。
会话成员
会话成员是会话中的 Xbox 服务玩家。
仲裁程序
仲裁程序是管理游戏会话状态的主机或设备。 例如,为了找到更多玩家,仲裁程序会负责播发游戏会话进行匹配。
仲裁程序由游戏设置。 游戏的仲裁程序和主机可能相同,但这不是必需的。
会话主机
会话主机是运行玩游戏模拟的主机或设备,此模拟适用于在基于主机的对等网络体系结构上生成的游戏。 此主机或设备通常与仲裁程序相同,但不是必需的。
多人游戏会话目录 (MPSD)
Xbox 服务多人游戏服务在 Xbox 服务云中运行。 服务集中存储多个客户端系统的多个游戏系统元数据。 跟踪此元数据的系统称为多人游戏会话目录 (MPSD)。
你可以将 MPSD 视为活动游戏会话库。 你的游戏可以添加、搜索、修改或删除与游戏相关的活动会话。 必要时,MPSD 还管理会话状态和更新会话。
多人游戏会话目录 (MPSD) 使游戏能够共享连接一组玩家所需的基本信息。 它确保会话功能已同步并保持一致。 MPSD 与 shell 和 Xbox One (或更高版本)的主机操作系统在以下方面进行协调,发送/接收邀请和通过玩家卡片加入。
会话句柄
会话通过组合数据块在 MPSD 中唯一地标识出来。 它们如下所示。
- 游戏服务配置标识符 (SCID)
- 用于创建会话的会话模板名称
- 会话名称
会话句柄是包含对存在于 MPSD 中的特定会话的引用的 JSON 对象。 会话句柄允许 Xbox 服务成员加入现有会话。
每个会话句柄都包括唯一标识句柄的 GUID,它允许游戏使用单个 GUID 引用会话。
会话句柄如下所示。
邀请句柄
当成员被邀请加入游戏时,邀请句柄将传递给他。 邀请句柄包含可让受邀成员的游戏加入正确会话的信息。
搜索句柄
搜索句柄包含与会话相关的其他元数据,而且它允许游戏搜索符合选定标准的会话。
活动句柄
活动句柄可让成员查看其社交网络上的其他成员在玩的游戏。 此句柄可用于参与好友游戏。
相关句柄
相关句柄可有效地作为会话别名使用,这样可使游戏仅通过使用相关句柄的 ID 引用会话。
转移句柄
转移句柄用于将玩家从一个会话移到另一个会话。
邀请
Xbox 服务提供多人游戏服务支持的邀请系统。 该服务可以让玩家邀请其他玩家加入自己的游戏会话。 受邀玩家接收游戏邀请。 游戏使用此信息加入现有会话和多人游戏体验。
游戏控制邀请流程和可以发送邀请的时间。 玩家可通过 shell 或直接从游戏发送邀请。
可通过游戏动态设置邀请的通知文本,向受邀玩家提供更多信息。 邀请还可包含对玩家不可见的其他游戏数据,同时也可用于传递其他信息。
加入进程
除了具有邀请功能,Xbox 服务还为玩家提供了 shell 选项以加入好友或其他认识的玩家的活动游戏会话。 这使得加入活动游戏会话的另一条路径成为可能,且仍然由 MPSD 驱动。
游戏控制何时可以加入会话和公开哪一会话可加入进程。
协议激活
如果 Tereza 邀请 Alejandra 加入她的游戏,Alejandra 会在设备上收到通知,她可以选择接受还是拒绝。
如果 Alejandra 接受邀请,如果游戏尚未运行,操作系统将尝试启动该游戏。 操作系统会触发激活事件,激活事件中包含激活该游戏的原因以及其他详细信息。 (例如,在邀请中,详细信息包括邀请了该成员的玩家的 ID 以及受邀成员的 ID。)
处理此事件的过程称为协议激活。 它表明游戏应自动进入某个特定状态,这将在激活事件参数中作详细介绍。 如果成员正在加入多人游戏,则将会话句柄 ID 指定为参数之一。
在 Alejandra 的例子中,接受邀请会自动开始游戏(如果需要)并使她加入 Tereza 所在的游戏会话中。 此操作无需 Alejandra 采取任何进一步的操作。
可通过接受邀请、通过成员的个人资料卡加入另一个成员的游戏或选择深层链接的成就触发协议激活。
SmartMatch 匹配
SmartMatch 是适用于匿名匹配的 Xbox 服务的名称。 该服务基于可配置的匹配规则集匹配相同游戏的玩家。
匹配服务与 MPSD 紧密协作并将会话用于匹配输入和输出。 在该服务上执行匹配,从而可使游戏在匹配流程中轻松地提供其他体验,例如游戏内的单人玩家。
想要进入匹配的个人或小组创建匹配票证会话,然后请求匹配服务查找其他要开始与其建立匹配的玩家。 这会导致在一段时间内创建驻留在匹配服务内(在匹配漏斗上)的临时“匹配票证”。
匹配服务基于规则配置、为各玩家存储的数据以及在匹配请求时给定的任何其他信息选择会话以共同游戏。 然后,该服务将创建匹配目标会话,此会话包含已匹配的所有玩家,并向玩家的游戏告知匹配。
目标会话准备就绪后,游戏可执行 QoS 检查以确认该组是否可以共同游戏,或将玩家加入会话以开始游戏。 在 QoS 过程和匹配游戏期间,游戏在 MPSD 内使会话状态保持最新并从 MPSD 接收关于会话更改的通知。 此类更改包括玩家加入或离开,以及对会话仲裁程序的更改。
匹配票证会话
匹配票证会话表示适用于想要进行匹配的玩家的客户端。 通常基于同时位于大厅的一组玩家或其他游戏特定的玩家分组。 在某些情况下,票证会话可能是已在进行中并在寻找更多玩家的游戏会话。
匹配票证
向匹配提交票证会话会创建跟踪匹配尝试的匹配票证。 可以将属性添加到票证,例如,游戏地图或玩家等级。 这些属性连同票证会话中的玩家属性均用于确定匹配。
漏斗
漏斗是在匹配开始时收集并指定票证的逻辑位置。 仅可匹配同一漏斗内的票证。
一个游戏可以有多个漏斗。 但是,它一次只能在一个漏斗中启动匹配。 例如,游戏可以创建一个玩家技能是最重要的匹配项目的 漏斗。 游戏可以使用另一个 Hopper,在该 Hopper 中,只有玩家购买了相同的可下载内容才会匹配。
在服务配置中配置漏斗以进行匹配。
服务质量 (QoS)
当玩家在线进行多人游戏时,游戏质量受到正在托管游戏的设备之间的网络通信的影响。 糟糕的网络可能会造成不愉快的游戏体验,例如延迟或带宽不足导致滞后或断开连接。
QoS 是指测量玩家之间的在线连接强度(延迟和带宽),以确保所有玩家享有足够好的网络连接质量。 这对于在匹配期间进行匹配以保证良好体验(由于网络连接)的玩家尤为重要。 QoS 不太适用于好友一起玩游戏且通常愿意接受连接较差导致的后果的邀请情况。
你可以配置会话以基于特定标准自动处理 QoS。 每当有人加入该会话时,你的游戏都能处理 QoS 评估。