

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# FlexMatch ルールタイプ
<a name="match-rules-reference-ruletype"></a>

## バッチ距離ルール
<a name="match-rules-reference-ruletype-batchdistance"></a>

```
batchDistance
```

バッチ距離ルールでは、2 つの属性値の差異を測定します。バッチ距離ルールタイプは、マッチ数の多いものと小さいものの両方に使用できます。バッチ距離ルールには 2 つのタイプがあります。
+ *数値属性値を比較する*。例えば、このタイプのバッチ距離ルールでは、マッチのすべてのプレイヤー相互間のレベル差が 2 レベル以内であることが必要になる場合があります。このタイプでは、すべてのチケットの `batchAttribute` 間の最大距離を定義します。
+ *文字列属性値を比較する*。例えば、このタイプのバッチ距離ルールでは、マッチに参加しているすべてのプレイヤーが同じゲームモードをリクエストする必要がある場合があります。このタイプでは、`batchAttribute` がバッチを作成するために使用する FlexMatch 値を定義します。

**バッチ距離ルールのプロパティ**
+ **`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
```

比較ルールでは、他の値とプレイヤー属性値を比較します。比較ルールには 2 つのタイプがあります。
+ *参考値と比較する*。例えば、このタイプの比較ルールでは、マッチしたプレイヤーが一定以上のスキルレベルを持っていることが求められる場合があります。このタイプでは、プレイヤー属性、参照値、比較演算を指定します。
+ *プレイヤー間で比較する*。例えば、このタイプの比較ルールでは、試合のすべてのプレイヤーが異なるキャラクターを使用することが要求される場合があります。このタイプでは、プレイヤー属性と equal (`=`) または not-equal (`!=`) 比較演算のいずれかを指定します。参照値を指定しないでください。

**注記**  
バッチ距離ルールは、プレーヤーの属性を比較する場合に効率的です。マッチメーキングの待ち時間を短縮するには、可能であればバッチ距離ルールを使用してください。

**比較ルールのプロパティ**
+ **`measurements`** – 比較するプレイヤーの属性値。
+ **`referenceValue`** – マッチング候補の測定値と比較するための値。
+ **`operation`** – 測定値を基準値と比較する方法を決定する値。有効なオペレーションは `<`、`<=`、`=`、`!=`、`>`、`>=` です。
+ **`partyAggregation`** – 複数のプレイヤー (パーティー) でチケットを FlexMatch がどのように処理するかを決定する値。有効なオプションには、チケットのプレイヤーに対して最小 (`min`)、最大 (`max`) および平均 (`avg`) の値を含まれます。デフォルトは `avg` です。

## 距離ルール
<a name="match-rules-reference-ruletype-distance"></a>

```
distance
```

距離ルールでは、プレイヤーのスキルレベル間の距離など、2 つの数値間の差異を測定します。例えば、距離ルールでは、すべてのプレイヤーが 30 時間以上ゲームをプレイしていることが必要になる場合があります。

**注記**  
バッチ距離ルールは、プレーヤーの属性を比較する場合に効率的です。マッチメーキングの待ち時間を短縮するには、可能であればバッチ距離ルールを使用してください。

**距離ルールのプロパティ**
+ **`measurements`** – 距離を測定するプレイヤー属性値。これは数値付きの属性でなければなりません。
+ **`referenceValue`** – マッチング候補に対して距離を測定する数値。
+ **`minDistance`/`maxDistance`** – マッチングを成功させるための距離の最大値または最小値。
+ **`partyAggregation`** – 複数のプレイヤー (パーティー) でチケットを FlexMatch がどのように処理するかを決定する値。有効なオプションには、チケットのプレイヤーに対して最小 (`min`)、最大 (`max`) および平均 (`avg`) の値を含まれます。デフォルトは `avg` です。

## コレクションルール
<a name="match-rules-reference-ruletype-collection"></a>

```
collection
```

コレクションルールは、プレイヤー属性値のグループをバッチ内の他のプレイヤーの属性値または参照値と比較します。コレクションには、複数のプレイヤーの属性値、文字列リストであるプレイヤー属性、またはその両方が含まれます。例えば、コレクションルールでは、チームが選択したプレイヤーのキャラクターを確認する場合があります。そのルールでは、チームに特定のキャラクターを少なくとも 1 人配置することが義務付けられる場合があります。

