Matchmaking 概念篇
Matchmaking 概念篇
Matchmaking 可以便捷地接入 UOS 提供的多人联机服务用于创建可定制化的对局匹配。您可以参考 多人联机服务选型 根据您的游戏定位选择相应的联机服务,参考后续的文档接入 Matchmaking 服务。
Matchmaking
Matchmaking 是 Unity Online Service 官方提供的用于多人联机游戏的可定制配对服务。通过 Matchmaking,您可以创建自定义的匹配规则,来定义您的多人联机游戏中的游戏对局的玩家组成和阵营划分,以及在对局匹配的行进过程中应用灵活的调整策略来对匹配规则进行动态更新。
快速启动: 示例教程
Matchmaking 配置
常规的 Matchmaking 配置可以包含以下四个部分的参数:
- PlayerAttributes: 创建一场匹配对局时所需要的玩家属性。
- TeamDefinitions: 队伍规格。
- Rules: 匹配规则。
- Expansions: 匹配规则的动态更新策略。
我们采用JSON的形式来组织和保存用户定义的 Matchmaking 配置信息。在 配置参数 中,我们对 Matchmaking配置参数 进行了具体的介绍。同时基于对目前主流的一些游戏玩法和匹配对局形式的总结,我们提供了一系列丰富的「配置示例」供大家参考或者直接使用。
Ticket (匹配请求)
Ticket 即是客户端创建的匹配请求,当玩家想要开启一局匹配时,就需要在客户端发起一个 Ticket。
一个 Ticket 可以包含一个或多个玩家。当单个玩家进行对局匹配时,创建并且发起一个携带单个玩家的 Ticket 即可; 当多个玩家组队匹配时, 由其中一台客户端创建 Ticket, 其中携带当前队伍中的玩家信息,即可实现多人组队匹配。在创建对局匹配时,Matchmaking 会将一个 Ticket 中携带的所有玩家都划分到一局对局的同一个阵营中。
在客户端创建 Ticket时,需要携带当前队伍中的每位玩家的 PlayerAttribute 数据(如段位数据,游戏模式数据,地图数据等),用于匹配合适玩家。(在对局匹配的参数中,可以对每位玩家的属性进行定义,并且基于定义的属性创建匹配对局的规则,参见 配置参数 )
Ticket TTL
Ticket TTL (玩家匹配请求超时时长) 是指 Ticket 的超时时间,如在超时时长结束之后 Ticket 仍未匹配成功,将被标记为匹配失败。
Ticket 共有以下3种状态:
- 匹配已创建 (created): Ticket 已成功创建,并处于正在匹配玩家的状态。
- 匹配成功,正在创建房间 (awaitingAssignment): Ticket 已匹配成功,系统正在为该局游戏创建房间。
- 匹配成功,且创建房间完成 (matched): 匹配成功并已能够拿到 IP 和 PORT 等对局信息,可连接到战斗服开始游戏。
- 匹配失败 (error): 匹配超时(匹配时长超出 Ticket TTL)或是 Ticket 不符合规则被标记非法 Ticket。
Ticket 状态转换关系如下图:
Backfill
Backfill 功能用于给正在进行中的对局添加玩家。匹配时,如果有进行中的对局开启了Backfill, 会优先满足 Backfill 的匹配需求,即发起匹配请求的玩家会优先进入 Backfill 对应的房间。
Backfill 适用两种情况:
- 服务端创建: 游戏在进行中时,如果有玩家中途退出,需要补充人数时,游戏服务端可自行开启Backfill, 为该场对局继续匹配符合当前匹配规则的玩家。
- 自动匹配回填: 在基础配置中启用了「自动匹配回填」,在进行对局匹配时:如满足了最少玩家数目限制(minPlayers), 但无法满足最多玩家数目限制(maxPlayers)时,系统将在开启这一局游戏的同时自动为这局游戏开启Backfill, 继续为该局游戏添加玩家,直到玩家数量达到maxPlayers。