

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# FlexMatch 规则类型
<a name="match-rules-reference-ruletype"></a>

## Batch 距离规则
<a name="match-rules-reference-ruletype-batchdistance"></a>

```
batchDistance
```

Batch 距离规则用于测量两个属性值之间的差异。您可以将批量距离规则类型用于大小匹配项。有两种类型的批量距离规则：
+ *比较数值属性值*。例如，某项距离规则可能要求所有玩家必须在相邻的两个级别内。对于这种类型，请定义所有票证之间的最`batchAttribute`大距离。
+ *比较字符串属性值*。例如，这种类型的批量距离规则可能要求一场对战中的所有玩家都请求相同的游戏模式。对于此类型，请定义 FlexMatch 用于形成批次的 `batchAttribute` 值。

**距离规则属性**
+ **`batchAttribute`**– 用于形成批次的玩家属性值。
+ **`maxDistance`**– 成功匹配的最大距离值。用于比较数值属性。
+ **`partyAggregation`** – 该值决定 FlexMatch 如何处理多名玩家（多方）的票证。有效的选项包括票证玩家的最小值（`min`）、最大值（`max`）和平均（`avg`）值。默认值为 `avg`。

**Example**  
示例  

```
{
  "name":"SimilarSkillRatings",
  "description":"All players must have similar skill ratings",
  "type":"batchDistance",
  "batchAttribute":"SkillRating",
  "maxDistance":"500"
}
```

```
{
  "name":"SameGameMode",
  "description":"All players must have the same game mode",
  "type":"batchDistance",
  "batchAttribute":"GameMode"
}
```

## 比较规则 ()
<a name="match-rules-reference-ruletype-comparison"></a>

```
comparison
```

比较规则将一个玩家属性值与另一个值进行比较。有两种类型的比较规则。
+ 与@@ *参考值进行比较*。例如，这种类型的比较规则可能要求匹配的玩家具有一定的技能等级或更高。对于此类型，请指定玩家属性、参考值和比较操作。
+ *比较不同玩家*。例如，这种类型的比较规则可能要求对战中的所有玩家使用不同的角色。对于这种类型，请指定玩家属性以及等于（`=`）或不等于（`!=`）的比较操作。不要指定参考值。

**注意**  
Batch 距离规则可以更有效地比较玩家属性。为了减少对战延迟，请尽可能使用批量距离规则。

**比较规则属性**
+  要比较的玩家属性值。
+ **`referenceValue`**– 与预期匹配的测量值进行比较的值。
+ **`operation`**– 决定如何将测量值与参考值进行比较的值。有效操作包括：。
+ **`partyAggregation`** – 该值决定 FlexMatch 如何处理多名玩家（多方）的票证。有效的选项包括票证玩家的最小值（`min`）、最大值（`max`）和平均（`avg`）值。默认值为 `avg`。

## 距离规则 ()
<a name="match-rules-reference-ruletype-distance"></a>

```
distance
```

距离规则用于度量两个数字值之间的差值，例如技能级别之间的差距。例如，距离规则可能要求所有玩家玩游戏至少 30 小时。

**注意**  
Batch 距离规则可以更有效地比较玩家属性。为了减少对战延迟，请尽可能使用批量距离规则。

**距离规则属性**
+ **`measurements`**– 要测量距离的玩家属性值。这必须是带有数值的属性。
+ **`referenceValue`** &endash; 用于对照潜在对战游戏度量距离的数字值。
+ / 为了成功进行对战游戏而允许的最大或最小距离值。
+ **`partyAggregation`** – 该值决定 FlexMatch 如何处理多名玩家（多方）的票证。有效的选项包括票证玩家的最小值（`min`）、最大值（`max`）和平均（`avg`）值。默认值为 `avg`。

## 收集规则 ()
<a name="match-rules-reference-ruletype-collection"></a>

```
collection
```

收集规则将一组玩家属性值与批次中其他玩家的属性值或参考值进行比较。一个集合可以包含多个玩家的属性值和/或采用集合格式 (字符串列表) 的一个玩家属性。例如，收集规则可能会考虑队伍中玩家选择的角色。然后，该规则可能会要求队伍至少拥有某个角色中的一个。

**收集规则属性**
+ **`measurements`**– 要比较的玩家属性值的集合。属性值必须采用字符串列表形式。
+  值或值集合，用于对照潜在对战游戏评估测量值。
+ **`operation`**– 决定如何比较一组测量值的值。有效选项包含以下内容：
  + `intersection`– 此操作用于衡量所有玩家收藏中相同值的数量。有关使用交叉操作的规则的示例，请参见[示例：使用显式排序以查找最佳对战游戏](match-examples-4.md)。
  + `contains` 计量包含特定参考值的玩家属性集合的数量。有关使用“包含”操作的规则的示例，请参见[示例：设置团队级要求和延迟限制](match-examples-3.md)。
  + `reference_intersection_count`– 此操作测量玩家属性集合中与参考值集合中的物品相匹配的物品数量。您可以使用此操作来比较多个不同的玩家属性。有关比较多个玩家属性集合的规则示例，请参阅[示例：在多个玩家属性之间查找交集](match-examples-5.md)。
