开放游戏世界
游戏支持一个允许玩家之间交互的开放游戏世界。玩家能够在开放游戏世界中松散地组队,用于玩家对环境 (PvE) 体验。玩家对玩家 (PvP) 体验为一对一,并且仅在选定区域允许。实例化游戏部分的自定义匹配
游戏为进入实例化 PvP 或 PvE 游戏部分的玩家实现自定义匹配服务。此服务将玩家和玩家队伍进行匹配。专用服务器
该游戏的所有游戏运行在专用服务器上。所有流量都通过这些服务器路由。聊天
游戏支持玩家之间的语音和文本聊天。所有流量都通过服务器路由。消耗品
游戏提供带有可购买(高级)游戏内货币的游戏内商店。玩家可以使用此货币购买装饰性物品。可下载内容 (DLC)
可购买的可下载内容 (DLC) 包括解锁新玩家角色类的新游戏区域。游戏服务
在此示例中,玩家启动游戏后与之交互的第一个游戏服务是游戏登录服务。要玩游戏,玩家必须创建游戏账户,然后将其链接到 XBOX Live 账户。您可以在游戏内或游戏网页上创建账户。 对于账户链接,玩家的 XUID 链接到特定于游戏的账户。要执行账户链接,玩家在游戏中使用游戏账户的用户名和密码登录一次。使用 XUID 访问必须事先经过批准,并且必须与开发者账户经理 (DAM) 讨论。在游戏的网页上,已经使用游戏账户登录的玩家还必须登录 Microsoft 账户以进行账户链接。游戏账户具有唯一 ID (GUID),使所有游戏服务都能处理玩家,无论其来自哪个网络。游戏账户还存储所有玩家状态信息,例如玩家角色、进度、库存和所有玩家元数据。游戏流程
对于 MMO 游戏,跨网络功能的合规流程取决于玩家是在开放游戏世界还是在实例化游戏中。以下步骤在所有情况下均适用。- 验证特权 玩家登录后,游戏为活动玩家验证多人游戏特权(254 和 189)和跨网络特权 (185)。如果任何特权被拒绝,则玩家无法进入游戏,并显示错误对话框。此时,游戏应检查通信特权 (252) 以适当地限制语音和文本聊天功能。
- 跨网络通知 首次启动时,游戏通知玩家游戏中存在跨网络功能。 以下步骤适用于开放游戏世界。
- 进入开放游戏世界。 玩家在登录游戏时始终进入开放游戏世界,然后连接到游戏服务器。
- 加入开放游戏世界多人会话目录 (MPSD) 会话。 开放世界游戏的游戏服务器创建反映开放游戏世界中游戏区域的 MPSD 会话。这些 MPSD 会话中的一个或多个启用了游戏功能。所有 XBOX Live 玩家都加入其游戏区域的开放游戏世界会话。服务器维护有关 XBOX Live 玩家和不使用 XBOX Live 的玩家的信息。开放游戏世界会话允许 XBOX Live 玩家进入进行中的游戏和邀请,只有在服务器不接受来自客户端的新连接时才设置为关闭。
- 启用开放游戏世界游戏玩法。 与其他玩家的游戏功能可用,取决于玩家特权。对于具有通信特权设置的玩家,全球文本聊天始终启用。所有文本聊天消息使用字符串验证服务和屏蔽列表来过滤冒犯性语言和术语。玩家名称也使用相同的验证。
实例化 PvE 或 PvP 游戏玩法
以下步骤适用于实例化 PvE 或 PvP 游戏玩法。- 组 MPSD 会话。 对于 XBOX Live 玩家,游戏创建 MPSD 会话来跟踪 XBOX Live 玩家。不使用 XBOX Live 的玩家通过游戏服务进行跟踪。
- 组邀请和进行中加入。 在此示例中,游戏设计将加入或邀请限制为玩家组。组 MPSD 会话用于支持 XBOX Live 玩家的进行中加入和邀请。游戏内跨网络邀请由游戏服务支持。
- 组匹配。 游戏支持组 PvP 或 PvE 匹配流程的跨网络多人游戏。在此示例中,玩家使用匹配 UI 选择 PvP 或 PvE 体验,然后与其他玩家一起分组进入实例化游戏体验。
- 创建并加入游戏 MPSD 会话。 组匹配的结果是由匹配服务通过服务到服务调用 XBOX Live 创建的 MPSD 大厅会话。所有 XBOX Live 玩家加入此游戏会话,并在实例化游戏期间保留在此会话中。服务使用自定义属性额外提供有关会话中不使用 XBOX Live 的玩家的提示。这些提示可供客户端逻辑在流程其余部分设置会话状态时使用。
- 实例化游戏玩法。 当所有玩家准备就绪时,实例化游戏开始。在此示例中,还通过专用服务器在 XBOX Live 玩家之间启用聊天。在实例化游戏期间,游戏 UI 中可见玩家列表。此列表是游戏角色名称列表,可选择查看其他多人网络玩家的玩家标签或其他网络标识符。XBOX Live 玩家被唯一突出显示。以下屏幕截图显示此组 UI 的示例。
- 完成游戏。 实例化游戏完成后,队伍玩家返回开放游戏世界。玩家离开 MPSD 游戏会话并将开放游戏世界 MPSD 会话设置为活动会话。
会话管理
为了遵守所有 XBOX 要求,游戏为 XBOX Live 玩家创建两个 MPSD 会话。开放游戏世界区域游戏会话
游戏服务在启动时创建一个大型 MPSD 会话。每个游戏服务器实例通过对 XBOX Live 的服务到服务调用创建。游戏服务器实例的所有玩家加入相应的 MPSD 会话。在这些会话中,服务器为相互交互的 XBOX Live 玩家设置相遇 ID,以确保在最近玩家列表中正确显示。实例化游戏会话
此会话由匹配服务通过对 XBOX Live 的服务到服务调用创建。它包含游戏会话中所有 XBOX Live 玩家(跨队伍)的预留。它用于正确填充 XBOX Live 玩家的最近玩家列表。组会话
一旦玩家创建组(1 人组),就会创建此会话。它用于活动会话以支持进行中加入和邀请。根据游戏设计,玩家在某些游戏模式下无法加入。在这些模式下,使用closed 属性禁用进行中加入和邀请。
不使用 XBOX Live 的玩家不直接作为会话成员出现在 MPSD 会话中。为了跟踪目的,游戏在自定义会话属性中反映其存在,如下面的代码示例所示。
