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

マッチ形成の概要

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

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

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

フィルタリング

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

ソート (距離)

ルールは、どの候補が最初に試されるかを決定する 距離スコア にも貢献します。距離が小さいほど互換性が高くなります。
  • 同一の属性値を持つチケットは、通常、距離 0 をスコアします。
  • ルールの許容範囲の端にあるチケットは、距離 1 付近をスコアします。
  • 許容範囲外のチケットはフィルタリングで除外されます (実質的に無限の距離)。
キューに複数のルールがある場合、各ルールの距離はその 重み と掛け算され、合計されます。チケットは合計距離が低い順から高い順に試されるため、最も互換性のある候補が最初に試されます。
ルールの重みを使用して相対的な重要度を表現します。たとえば、リージョンの好みよりもスキルの類似性が重要な場合は、スキル ルールにより高い重みを与えます。

検証

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

拡張と緩和

チケットが待機すると、ルールは検索範囲を広げるために制約を 緩和 します。このプロセスを制御する 2 つのメカニズムがあります。
  • 拡張: ルールは時間とともにしきい値を徐々に調整します。たとえば、スキルしきい値 0.2 の DifferenceRule は 5 秒ごとに 0.1 ずつ拡張し、最終的に 0.5 の差を許可することがあります。
  • Seconds until optional: 構成された時間が経過すると、ルールはフィルタリングを完全に停止します。ルールは依然としてソート (距離) には貢献しますが、マッチをブロックしなくなります。
拡張は常に 時間ベース です。チケットが待機している時間の長さに基づいて、すべてのチケットに一様に適用されます。より長く待機しているチケットは、自然により広い拡張ステージに達し、より広い候補プールとマッチできます。
緩和はマッチの品質を無視することを意味しません。ルールが任意になった場合でも、ソート ステップに距離を貢献します。ルールを満たす候補は、満たさない候補よりも先に試されます。
拡張の構成の詳細については、マッチメイキング キューの構成 を参照してください。

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

キューが大量のチケットを受け取ると、サービスは独立して評価するグループにチケットを パーティショニング します。パーティショニングは、母集団を自然に分割するルール属性を使用します。たとえば、ゲーム モードに対する StringEqualityRule は、クリーンなパーティション境界を作成します。 負荷が減少すると、パーティションはマージされて戻ります。このプロセスは、サービスにより大きな候補プールを提供し、マッチの品質を向上させます。 スケーリングに適したキューの設計の詳細については、マッチメイキングのスケーリング を参照してください。

非対称な設定の設計

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

関連項目

最終更新日 2026年8月13日