マッチメイキングが負荷の下でどのようにスケーリングされるか

概要

キューが大量のチケットを受け取ると、サービスは自動的に処理をスケーリングして、マッチ待機時間を短く維持します。 負荷が増えるにつれて、チケットはキューの構成されたルールを使用してグループ化され、同様のチケット (互換性がある可能性が高いチケット) が一緒に評価されます。 負荷が減少すると、これらのグループが統合され、サービスで選択できるチケットのプールが大きくなり、マッチ品質が向上します。

このスケーリングはプレイヤーには透過的ですが、キューに対して構成するルールは、サービスが作業をどの程度効果的に分散できるかに影響します。 このプロセスを理解すると、効率的にスケーリングするキュー構成を設計するのに役立ちます。

ルールを適切にスケーリングする方法

サービスが処理能力全体にチケットを配布する必要がある場合は、チケットをほぼ等しいグループに自然に分割するルール属性を検索します。 さまざまな個別の値を持つルールが最適です。このルールを使用すると、負荷を均等に分散するためのより多くのオプションがサービスに提供されます。

適切な分散を提供するルールがない場合、サービスは、ルール属性に依存せずに負荷の分散を行う汎用ディストリビューションにフォールバックします。 たとえば、これはほとんどのチケットが同じ属性値を共有している場合に発生します。

適切にパーティション分割するルール

  • 多様な値を持つ文字列等値ルール - プレイヤーの母集団全体で複数の個別の値を持つ GameModeRegion などのルールは、自然なパーティション境界を作成します。 サービスは、チケットを同じ値を共有するグループにきれいに分割できます。
  • 必須のルール - マッチングの過程を通じて (拡張なし) 常に適用されるルールは、強い制約を表すため、パーティション分割に適しています。 これらのルールに基づいて分割することで、パーティションの境界が最も重要なマッチ要件と一致することが保証されます。
  • 重み付けルールが高い - 重みが大きいルールは、パーティション分割の優先順位が付けられます。 この方法は、マッチ品質のために最も重要と考えられるルールが、チケットの分配方法をガイドする可能性が最も高いルールでもあることを意味します。
  • 値の広がりのある差分ルール — スキル レーティングなどの数値ルールは、プレイヤーの値が範囲に分散されている場合に適切に機能し、サービスはチケットを類似の値を持つグループに分割できます。

パーティション分割の効果が低いルール

  • ほとんどのチケットが同じ値を共有するルール - ほぼすべてのプレイヤーがルールに同じ属性値を送信した場合、サービスはそのルールを使用して意味のある分割を作成できません。
  • ワイルドカードの使用量が多いルール - チケットの大部分がルールにワイルドカード (match-any) 値を使用する場合、そのルールはチケットを個別のグループに分割する際にあまり役に立ちません。
  • 拡張を含むルール — 時間の経過と共に省略可能になるルールは、制約が緩やかでチケットの有効期間中に保持されない可能性があるため、パーティション分割では優先度が下がります。

設計時の考慮事項

チケット量が多くなる可能性があるゲームのマッチメイキング キューを設計する場合は、次の考慮事項に注意してください:

  • 属性値を分散する - プレイヤーの母集団全体にさまざまな属性値を持つルールにより、より良いパーティション分割が生成されます。 ほとんどのプレイヤーがルールに同じ値を共有する場合、パーティション間の負荷分散には役立ちません。
  • 重要なルールの重み付け - ルールの 重みは、マッチの並べ替え優先度とパーティション分割の優先順位の両方に影響します。 マッチ品質にとって最も重要なルールに高い重みを割り当てることで、これらのルールによってチケットの配布方法も確実にガイドされます。
  • 不要なワイルドカードを避ける - チケットの大部分がルールにワイルドカード値を使用する場合、そのルールはパーティション分割にあまり役に立ちません。 ゲーム デザインにワイルドカード動作が必要かどうかを検討してください。
  • パーティションの変更中の再試行は正常—分割またはマージによってパーティション レイアウトが変更されると、再試行シグナルで一部のチケットが一時的に取り消されることがあります。 マッチメイキング SDK はこれを自動的に処理するため、プレイヤーは一時的な遅延のみを経験します。