> ## 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.

# Configuring matchmaking queues

> Game Manager でルール、チーム、属性、拡張ポリシーを使用して PlayFab マッチメイキング キューを構成し、プレイヤー同士のマッチング方法をカスタマイズします。

## 概要

マッチ構成の中心はキューです。キューは、チケットが互いにマッチされるまで待機する場所を表します。各キューには、マッチに何が必要かに関する一般的な構成があります。さらに、チケット同士のマッチング方法についての追加の制約を提供する一連のルールを含めることができます。

## キュー構成

キュー レベルでは、構成にはキュー内でチケットがどのようにマッチされるかに関する基本要件と、キューに関する統計情報を取得する方法が記述されます。

### キュー名

特定のキューの名前です。1 文字以上 64 文字以下 (両端を含む) で、大文字と小文字が区別されます。英数字とアンダースコアおよびハイフンから構成され、文字または数字で始まります。通常、キュー名は "4v4CaptureTheFlag" や "UnrankedRace" などの、ゲームのプレイ方法を表します。マッチメイキング チケットを作成するときは、どのキューに入るかを識別するためにキュー名を指定する必要があります。

### マッチ サイズ

マッチに許可されるプレイヤーの範囲です。最小マッチ サイズは 2 以上でなければなりません。最大マッチ サイズは 100 以下でなければなりません。チームを使用する場合、この制限は 32 です。

さらに、1 つのチケットだけですでにマッチの最小要件を満たしている場合でも、少なくとも他の 1 つのチケットとマッチするまでマッチ発見は返されません。ただし、チケットがすでにマッチの最大要件を満たしている場合は拒否されます。

### プレイヤーが利用可能な統計

この機能は、[GetQueueStatistics API](xref:titleid.playfabapi.com.multiplayer.matchmaking.getqueuestatistics) を通じてプレイヤーに公開されるキュー統計を決定します。サーバーは常にすべての統計にアクセスできます。詳細については、[タイトル内でのキュー統計の表示](/services/playfab/multiplayer/matchmaking/display-statistics) を参照してください。

この構成内で制御できるオプションは 2 つあります。

1. **マッチングするプレイヤー数を表示する** - マッチを待っているプレイヤー数をプレイヤーに公開するかどうか。タイトルは、モードの相対的な人気を隠すため、またはビジネス上の理由でプレイヤー数を非表示にするために、このオプションを使用する場合があります。
2. **マッチまでの時間の統計を表示する** - マッチまでの時間の統計 (平均およびパーセンタイル) をプレイヤーに公開するかどうか。

### チーム

キューにはチーム構成を含めることができ、マッチ サービスがプレイヤーをチームに割り当てます。チーム割り当ての方法を制御するために、さらにチーム固有のルールを使用できます。さらに、マッチ サービスは、同じチケット内で一緒にマッチするプレイヤーが異なるチームに割り当てられないようにします。

キュー内に 2 つ以上のチームを定義できます。

* **チーム名** - このチームで使用される名前。チーム名は 1 文字以上 64 文字以下 (両端を含む) で、大文字と小文字が区別されます。英数字とアンダースコアおよびハイフンから構成され、文字または数字で始まります。さらに、キュー内で一意である必要があります。
* **チーム サイズ** - チームに参加できるプレイヤーの最小および最大数。マッチメイキングは、最大数までできる限り多くのプレイヤーでチームを形成しようとします。

