- 匹配
- 回填工单彼此之间不能匹配。
- 回填工单在搜索期间被赋予优先级,可减少玩家群体的碎片化。
- 契约
- 可使用
ServerDetails字段创建回填工单。这允许服务器指示已匹配的玩家应如何连接到该服务器。 - 可使用团队分配创建回填工单。这允许具有团队机制的游戏保持其团队信息。
- 可使用
- 队列属性
- 回填工单不会触发 Multiplayer Server 分配。
- 回填工单不会反映在队列统计信息中,因为其玩家已经在进行游戏,会不准确地影响等待时间。
- 所有权
- 回填工单由游戏服务器所有,而非用户。用户无法以任何方式查看或操作回填工单。
先决条件
- 熟悉 PlayFab Multiplayer SDK 的基本知识。有关更多信息,请参阅 Matchmaking SDK 快速入门。
- 在包含匹配头文件之前定义
PFMULTIPLAYER_INCLUDE_SERVER_APIS。例如:
配置服务器回填工单
创建并填充一个 PFMatchmakingServerBackfillTicketConfiguration 结构,包含必要的详细信息:-
timeoutInSeconds:尝试填充工单的时长(以秒为单位)。 -
queueName:匹配队列的名称。 -
memberCount:当前对局中的成员数量。 -
members:当前对局中的 PFMatchmakingMatchMember 成员。 -
serverDetails(可选):使用有关服务器的信息(FQDN、IP 地址、端口、区域)填充 PFMultiplayerServerDetails,这些信息将提供给客户端。
PFMultiplayerServerDetails::ipv4Address 字段不会被验证,可用于向客户端提供任意的连接字符串信息。创建服务器回填工单
使用 PFMultiplayerCreateServerBackfillTicket 创建服务器回填工单时,需要传入游戏服务器的实体(作为 PFEntityKey)以及在上一步中创建的回填配置。检查匹配工单的状态
必须通过调用 PFMultiplayerStartProcessingMatchmakingStateChanges 来接收状态变更,并在处理完这些状态变更后调用 PFMultiplayerFinishProcessingMatchmakingStateChanges,以检查工单的更新。 每当工单状态发生变化时,SDK 会返回 TicketStatusChanged 状态变更;当匹配已完成时,SDK 会返回 TicketCompleted 状态变更。获取匹配
在收到 PFMatchmakingStateChangeType::TicketCompleted 状态变更后,调用 PFMatchmakingTicketGetMatch 以获取对局的详细信息。这些详细信息包含匹配 ID、已匹配到一起的用户、对局的首选区域,以及与对局关联的大厅编排字符串。 从 PFMatchmakingMatchDetails 结构中检索所需的信息后,应使用 PFMultiplayerDestroyMatchmakingTicket 销毁工单。取消工单
如果你希望在PFMatchmakingServerBackfillTicketConfiguration 中设置的超时之前取消匹配过程,请使用工单句柄调用 PFMatchmakingTicketCancel。
调用此 API 并不保证工单被取消。工单可能在取消操作被处理之前已经完成,或者取消请求可能因网络或服务错误而失败。如果希望在继续之前确认工单取消已完成,你仍可以处理匹配状态变更以获取工单的结果。否则,你可以立即调用 PFMultiplayerDestroyMatchmakingTicket。
