Skip to main content

简介

本文档面向当前使用 MPSD 并希望迁移到使用 PlayFab Multiplayer 和 MPA 用于其多人游戏的游戏开发者。本文档将涵盖最常见的多人游戏场景,并提供演示如何将 PlayFab Multiplayer 与 MPA 一起使用的代码片段。

多人游戏会话目录 (MPSD) 概述

  • 用于共享连接一组用户所需信息的功能齐全的会话服务
  • 与 XBOX UI 集成,支持邀请和加入功能
  • 与 SmartMatch 匹配完全集成
  • 会话派生自预定义的会话模板
  • 用于连接检测和会话流的集成功能
  • 可作为服务到服务提供

多人游戏活动服务 (MPA) 概述

  • 轻量级服务,用于简化玩家活动、邀请和最近玩家的 XBOX Live 集成
  • 与 shell 和主机操作系统协作,发送/接受邀请和被加入
  • 无会话管理或匹配
  • 可作为服务到服务提供

PlayFab Multiplayer 概述

  • 包含大厅搜索和浏览功能的完整多人游戏大厅服务
  • 具有透明 API 集成的跨平台、实时服务通知
  • 支持实时通知的完整匹配服务

初始化

下表显示了 MPSD 和 PlayFab Multiplayer 用于初始化的可比函数列表。

初始化 - 示例代码

使用您的 PlayFab titleID 初始化库,并设置在 PlayFab 服务登录期间收到的实体令牌。

大厅状态更改

下表显示了 MPSD 和 PlayFab Multiplayer 用于处理与会话/大厅相关的事件的可比函数列表。

大厅状态更改 - 示例代码

通知库您开始处理状态更改。处理每个已排队的状态更改,然后通知您已完成处理状态更改。

创建大厅

下表显示了 MPSD 和 PlayFab Multiplayer 用于创建和加入会话/大厅的可比函数列表。
在 PlayFab Game Manager 中创建大厅无需其他设置或配置。所有配置都可以在代码中完成。

创建大厅 - 示例代码

配置大厅并设置任何初始大厅属性或成员属性,然后创建并加入大厅。

查找大厅

下表显示了 MPSD 和 PlayFab Multiplayer 用于搜索会话/大厅的可比函数列表。

查找大厅 - 示例代码

设置搜索配置,然后搜索大厅。
然后,一旦返回事件的状态更改,处理任何搜索结果。

大厅搜索键

在定义自定义搜索属性时,只允许使用受限的一组键。
  • 对于字符串属性,支持以下键:string_key1、string_key2、[…] string_key30
  • 对于数字属性,支持以下键:number_key1、number_key2、[…] number_key30

大厅搜索运算符

FindLobbies API 的查询字符串采用类似 OData 的语法进行结构化。筛选字符串的最大大小为 600 个字符。 这些 OData 运算符可用于组成查询字符串。运算符区分大小写。
比较字符串属性时,请务必用单引号将比较值包裹起来。例如,“string_key1 eq ‘SOME STRING VALUE’“。数字属性无需包裹。
还有可供使用的预定义运算符。指定时它们必须以“lobby/”为前缀。

对搜索结果排序

OData 样式字符串,包含此查询的升序 (“asc”) 或降序 (“desc”) 排序。OrderBy 子句可用于任何搜索数字键或数字型预定义搜索键。若要按最接近某个数字排序,可以使用距离标识符按与给定数字搜索键的距离排序。您不能对距离排序使用升序或降序。此字段仅支持一个排序子句或一个距离子句。如果未提供排序,或者给定排序需要平局决胜,则默认排序将基于创建时间降序。

对搜索结果排序和筛选 - 示例代码

加入大厅

下表显示了 MPSD 和 PlayFab Multiplayer 用于加入会话/大厅的可比函数列表。
加入大厅需要连接字符串。通常,大厅主机将在其活动上设置此连接字符串或通过邀请发送。要获取连接字符串,您必须调用 PFLobbyGetConnectionString

加入大厅 - 示例代码

设置初始加入配置,然后加入大厅。

更新大厅

下表显示了 MPSD 和 PlayFab Multiplayer 用于更新会话/大厅的可比函数列表。
PFLobbyPostUpdate 可用于更新大厅属性以及成员属性。您可以通过一次函数调用来更新一种或两种类型的属性。

更新大厅 - 示例代码(大厅属性)

更新大厅 - 示例代码(成员属性)

匹配

PlayFab Multiplayer 的匹配 API 与 MPSD 的匹配 API 相对相似。
匹配队列必须通过 PlayFab Game Manager 配置。

匹配状态更改

下表显示了 MPSD 和 PlayFab Multiplayer 用于处理与匹配相关的事件的可比函数列表。

匹配状态更改 - 示例代码

通知库您开始处理状态更改。处理每个已排队的状态更改,然后通知您已完成处理状态更改。

开始匹配

开始匹配 - 示例代码

匹配将在 membersToMatchWith 字段中指定的所有成员都加入后才会开始。
然后,一旦找到匹配并返回状态更改,加入已安排的大厅。

清理

下表显示了 MPSD 和 PlayFab Multiplayer 用于清理和关闭的可比函数列表。
在调用 PFMultiplayerUninitialize 之前,请确保离开所有活动大厅并销毁所有进行中的匹配票证。

清理 - 示例代码

活动

下表显示了 MPSD 和 MPA 用于管理活动的可比函数列表。
设置活动或发送邀请时,请确保使用从 PFLobbyGetConnectionString 传回的连接字符串。

活动 - 示例代码

邀请

下表显示了 MPSD 和 MPA 用于发送和接收邀请的可比函数列表。

邀请 - 示例代码(标题 UI)

邀请 - 示例代码(XBOX UI)

XGameUiShowMultiplayerActivityGameInviteResult 使用当前设置的活动。使用此函数之前,您必须使用 XblMultiplayerActivitySetActivityAsync 设置活动。

最近玩家

下表显示了使用 MPSD 和 MPA 时如何管理最近玩家列表。
为避免限流,最佳做法是批量调用 XblMultiplayerActivityUpdateRecentPlayers

最近玩家 - 示例代码

最后修改于 2026年8月25日