チームとそのサイズの定義以外にも、マッチメイキングでチームを扱う方法をサポートするために、他のルールを有効にできます。チーム固有のルールについては、[チーム ルールの種類](#team-rule-types) を参照してください。

## ルール構成

ルールは、必要に応じてキューに定義できます。構成された場合、マッチメイキング アルゴリズムがどのチケットを一緒にマッチさせるべきかを判断するのに役立ちます。各ルールは、プレイヤー メタデータの単一の属性に適用されます。1 つのキューに最大 20 個のルールを定義できます。

多くの種類のルールがあります。それぞれ、一般的に構成可能な要素と、その特定の種類のルールに固有の要素を含みます。さらに、多くのルールでは拡張が許可されており、これによりルールは時間とともに制約が緩やかになります。

### 一般的なルール要素

以下の要素は多くの場合、すべてのルールで使用されます。

* **ルール名** - 名前は 1 文字以上 255 文字以下 (両端を含む) で、英数字とアンダースコアおよびハイフンから構成され、文字または数字で始まる必要があります。ルール名はキュー内で一意である必要があります。
* **重み** - ルールの重要度を変更する方法です。ルールは一般に、制約と、資格を満たす残りのチケットを並べ替える方法の両方を提供します。重みは乗数で、並べ替え目的のルールの重要度を変更します。詳細については、[マッチメイキングにおけるルールの重みの理解](/services/playfab/multiplayer/matchmaking/rule-weights) を参照してください。
* **属性ソース** - ルールは、提供された情報に対して作用することがよくあります。このフィールドは、この情報のソースの 2 つのオプションを記述します。

  1. **User** - 属性は、チケットの作成または参加要求でプレイヤーとともに送信されます。
  2. **Player Entity** - 属性はプレイヤーに関連付けられた Player Entity から取得されます。これらの属性は [SetObjects API](xref:titleid.playfabapi.com.data.object.setobjects) を介して設定できます。外部エンティティ タイプを使用する場合は、このソースを使用しないでください。
* **属性パス** - 属性に到達するためのパス。User Attribute Source を使用する場合は、単純に属性名です。Player Entity Attribute Source を使用する場合、`$.playerSkill.Mean` など、エンティティから特定の項目を取得する [JSONPath](https://github.com/json-path/JsonPath) です。
* **属性が指定されていないときの動作** - ルールが属性を必要とするが、指定されていない場合、ルールは以下の 2 つの動作のいずれかで構成できます。

  1. 属性のデフォルト値を提供する。
  2. このシグナルを、チケットがルールで提供される制約を満たすことを示す方法として使用する。この動作は、たとえば、一部のプレイヤーが好みを表明し、別のプレイヤーが誰とでもマッチする意思がある場合に有用です。好みのないプレイヤーは属性の指定を省略し、他のどのプレイヤーともマッチできます。

### 標準ルールの種類

以下のルールの種類のそれぞれについて、その目的、一般的な用途、およびルールに必要となる可能性のある特定の構成を示します。

| ルールの種類           | 説明                                                         | 一般的な用途                                            | ルール固有のフィールド                                                                                      |
| ---------------- | ---------------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| String Equality  | マッチ内のすべてのチケットで文字列属性が同じであることを保証します。                         | ビルド バージョンやその他の特定の項目をマッチさせる必要がある場合                 | なし                                                                                               |
| Difference       | マッチ内の任意の 2 つのチケット間の数値属性の絶対差が、構成された最大差より小さいことを保証します。        | スキル、経験値、その他の数値比較でプレイヤーをグループ化する                    | Merge function - 複数のプレイヤーの値を、チケットを表す 1 つの値にマージする方法を選択します。選択肢は min、max、average です。デフォルトは average。 |
| Set Intersection | 文字列のリストである特定の属性について、マッチ内のすべてのチケットが構成された数以上の値を共有することを保証します。 | ダウンロード可能なコンテンツ (DLC) やマップ選択                       | Min intersection size - マッチの共有アイテムの最小数。                                                          |
| Match Total      | マッチ内のすべてのプレイヤーの数値属性の合計が構成された範囲内に収まることを保証します。               | ロール選択、ホスト/サーバー マッチメイキングのエミュレート、時間経過に伴うプレイヤー数制限の調整 | Min/Max total - 属性の合計はこの両端を含む範囲内にある必要があります。                                                      |
| Region Selection | マッチのすべてのユーザーに対して、共通のデータセンターへのレイテンシが構成された最大値未満であることを保証します。  | マルチプレイヤー サーバー統合に必要                                | Max Latency - この最大レイテンシ内のデータセンターのみがマッチの候補となります。                                                  |

### チーム ルールの種類

チーム ルールは、キュー構成にチームが存在する場合にのみ設定できます。これらは、チーム間のバランスを要求する追加の方法を提供します。以下のチーム ルールが利用可能です。

| ルールの種類                      | 説明                                                                                                         | 一般的な用途                                     | ルール固有のフィールド                                                            |
| --------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ---------------------------------------------------------------------- |
| Team Difference             | マッチに含まれるチームが、特定の属性 (スキルなど) について構成された差の範囲内にあることを保証します。標準的な Difference ルールと似ていますが、比較される値は各チームの平均値である点が異なります。 | チーム間でスキルをバランス                              | なし                                                                     |
| Team Size Balance           | 最大チームと最小チームのプレイヤー数の差がしきい値を超えないことを保証します。たとえばこのルールは、3v3 と 4v4 のマッチは許容するが 3v4 は許容しないキューを作成するために使用できます。        | チーム間のプレイヤー数のバランス                           | Allowed Team Size Difference - 各チームに割り当てられたプレイヤー数の差で測定される、チームの不均衡の許容量。 |
| Team Ticket Size Similarity | すべてのチームが大きなパーティを持つ、または大きなパーティを持たないことを保証します。大きなパーティは、最大チーム サイズの少なくとも半分と定義されます。                              | パーティ (事前編成チーム) がソロ プレイヤーのグループとマッチするのを防ぎます。 | なし                                                                     |

### 拡張と任意化

ルールは時間とともに任意になったり、制約が緩やかになったりして、しばらく待機しているチケットがマッチの候補をより広く検索できるようになります。この動作を制御するには 2 つの方法があります。

1. **Seconds until optional** - ルールがアクティブな時間の長さを単純に示します。この時間待機しているチケット間ではルールはマッチを制約しなくなります。

2. **Expansion process** - ルールは時間とともに構成されたしきい値を徐々に調整します。たとえば、Difference ルールは特定の最大差の範囲内でマッチを要求する場合があります。チケットが待機するにつれて、ルールは最大差を拡大することがあります。この拡張は、チケットにより大きな範囲を許可します。完全な対戦相手が利用できない場合でも、チケットがマッチされることを可能にします。

拡張は **linear** か **custom** のいずれかにできます。linear 拡張では、値は時間経過とともに、各時間間隔後に一定の変化量で増加します。linear 拡張でカスタマイズできる項目は次のとおりです。

* **Seconds between expansions** - ルールが制約を変更する各インスタンス間の時間。
* **Delta** - 値の変化量。
* **Limit** - 終端値。ルールはこのポイントを超えて拡張されることはありません。

custom 拡張では、ルールが制約を変更するたびに任意の値を使用できます。以下のフィールドが使用されます。

* **Seconds between expansions** - ルールが制約を変更する各インスタンス間の時間
* 拡張中にルールを変更する **1 つ以上のカスタム フィールド**。各フィールドはセミコロンで区切られ、各拡張間隔で使用される異なる値を表します。値の代わりに "null" という単語を使用して、この間隔ではルールがアクティブでないことを示すことができます。

変更される正確なフィールドはルールによって異なります。以下の表は、どのルールがどの種類の拡張を持ち、拡張がどのフィールドを変更するかを示しています。

| ルールの種類                      | linear 拡張が許可されるか? | custom 拡張が許可されるか? | 拡張中に変更される属性       |
| --------------------------- | ----------------- | ----------------- | ----------------- |
| 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

- [Analyzing Your Matchmaking Queue Usage](/ja-jp/services/playfab/multiplayer/matchmaking/usage.md)
- [Matchmaking quickstart](/ja-jp/services/playfab/multiplayer/matchmaking/quickstart.md)
- [title_queue_config_updated](/ja-jp/services/playfab/api-references/events/Matchmaking/title-queue-config-updated.md)
- [Displaying queue statistics in your title](/ja-jp/services/playfab/multiplayer/matchmaking/display-statistics.md)
- [MatchmakingMatchFoundPayload](/ja-jp/services/playfab/api-references/events/data-types/matchmakingmatchfoundpayload.md)