**収集ルールのプロパティ**
+ **`measurements`** – 比較するプレイヤー属性値の収集。属性値は文字列のリストである必要があります。
+ **`referenceValue`** – マッチング候補で測定の比較に使用する値 (または値の収集)。
+ **`operation`** – 一連の測定値を比較する方法を決定する値。有効なオペレーションには以下が含まれます。
  + `intersection` – このオペレーションでは、すべてのプレイヤーのコレクションで同じ値の数を測定します。intersection オペレーションを使用するルールの例については、「[例: 明示的な並べ替えを使用して最適なマッチングを見つける](match-examples-4.md)」を参照してください。
  + `contains` – 指定された参照値を含むプレイヤー属性のコレクションの数を測定します。contains オペレーションを使用するルールの例については、「[例: チームレベル要件とレイテンシーの制限を設定する](match-examples-3.md)」を参照してください。
  + `reference_intersection_count` – このオペレーションは、プレーヤー属性コレクション内のアイテムのうち、参照値コレクション内のアイテムと一致するアイテムの数を測定します。このオペレーションを使用して、複数の異なるプレーヤー属性を比較できます。複数のプレイヤー属性コレクションを比較するルールの例については、「[例: 複数のプレイヤー属性間の交差を見つける](match-examples-5.md)」を参照してください。
+ **`minCount`/`maxCount`** – 対戦を成功させるためのカウントの最小値または最大値。
+ **`partyAggregation`** – 複数のプレイヤー (パーティー) でチケットを FlexMatch がどのように処理するかを決定する値。この値では、`union` を使用してパーティー内のすべてのプレイヤーのプレイヤー属性を組み合わせることができます。または、`intersection` を使用してパーティーに共通するプレイヤー属性を使用することもできます。デフォルトは `union` です。

## 複合ルール
<a name="match-rules-reference-ruletype-compound"></a>

```
compound
```

複合ルールでは、論理的な記述を用いて 40 人以下のプレイヤーでマッチを行います。1 つのルールセットで複数の複合ルールを使用できます。複数の複合ルールを使用する場合、一致するにはすべての複合ルールが満たされている必要があります。

[拡張ルール](match-rulesets-components-algorithm.md#match-rulesets-components-algorithm-expansion)を使用して複合ルールを拡張することはできませんが、基本ルールやサポートルールを拡張することはできます。

**複合ルールプロパティ**
+ **`statement`** – 個々のルールを組み合わせて複合ルールを形成するために使用されるロジック。このプロパティで指定するルールは、ルールセットで以前に定義されている必要があります。複合ルールでは `batchDistance` ルールを使用できません。

  このプロパティは以下の論理演算子をサポートします。
  + `and` – 指定された 2 つの引数が true の場合、式は true と評価されます。
  + `or` – 指定された 2 つの引数のいずれか true の場合、式は true と評価されます。
  + `not` – 式内の引数の結果を逆にします。
  + `xor` – 引数のうち 1 つだけが true の場合、式は true と評価されます。

**Example 例**  
次の例では、選択したゲームモードに基づいてさまざまなスキルレベルのプレイヤーをマッチングします。  

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

## レイテンシールール
<a name="match-rules-reference-ruletype-latency"></a>

```
latency
```

レイテンシールールは、プレイヤーのレイテンシーをロケーションごとに測定します。レイテンシールールでは、レイテンシーが最大値を超える場所はすべて無視されます。レイテンシールールが受け入れるには、プレイヤーのレイテンシー値が少なくとも 1 つのロケーションで最大値を下回っている必要があります。`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`** – マッチメーキングチケットをソートする順序。有効なオペレーションは `ascending` および `descending` です。
+ **`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`** – マッチメーキングチケットを並べ替える方向。有効なオペレーションは `ascending` および `descending` です。
+ **`sortAttribute`** – チケットをソートする基準となるプレイヤー属性。
+ **`mapKey`** — プレイヤー属性がマップの場合、その属性をソートするオプション。有効なオペレーションは以下のとおりです。
  + `minValue` – バッチに最初に追加されたチケットの場合、最低値のキーを見つけます。
  + `maxValue` – バッチに最初に追加されたチケットの場合、最高値のキーを見つけます。
+ **`partyAggregation`** – 複数のプレイヤー (パーティー) でチケットを FlexMatch がどのように処理するかを決定する値。有効なオプションには、チケットのプレイヤーに対して最小 (`min`)、最大 (`max`) および平均 (`avg`) の値を含まれます。デフォルトは `avg` です。