> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 配置匹配队列

> 在 Game Manager 中通过规则、团队、属性和扩展策略配置 PlayFab Matchmaking 队列,决定如何将玩家匹配在一起。

## 概览

匹配配置以队列为中心。队列表示工单等待彼此匹配的场所。每个队列都有一些关于匹配所需内容的基本配置。此外,它可以包含一组规则,进一步限制如何将工单匹配在一起。

## 队列配置

在队列级别,配置描述了工单在队列内如何匹配的基本要求,以及如何获取队列的统计信息。

### 队列名称

特定队列的名称。长度在 1 到 64 个字符之间(含),区分大小写。包含字母数字、下划线和连字符,以字母或数字开头。通常,队列名称表示一种玩游戏的方式,例如“4v4CaptureTheFlag”或“UnrankedRace”。创建匹配工单时,必须指定队列名称以标识该工单应进入的队列。

### 匹配规模

对局中允许的玩家范围。最小匹配规模必须大于或等于 2。最大匹配规模必须小于或等于 100。使用团队时,此上限为 32。

此外,即使单张工单本身已满足对局的最小要求,在与至少另一张工单匹配之前,也不会返回已找到对局。但如果单张工单已经达到对局的最大要求,则会被拒绝。

### 玩家可用的统计信息

此功能决定通过 [GetQueueStatistics API](xref:titleid.playfabapi.com.multiplayer.matchmaking.getqueuestatistics) 向玩家公开哪些队列统计信息。服务器始终可以访问所有统计信息。有关更多信息,请参阅[在游戏中显示队列统计信息](/services/playfab/multiplayer/matchmaking/display-statistics)。

在此配置中,你可以控制两个选项:

1. **显示正在匹配的玩家数量** - 是否向玩家公开正在等待对局的玩家数量。游戏可能会使用此选项来隐藏该模式的相对受欢迎度,或出于业务原因隐藏玩家数量。
2. **显示匹配用时统计信息** - 是否向玩家公开匹配用时的统计信息(平均值和百分位数)。

### 团队

队列可以包含团队配置,让匹配服务将玩家分配到团队。可使用更多团队专用规则来控制团队分配的方式。此外,匹配服务确保在同一工单中一起匹配的玩家不会被分配到不同的团队。

在一个队列中可以定义两个或更多团队。

* **团队名称** - 用于该团队的名称。团队名称长度在 1 到 64 个字符之间(含),区分大小写。为字母数字加下划线和连字符,以字母或数字开头。此外,它们在一个队列内必须唯一。
* **团队规模** - 团队中可容纳的最小和最大玩家数量。匹配将尽可能多地(不超过上限)组建团队。

