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

# How matchmaking works

> PlayFab マッチメイキング ループの理解: チケットのシードの選ばれ方、距離スコアによるランク付け、キュー ルールによる検証、そして完全なマッチへのグルーピング。

この記事では、PlayFab マッチメイキングがチケットを評価し、ルールを適用し、マッチを形成する方法について説明します。マッチング プロセスを理解することで、効率的に高品質なマッチを生成するキュー構成を設計するのに役立ちます。

## マッチ形成の概要

チケットをキューに送信すると、マッチメイキング サービスはそのチケットを他の待機中のチケットと並べて配置します。サービスは、互換性のあるチケットをマッチにグルーピングしようとする **マッチ ループ** を継続的に実行します。各ステップでは次のことが行われます。

1. **有効期限切れのチケットが削除されます。** `GiveUpAfterSeconds` タイムアウトを超えたチケットはキャンセルされます。
2. **チケットが待機時間順にソートされます:** 最も長く待機しているチケットが、潜在的なマッチの **シード** (開始ポイント) になります。
3. **候補が互換性でランク付けされます:** 残りの各チケットは、キューのルールに従って、シード チケットとの属性の一致度に基づいて **距離スコア** を受け取ります。
4. **貪欲にグループが構築されます:** 最も近い候補から始めて、`MaxMatchSize` まで一度に 1 つずつチケットがグループに追加されます。
5. **各追加が検証されます:** チケットが追加されると、すべてのルールが、その候補がこれまでのグループとまだ互換性があるかを確認します。いずれかのルールで拒否された場合、候補はスキップされます。
6. **完全なグループが検証されます:** グループが少なくとも `MinMatchSize` に達すると、最終検証パスでグループがすべてのルールを満たしているかを確認します。合格すれば、マッチが作成されます。
7. **バックトラック:** 有効なグループが形成できない場合、サービスは最後に追加したチケットを削除し、次の候補を試します。このプロセスは、現在のシードを諦める前に代替のグルーピングを探索します。

その後、サービスは次に長く待機しているチケットを新しいシードとして選び、プロセスを繰り返します。

<Note>
  アルゴリズムは、最も長く待機しているチケットを優先します。この優先順位により、最も長く待機しているプレイヤーが最初にマッチを受け取ることが保証されます。
</Note>

## ルールがマッチングに与える影響

ルールはマッチ形成中に **フィルタリング** と **ソート** の 2 つの目的を果たします。

### フィルタリング

ルールはチケットがグループに参加するのをブロックできます。たとえば、ゲーム ビルド バージョンに対する `StringEqualityRule` は、ビルドがグループのビルドと一致しないチケットを拒否します。マッチメイキング サービスは、候補を検討するたびにフィルタリングを確認します。開始時の 1 回限りのチェックではありません。

### ソート (距離)

ルールは、どの候補が最初に試されるかを決定する **距離スコア** にも貢献します。距離が小さいほど互換性が高くなります。

* 同一の属性値を持つチケットは、通常、距離 **0** をスコアします。
* ルールの許容範囲の端にあるチケットは、距離 **1** 付近をスコアします。
* 許容範囲外のチケットはフィルタリングで除外されます (実質的に無限の距離)。

キューに複数のルールがある場合、各ルールの距離はその [重み](/services/playfab/multiplayer/matchmaking/config-queues) と掛け算され、合計されます。チケットは合計距離が低い順から高い順に試されるため、最も互換性のある候補が最初に試されます。

<Tip>
  ルールの重みを使用して相対的な重要度を表現します。たとえば、リージョンの好みよりもスキルの類似性が重要な場合は、スキル ルールにより高い重みを与えます。
</Tip>

### 検証

一部の制約は、完全なグループが形成された後にのみ確認できます。たとえば、チーム バランス ルール (`TeamDifferenceRule`、`TeamSizeBalanceRule`) は、チームがバランスされているかを評価するために、完全なグループを見る必要があります。これらのルールは最終検証ステップとして実行されます。

## 拡張と緩和

チケットが待機すると、ルールは検索範囲を広げるために制約を **緩和** します。このプロセスを制御する 2 つのメカニズムがあります。

* **拡張**: ルールは時間とともにしきい値を徐々に調整します。たとえば、スキルしきい値 0.2 の `DifferenceRule` は 5 秒ごとに 0.1 ずつ拡張し、最終的に 0.5 の差を許可することがあります。
* **Seconds until optional**: 構成された時間が経過すると、ルールはフィルタリングを完全に停止します。ルールは依然としてソート (距離) には貢献しますが、マッチをブロックしなくなります。

拡張は常に **時間ベース** です。チケットが待機している時間の長さに基づいて、すべてのチケットに一様に適用されます。より長く待機しているチケットは、自然により広い拡張ステージに達し、より広い候補プールとマッチできます。

<Note>
  緩和はマッチの品質を無視することを意味しません。ルールが任意になった場合でも、ソート ステップに距離を貢献します。ルールを満たす候補は、満たさない候補よりも先に試されます。
</Note>

拡張の構成の詳細については、[マッチメイキング キューの構成](/services/playfab/multiplayer/matchmaking/config-queues) を参照してください。

## スケーリングとパーティショニング

キューが大量のチケットを受け取ると、サービスは独立して評価するグループにチケットを **パーティショニング** します。パーティショニングは、母集団を自然に分割するルール属性を使用します。たとえば、ゲーム モードに対する `StringEqualityRule` は、クリーンなパーティション境界を作成します。

負荷が減少すると、パーティションはマージされて戻ります。このプロセスは、サービスにより大きな候補プールを提供し、マッチの品質を向上させます。

スケーリングに適したキューの設計の詳細については、[マッチメイキングのスケーリング](/services/playfab/multiplayer/matchmaking/matchmaking-partition) を参照してください。

## 非対称な設定の設計

マッチメイキング シナリオの一部には、非対称な設定が関係します。たとえば、プレイヤー A はプレイヤー B とマッチすることをいとわないが、プレイヤー B はプレイヤー A とマッチすることをいとわない、といった場合です。クロスプレイの設定が最も一般的な例です。推奨される構成パターンと動作例については、[非対称なクロスプレイ設定への対応](/services/playfab/multiplayer/matchmaking/config-examples#handling-asymmetric-cross-play-preferences) を参照してください。

## 関連項目

* [マッチメイキング キューの構成](/services/playfab/multiplayer/matchmaking/config-queues)
* [マッチメイキング シナリオと構成の例](/services/playfab/multiplayer/matchmaking/config-examples)
* [マッチメイキングのスケーリング](/services/playfab/multiplayer/matchmaking/matchmaking-partition)


## Related topics

- [google-gson ライセンス](/ja-jp/services/playfab/sdks/java/Licenses/google-gson-license.md)
- [Workaround for peer-to-peer connection](/ja-jp/services/playfab/multiplayer/matchmaking/peer-to-peer.md)
- [XBOX 認定の概要](/ja-jp/publishing/certification/overview.md)
- [PC およびモバイル ゲーム向けの XBOX 要件テスト ケース](/ja-jp/publishing/certification/pc-policy-tests.md)
- [Partner Center で XBOX 統計と統計ルールを構成する](/ja-jp/publishing/game-publishing/how-to/data-platform-2013/how-to-configure-stats.md)
