Matchmaking REST API 快速入门
我们强烈建议你考虑使用 Multiplayer SDK,因为它包含实时消息支持,可减少轮询需求。这将改善匹配体验并降低延迟。快速入门 - Client SDK
在 Game Manager 中配置匹配队列
本快速入门假定你已在 Game Manager 中配置好了队列。有关如何设置的详细信息,请参阅配置匹配队列。单用户工单匹配
如果你的游戏有 1v1 游戏模式,或支持单个用户独自进入匹配,请考虑单用户匹配。单用户匹配遵循下面所示的模式。
创建匹配工单
用户使用 CreateMatchmakingTicket 创建匹配工单。工单创建成功时,服务返回一个TicketId。
工单创建要求你指定 Creator(用户的身份和属性)、GiveUpAfterSeconds(服务放弃匹配工单之前的时间(以秒为单位))以及要在其中查找对局的 QueueName。
Creator 字段必须包含与 QueueName 匹配的队列配置所要求的用户属性。GiveUpAfterSeconds 时间的合适值为 120 秒,以防止用户自行放弃。
检查匹配工单的状态
你必须按TicketId 轮询服务,以访问匹配中工单的 Status。为此,请让游戏调用 GetMatchmakingTicket。你每分钟最多可轮询 10 次。例如,每 6 秒轮询一次工单状态。轮询可能会增加检索工单状态时的延迟。因此,我们强烈建议你考虑使用快速入门 - Client SDK 中所述的 Multiplayer SDK 方法。它通过使用实时消息功能,避免了轮询的需要。
当工单的状态变为 Matched 时,你的客户端可以停止轮询工单。从那时起,工单将包含 MatchId。
获取对局
从你的客户端,使用 GetMatchmakingTicket 响应中提供的MatchId 调用 GetMatch。此对局包含被匹配到一起的用户列表。
取消匹配工单
如果你的客户端出于某种原因希望在达到GiveUpAfterSeconds 之前取消匹配过程,请使用 TicketId 调用 CancelMatchmakingTicket。如果尚未找到对局,则工单将从匹配过程中移除,其状态将变为 Canceled。
多用户工单匹配
如果你的游戏允许一组玩家一起进入匹配队列,则进入匹配还需要做一些额外的事情。我们建议你的游戏指定一个组长(创建者),以避免不必要的调用。组长创建工单,但组的所有成员必须同意加入。创建匹配工单(多用户)
该组必须在你的游戏中选出一个工单创建者。创建者使用 CreateMatchmakingTicket 创建匹配工单,成功时返回一个TicketId。工单创建要求你指定 Creator(用户的身份和属性)、GiveUpAfterSeconds(服务放弃匹配工单之前的时间(以秒为单位))、MembersToMatchWith(组中其他成员的身份)以及要在其中查找对局的 QueueName。
Creator 字段必须包含与 QueueName 匹配的队列配置所要求的用户属性。GiveUpAfterSeconds 时间的合适值为 120 秒,以防止用户自行放弃。
组成员加入匹配工单
匹配工单创建后,组的其他成员必须加入它才能继续匹配过程。此时,工单处于WaitingForPlayers 状态。在所有 MembersToMatchWith 加入工单之前,它不会开始与其他工单匹配。
要让成员加入,Creator 必须通过你的游戏将 TicketId 分享给其他成员。然后每个成员调用 JoinMatchmakingTicket,提供自己所需的属性。所有成员加入工单后,工单状态将变为 WaitingForMatch。
将玩家连接在一起
玩家匹配后,你需要让他们相互加入——通过服务器,或通过点对点连接。 如果使用专用服务器,可以依靠 Match ID 来唯一识别他们应处于的玩家组。如果使用 PlayFab 的多人游戏服务器,GetMatch 会提供供玩家连接的服务器和端口。
有关更多信息,请参阅与 PlayFab Multiplayer Servers 集成。
截至本版本,匹配目前未正式支持点对点连接。如果需要点对点,请考虑使用 PlayFab Party 或临时变通方法。有关此方面的更多支持,请与我们联系。
结论
使用本快速入门,你现在应该在游戏中拥有一个成功的匹配流程。此外,你还应考虑以下方面:- 你的游戏如何处理组的形成。
- 玩家等待对局时你的游戏显示什么。
- 如何处理失败和重试。
