概要
マッチメイキング キューを構成するとき、各ルールに Weight 値を割り当てることができます。Weight は、マッチメイキング システムが有資格のチケットをランク付けおよび並べ替えるときに、特定のルールにどれだけの影響力を持たせるかを制御する数値の乗数です。チケットがルールを合格するかどうかは変更されません。マッチに最適な候補チケットを判定する際に、そのルールが他のルールと比べてどの程度重要か にのみ影響します。 Weight を理解することは、マッチ品質のチューニングに不可欠です。ルール全体で weight を調整することで、ゲームにとって最も重要なもの (スキル バランス、地理的な近さ、共有コンテンツなど) を優先できます。Weight の動作の仕組み
weight をサポートするすべてのルールは、評価される各チケット ペアの 距離 値を計算します。この距離は、そのルールに従って 2 つのチケットがどの程度似ているか、または異なるかを表します。- 距離が 0 は、チケットがそのルールで完全にマッチすることを意味します。
- 距離が 1 に近いほど、ルールが許容する境界にチケットがあることを意味します。
- 距離が 無限大 (ハード拒否) の場合、weight に関係なく、チケットはそのルールに従ってマッチできないことを意味します。
Weight はハード制約を 上書きしません。ルールが 2 つのチケットは互換性がないと判断した場合、それらのチケットは完全に除外されます。たとえば、これは Difference ルールで値が許容される最大差を超えた場合に発生します。Weight は、すでに資格のあるチケット間の 優先順序 にのみ影響します。
各ルールが距離を計算する方法
Weight の例を見る前に、weight のある各ルールがどのように距離値を計算するかを理解することが役立ちます。距離は常に 0 から 1 の間の数値で、値が低いほどより近いマッチであることを示します。Weight をサポートするルール
Weight は、距離ベースのソートに参加する 標準のルールの種類 に適用されます。以下のルールは Weight プロパティをサポートします。
以下の チーム ルールの種類 は weight を サポートしません。これらのルールはバリデーターとして機能します。マッチを合格または不合格にし、距離ベースのソートには参加しません。
有効な weight 値
Weight は、0 より大きく、1000 まで (両端を含む) の数値でなければなりません。weight を 0 に設定することはできません。weight が指定されていない場合、デフォルト値は 1 です。例
以下の例では、スキル用の Difference ルール と、希望するゲーム マップ用の Set Intersection ルール を使用したキューを使用します。3 人のプレイヤー — Alice、Bob、Charlie — がキューに入っています。マッチメイキング システムは、2 人の候補 (Bob または Charlie) のどちらが Alice にとってより良いマッチかを決定する必要があります。キュー構成
プレイヤーの属性
ステップ 1: ルールごとの距離を計算する
SkillRule (Difference ルール) は式absoluteDifference / maxDifference を使用します。
- Alice 対 Bob:
|20 - 24| / 10 = 4 / 10 = 0.4 - Alice 対 Charlie:
|20 - 17| / 10 = 3 / 10 = 0.3
1 / (1 + sharedItemCount) を使用します。
- Alice 対 Bob: 彼らは “Dustbowl” と “Summit” (2 個のアイテム) を共有 →
1 / (1 + 2) = 0.33 - Alice 対 Charlie: 彼らは “Lakeside” (1 個のアイテム) を共有 →
1 / (1 + 1) = 0.5
例 1: 同じ weight
両方のルールで Weight = 1 の場合、合計距離は次のとおりです。例 2: スキルを優先 (SkillRule の Weight = 10)
ゲームが競争的でスキル バランスが最も重要な場合、SkillRule の weight を上げます。例 3: 共有マップを優先 (MapRule の Weight = 10)
ゲームがカジュアルで、プレイヤーが好きなマップでプレイすることを最も重視する場合は、代わりに MapRule の weight を上げます。例 4: プレイヤーがマッチできない場合 (ハード拒否)
4 人目のプレイヤー、Dave を追加します。彼のスキルは Alice から遠く、希望マップを共有していません。
SkillRule:
|20 - 35| / 10 = 15 / 10 = 1.5 — ただし、差 15 が MaxDifference (10) を超えるため、ルールは 無限大の距離 を返します (ハード拒否)。
MapRule: Alice と Dave は 0 マップを共有し、MinIntersectionSize は 1 であるため、このルールも 無限大の距離 を返します。
例のまとめ
以下の表は、同じプレイヤー属性と同じルールを使用し、weight のみが異なる場合に、weight がどの候補を優先するかをどのように変更するかを示しています。
基となる距離は決して変わりません。各ルールに割り当てられた相対的な重要度のみが変わります。Dave のプレイヤー属性はハード リミットを超えているため、weight に関係なく常に拒否されます。これが weight チューニングの威力です。
Weight とルール拡張
ルールが (Seconds until optional や拡張を通じて) 任意になった場合、チケットをハード拒否することはなくなります。ただし、拒否されたはずのチケットも 0 以外の距離値を受け取ります。Weight はこの距離をスケーリングし続けるため、任意ルールでもソート順に影響します。ルールを「違反する」チケットを完全に除外するのではなく、優先度で下位に押しやります。 この動作は、時間とともにルールが緩やかになった場合でも、最良のマッチが依然として優先されることを保証するのに有用です。ベスト プラクティス
- 同じ weight から開始し、プレイヤーからのマッチ品質のフィードバックに基づいて調整します。
- ゲーム体験にとって最も重要なルール (競技タイトルのスキル、カジュアル ゲームの共有コンテンツなど) には より高い weight を使用 します。
- Weight はソートにのみ影響することを覚えておいてください。それだけでは、不可能なマッチを可能にすることはできません。ハード制約を時間とともに緩和するには、拡張 を使用します。
- 1 つのルールが他のすべてを完全に上回るように意図する場合を除き、極端な weight 比 (1000:1 など) は避けてください。