除了定义团队及其规模之外,还可以启用其他规则来帮助处理匹配中的团队情况。有关团队专用规则的信息,请参阅[团队规则类型](#team-rule-types)。

## 规则配置

可选择性地为队列定义规则。配置后,它们会帮助匹配算法决定哪些工单应彼此匹配。每条规则作用于玩家元数据中的单个属性。单个队列最多可以定义 20 条规则。

规则类型很多。每种规则包含一些常见的可配置元素和特定于该规则类型的元素。此外,许多规则允许扩展,即随着时间的推移变得不那么严格。

### 通用规则元素

以下元素通常被所有规则使用。

* **规则名称** - 名称长度必须在 1 到 255 个字符之间(含),为字母数字加下划线和连字符,以字母或数字开头。规则名称在队列内必须唯一。
* **权重** - 一种修改规则重要性的方式。规则通常同时提供限制和对剩余符合条件的工单进行排序的方式。权重是一个乘数,修改规则在排序时的重要程度。有关更多信息,请参阅[了解匹配中的规则权重](/services/playfab/multiplayer/matchmaking/rule-weights)。
* **属性来源** - 规则通常作用于提供给它们的信息。此字段描述了此信息来源的两种选项:

  1. **User** - 属性与玩家一起在创建或加入工单请求中提交。
  2. **Player Entity** - 属性从玩家关联的 Player Entity 中检索。你可以通过 [SetObjects API](xref:titleid.playfabapi.com.data.object.setobjects) 设置这些属性。使用外部实体类型时,请勿使用此来源。
* **属性路径** - 达到该属性的路径。使用 User 属性来源时,它就是属性的名称。使用 Player Entity 属性来源时,它是一个从实体中检索特定项的 [JSONPath](https://github.com/json-path/JsonPath),例如 `$.playerSkill.Mean`。
* **属性未指定时的行为** - 如果规则需要某个属性,但未指定,则规则可以配置为以下两种行为之一:

  1. 它可以为该属性提供默认值。
  2. 它可以将此信号作为一种指示,表示该工单满足规则提供的任何限制。例如,如果某些玩家表达了偏好,而另一名玩家愿意与任何人匹配,则此行为可能会很有用。没有偏好的玩家可以不提供属性,与任何其他玩家匹配。

### 标准规则类型

下面列出了每种规则类型及其用途、一些常见用途,以及规则可能需要的任何特定配置。

| 规则类型             | 描述                                 | 常见用途                        | 规则专用字段                                                                     |
| ---------------- | ---------------------------------- | --------------------------- | -------------------------------------------------------------------------- |
| String Equality  | 确保对局中所有工单的某个字符串属性都相同。              | 要求 build 版本或其他特定项目匹配        | 无                                                                          |
| Difference       | 确保对局中任意两个工单之间某个数值属性的绝对差值小于配置的最大差值。 | 按技能、经验或其他数值比较对玩家分组          | Merge function - 选择如何将多名玩家的值合并为表示工单的单个值。选项为 min、max 和 average。默认为 average。 |
| Set Intersection | 对于给定的字符串列表属性,确保对局中所有工单共享至少一定数量的值。  | 可下载内容(DLC)或地图选择             | Min intersection size - 对局所需的共享项目的最少数量。                                    |
| Match Total      | 确保对局中所有玩家的某个数值属性之和位于配置的范围内。        | 角色选择、模拟主机/服务器匹配、随时间调整玩家数量限制 | Min/Max total - 属性之和必须在这些包含边界之内。                                           |
| Region Selection | 确保对局中所有用户到共同数据中心的延迟小于配置的最大值。       | 多人游戏服务器集成所必需                | Max Latency - 只有此最大延迟范围内的数据中心才有资格用于对局。                                     |

### 团队规则类型

只有当队列配置中包含团队时,才能设置团队规则。它们提供了要求团队之间平衡的更多方式。可用的团队规则如下:

| 规则类型                        | 描述                                                                      | 常见用途                  | 规则专用字段                                                       |
| --------------------------- | ----------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------ |
| Team Difference             | 确保对局中所包含团队的特定属性(例如技能)差值在配置的范围内。这与标准 Difference Rule 类似,只是比较的值是每个团队的平均值。 | 跨团队平衡技能               | 无                                                            |
| Team Size Balance           | 确保最大团队与最小团队之间的玩家数量差异不超过阈值。例如,可以使用此规则创建允许 3v3 和 4v4 但不允许 3v4 的队列。        | 跨团队的玩家数量平衡            | Allowed Team Size Difference - 团队之间的不均衡程度,以分配给每个团队的玩家数量差异衡量。 |
| Team Ticket Size Similarity | 确保所有团队要么都有一支大型队伍,要么都没有大型队伍。大型队伍定义为至少达到最大团队规模的一半。                        | 防止组队(预组建团队)与一群单人玩家匹配。 | 无                                                            |

### 扩展及变为可选

随着时间的推移,规则可能会变为可选或不那么严格,允许等待了一段时间的工单更广泛地搜索潜在对局。控制此行为的方法有两种:

1. **Seconds until optional** - 简单地表示规则处于活跃状态的时长。等待此时长的工单之间,规则不再限制对局。

2. **扩展过程** - 规则随着时间的推移逐步调整其配置的阈值。例如,Difference Rule 可能要求对局在特定的最大差值内。工单等待时,规则可能会扩大最大差值。此扩展允许工单的匹配范围越来越大。即使没有完美的对手,它也允许工单被匹配。

扩展可以是**线性**或**自定义**。在线性扩展中,值随时间增长,每个时间间隔使用固定变化。线性扩展中可自定义的项包括:

* **Seconds between expansions** - 规则每次改变其限制之间的时间间隔。
* **Delta** - 值的变化量。
* **Limit** - 结束值。规则永远不会扩展到超过此点。

在自定义扩展中,规则每次改变其限制时可以使用任意值。使用以下字段:

* **Seconds between expansions** - 规则每次改变其限制之间的时间间隔
* **一个或多个自定义字段**,在扩展期间修改规则。每个字段用分号分隔,以表示每次扩展间隔中使用的不同值。可以使用“null”一词代替值,以指示规则在此间隔期间不活跃。

具体修改的字段取决于规则。下表描述了哪些规则具有哪种类型的扩展,以及扩展修改哪些字段。

| 规则类型                        | 是否允许线性扩展? | 是否允许自定义扩展? | 扩展期间修改的属性   |
| --------------------------- | --------- | ---------- | ----------- |
| String Equality             | 否         | 是          | 规则是否活跃      |
| Difference                  | 是         | 是          | 允许的最大差值     |
| Set Intersection            | 是         | 是          | 所需的最小交集     |
| Match Total                 | 否         | 是          | 所需的最小和最大总和  |
| Region Selection            | 是         | 是          | 允许的最大延迟     |
| Team Difference             | 是         | 是          | 允许的团队值差异    |
| Team Size Balance           | 是         | 是          | 每个团队的玩家数量差异 |
| Team Ticket Size Similarity | 否         | 否          | 不适用         |

有关配置用例和示例的更多信息,请参阅[匹配场景和配置示例](/services/playfab/multiplayer/matchmaking/config-examples)。


## Related topics

- [匹配](/zh-CN/services/playfab/multiplayer/matchmaking/index.md)
- [Matchmaking SDK 快速入门](/zh-CN/services/playfab/multiplayer/matchmaking/quickstart-client-sdk.md)
- [Matchmaking 快速入门](/zh-CN/services/playfab/multiplayer/matchmaking/quickstart.md)
- [匹配的工作原理](/zh-CN/services/playfab/multiplayer/matchmaking/how-matchmaking-works.md)
- [了解匹配中的规则权重](/zh-CN/services/playfab/multiplayer/matchmaking/rule-weights.md)