+ / 为了成功进行对战游戏而允许的最大或最小计数值。
+ **`partyAggregation`** – 该值决定 FlexMatch 如何处理多名玩家（多方）的票证。对于此值，您可以使用`union`合并队伍中所有玩家的玩家属性。或者，您可以`intersection`使用队伍的共同玩家属性。默认值为 `union`。

## 复合规则
<a name="match-rules-reference-ruletype-compound"></a>

```
compound
```

复合规则使用逻辑语句来形成40名或更少玩家的对战。可以在单个规则集中使用多个复合规则。使用多个复合规则时，所有复合规则都必须为 true 才能形成匹配项。

您不能使用扩展规则[扩展复合规则](match-rulesets-components-algorithm.md#match-rulesets-components-algorithm-expansion)，但可以扩展基础规则或支持规则。

**复合规则属性**
+ **`statement`**– 用于组合单个规则以形成复合规则的逻辑。您在此属性中指定的规则必须是在规则集的早期定义的。不能在复合`batchDistance`规则中使用规则。

  此属性支持以下逻辑运算符：
  + `and`– 如果提供的两个参数均为真，则表达式为真。
  + `or`– 如果提供的两个参数中的任何一个为真，则表达式为真。
  + `not`– 反转表达式中参数的结果。
  + `xor`– 如果只有一个参数为真，则表达式为真。

**Example 示例**  
以下示例根据玩家选择的游戏模式匹配不同技能等级的玩家。  

```
{
    "name": "CompoundRuleExample",
    "type": "compound",
    "statement": "or(and(SeriousPlayers, VeryCloseSkill), and(CasualPlayers, SomewhatCloseSkill))"
}
```

## 延迟规则
<a name="match-rules-reference-ruletype-latency"></a>

```
latency
```

延迟规则衡量每个位置的玩家延迟。延迟规则会忽略任何延迟时间高于最大值的位置。玩家在至少一个位置的延迟值必须低于最大值，延迟规则才能接受。通过指定`maxLatency`属性，您可以将此规则类型用于大型匹配项。

**延迟规则属性**
+ **`maxLatency`**-某个位置的最大可接受延迟值。如果工单没有延迟低于最大值的位置，则该票证不符合延迟规则。
+ **`maxDistance`**– 每张票证的延迟时间与距离参考值之间的最大值。
+ **`distanceReference`**– 用于比较工单延迟的延迟值。距离参考值的最大距离之内的票证将成功匹配。有效选项为玩家延迟的最小值（`min`）或平均值（`avg`）。
+ **`partyAggregation`** – 该值决定 FlexMatch 如何处理多名玩家（多方）的票证。有效的选项包括票证玩家的最小值（`min`）、最大值（`max`）和平均（`avg`）值。默认值为 `avg`。

**注意**  
队列可以将游戏会话放置在与延迟规则不匹配的区域。有关队列延迟策略的更多信息，请参阅[创建玩家延迟策略](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/queues-design.html#queues-design-latency)。

## 绝对排序规则 ()
<a name="match-rules-reference-ruletype-absolute"></a>

```
absoluteSort
```

绝对排序规则根据指定的玩家属性对一批对战票证进行排序，与添加到该批次的第一张票据进行比较。

**绝对排序规则属性**
+ **`sortDirection`** – 对对战票证进行排序的顺序。有效选项包括：
+ **`sortAttribute`**– 用于对票证进行排序的玩家属性。
+ **`mapKey`**– 如果是地图，则用于对玩家属性进行排序的选项。有效选项包括：
  + `minValue`– 值最低的密钥是第一个。
  + `maxValue`– 值最高的密钥是第一个。
+ **`partyAggregation`** – 该值决定 FlexMatch 如何处理多名玩家（多方）的票证。有效的选项包括最小值（`min`）玩家属性、最大值（`max`）玩家属性以及队伍中玩家所有玩家属性的平均值（`avg`）。默认值为 `avg`。

**Example**  
示例  
以下示例规则按技能等级对玩家进行排序，并对队伍的技能水平进行平均值。  

```
{
    "name":"AbsoluteSortExample",
    "type":"absoluteSort",
    "sortDirection":"ascending",
    "sortAttribute":"skill",
    "partyAggregation":"avg"
}
```

## 距离排序规则 ()
<a name="match-rules-reference-ruletype-distancesort"></a>

```
distanceSort
```

距离排序规则根据指定玩家属性与添加到该批次的第一张票据之间的距离对一批对战票证进行排序。

**距离排序规则属性**
+ **`sortDirection`** – 对对战票证进行排序的方向。有效选项包括：
+ **`sortAttribute`**– 用于对票证进行排序的玩家属性。
+ **`mapKey`**– 如果是地图，则用于对玩家属性进行排序的选项。有效选项包括：
  + `minValue`– 对于添加到批次中的第一张票证，请找到值最低的密钥。
  + `maxValue`– 对于添加到批次中的第一张票证，请找到值最高的密钥。
+ **`partyAggregation`** – 该值决定 FlexMatch 如何处理多名玩家（多方）的票证。有效的选项包括票证玩家的最小值（`min`）、最大值（`max`）和平均（`avg`）值。默认值为 `avg`。