概览
匹配配置以队列为中心。队列表示工单等待彼此匹配的场所。每个队列都有一些关于匹配所需内容的基本配置。此外,它可以包含一组规则,进一步限制如何将工单匹配在一起。队列配置
在队列级别,配置描述了工单在队列内如何匹配的基本要求,以及如何获取队列的统计信息。队列名称
特定队列的名称。长度在 1 到 64 个字符之间(含),区分大小写。包含字母数字、下划线和连字符,以字母或数字开头。通常,队列名称表示一种玩游戏的方式,例如“4v4CaptureTheFlag”或“UnrankedRace”。创建匹配工单时,必须指定队列名称以标识该工单应进入的队列。匹配规模
对局中允许的玩家范围。最小匹配规模必须大于或等于 2。最大匹配规模必须小于或等于 100。使用团队时,此上限为 32。 此外,即使单张工单本身已满足对局的最小要求,在与至少另一张工单匹配之前,也不会返回已找到对局。但如果单张工单已经达到对局的最大要求,则会被拒绝。玩家可用的统计信息
此功能决定通过 GetQueueStatistics API 向玩家公开哪些队列统计信息。服务器始终可以访问所有统计信息。有关更多信息,请参阅在游戏中显示队列统计信息。 在此配置中,你可以控制两个选项:- 显示正在匹配的玩家数量 - 是否向玩家公开正在等待对局的玩家数量。游戏可能会使用此选项来隐藏该模式的相对受欢迎度,或出于业务原因隐藏玩家数量。
- 显示匹配用时统计信息 - 是否向玩家公开匹配用时的统计信息(平均值和百分位数)。
团队
队列可以包含团队配置,让匹配服务将玩家分配到团队。可使用更多团队专用规则来控制团队分配的方式。此外,匹配服务确保在同一工单中一起匹配的玩家不会被分配到不同的团队。 在一个队列中可以定义两个或更多团队。- 团队名称 - 用于该团队的名称。团队名称长度在 1 到 64 个字符之间(含),区分大小写。为字母数字加下划线和连字符,以字母或数字开头。此外,它们在一个队列内必须唯一。
- 团队规模 - 团队中可容纳的最小和最大玩家数量。匹配将尽可能多地(不超过上限)组建团队。
规则配置
可选择性地为队列定义规则。配置后,它们会帮助匹配算法决定哪些工单应彼此匹配。每条规则作用于玩家元数据中的单个属性。单个队列最多可以定义 20 条规则。 规则类型很多。每种规则包含一些常见的可配置元素和特定于该规则类型的元素。此外,许多规则允许扩展,即随着时间的推移变得不那么严格。通用规则元素
以下元素通常被所有规则使用。- 规则名称 - 名称长度必须在 1 到 255 个字符之间(含),为字母数字加下划线和连字符,以字母或数字开头。规则名称在队列内必须唯一。
- 权重 - 一种修改规则重要性的方式。规则通常同时提供限制和对剩余符合条件的工单进行排序的方式。权重是一个乘数,修改规则在排序时的重要程度。有关更多信息,请参阅了解匹配中的规则权重。
-
属性来源 - 规则通常作用于提供给它们的信息。此字段描述了此信息来源的两种选项:
- User - 属性与玩家一起在创建或加入工单请求中提交。
- Player Entity - 属性从玩家关联的 Player Entity 中检索。你可以通过 SetObjects API 设置这些属性。使用外部实体类型时,请勿使用此来源。
-
属性路径 - 达到该属性的路径。使用 User 属性来源时,它就是属性的名称。使用 Player Entity 属性来源时,它是一个从实体中检索特定项的 JSONPath,例如
$.playerSkill.Mean。 -
属性未指定时的行为 - 如果规则需要某个属性,但未指定,则规则可以配置为以下两种行为之一:
- 它可以为该属性提供默认值。
- 它可以将此信号作为一种指示,表示该工单满足规则提供的任何限制。例如,如果某些玩家表达了偏好,而另一名玩家愿意与任何人匹配,则此行为可能会很有用。没有偏好的玩家可以不提供属性,与任何其他玩家匹配。
标准规则类型
下面列出了每种规则类型及其用途、一些常见用途,以及规则可能需要的任何特定配置。团队规则类型
只有当队列配置中包含团队时,才能设置团队规则。它们提供了要求团队之间平衡的更多方式。可用的团队规则如下:扩展及变为可选
随着时间的推移,规则可能会变为可选或不那么严格,允许等待了一段时间的工单更广泛地搜索潜在对局。控制此行为的方法有两种:- Seconds until optional - 简单地表示规则处于活跃状态的时长。等待此时长的工单之间,规则不再限制对局。
- 扩展过程 - 规则随着时间的推移逐步调整其配置的阈值。例如,Difference Rule 可能要求对局在特定的最大差值内。工单等待时,规则可能会扩大最大差值。此扩展允许工单的匹配范围越来越大。即使没有完美的对手,它也允许工单被匹配。
- Seconds between expansions - 规则每次改变其限制之间的时间间隔。
- Delta - 值的变化量。
- Limit - 结束值。规则永远不会扩展到超过此点。
- Seconds between expansions - 规则每次改变其限制之间的时间间隔
- 一个或多个自定义字段,在扩展期间修改规则。每个字段用分号分隔,以表示每次扩展间隔中使用的不同值。可以使用“null”一词代替值,以指示规则在此间隔期间不活跃。
有关配置用例和示例的更多信息,请参阅匹配场景和配置示例。
