Skip to main content
本主题描述如何创建可处理超过 100 名成员的多人游戏大型会话。 此场景最常见于大型多人在线 (MMO) 游戏和广播(其中大多数成员是观众)。大型会话支持也可能适用于其他类型的游戏。 在某些情况下,你可能会发现大型会话非常有用,即使是处理较小的玩家群体。 如果你希望多个玩家在同一会话中,但当他们在游戏中未相遇时不必彼此知晓,则可以使用大型会话的 encounters 属性。 Multiplayer Manager 目前不支持大型会话。你必须使用 2015 多人游戏 API 直接调用多人游戏服务目录 (MPSD)。 大型会话与常规会话的处理略有不同。
  • 大型会话包含的信息比常规会话少,但效率更高。
  • 大型会话最多支持 10,000 名成员。
  • 你无法订阅大型会话。
  • 大型会话的成员不会自动加入最近玩家列表。

最近玩家

当 XBOX 玩家与新玩家一起玩多人游戏时,游戏结束后,他们可以在仪表板的最近玩家列表中看到这些玩家。
  • 如果玩家在游戏中与新玩家有着愉快的体验,他们可能希望再次与他们一起玩或将其添加为好友。
  • 如果玩家与一名玩家的体验不佳,他们可能希望在未来避开他们,或在游戏结束后举报不良行为。
在常规会话期间,XBOX 服务会自动将同一会话中的玩家添加到最近玩家列表。 但是,如果你使用大型会话,则必须采取一些额外步骤,以确保正确填充最近玩家列表。

设置大型会话

要将会话设置为大型,请在会话模板的 capabilities 部分中添加 "large": true。 你可以将 maxMembersCount 值设置为最多 10,000。 以下模板创建一个支持最多 2,000 名玩家的大型会话。

使用大型会话

将大型会话写入 MPSD 时,我们建议你不要超过每秒 10 次写入。 一个典型的 1,000 名玩家的会话可能平均每两分钟为每个玩家写入一次(例如成员加入或离开等更新)。 其他属性不应在大型会话中维护。

关联来自同一大型会话的玩家

当你从 MPSD 检索大型会话时,响应不包含成员列表。没有办法获取完整列表。 如果调用者在会话中,则其成员记录是 members 集合中的唯一记录,标记为 me(与请求中一样)。 这意味着客户端成员只能更新自己在会话中的条目。他们依靠服务器为其提供一个你指定的公共标识符。XBOX 服务使用此标识符来关联一起玩游戏的玩家,以便更新声誉和最近玩家状态。 有两种方式指示会话中的玩家一起玩了游戏:持久群组和简短相遇。

持久群组

持久群组是命名的玩家群组,他们持续一起玩游戏,可能会有一些玩家加入或离开该群组。群组名称应遵循适用于常规会话的相同命名规则,例如 GUID。 当每个成员加入或离开该群组时,他们应从其自己的 groups 属性(字符串数组)中添加或删除该群组名称。

简短相遇

如果两名玩家有短暂的、一次性的相遇(简短相遇),游戏可以使用 encounters 属性(而不是 group 属性)指示。 为每次相遇指定一个名称。相遇后,两名(或所有)参与者都将相遇名称写入其自己的 encounters 属性。
你可以对 groupsencounters 使用相同的名称。例如,如果一名玩家与一个名称已添加到 groups 的群组”交易”,则发生相遇的玩家将该群组名称上传到其”encounters”列表中。这会使该个体将该群组的所有成员视为最近玩家,反之亦然。该群组中的玩家无需采取任何操作即可更新群组成员资格。 当玩家是群组成员超过 30 秒时,将被视为一次相遇。 由于相遇被视为一次性事件,encounters 属性始终会立即处理,然后从会话中清除。 encounters 数组永远不会出现在响应中。 相比之下,groups 属性会保留,直到被更改或删除,或者成员离开会话。
最后修改于 2026年8月25日