スコアリングの公式
サーバーは加重合計公式を使用してスコア付けされます。この公式には4つの部分があります。
- 属性、これはプレイヤーやサーバーを表すデータで、プレイヤーの年齢やサーバーの稼働状況などがあります。
- 信号、属性を0から1の間の数値に変換します。
- 重み、信号の相対的重要性を示します。
- サーバースコア、これはサーバーと参加中のプレイヤーの互換性を測定します。
参加中のプレイヤーは、最も高いサーバースコアを持つサーバーにマッチングされます。
属性
属性はプレイヤーやサーバーを表すデータです。属性の値は数値または文字列である可能性があります。属性の値が文字列の場合、それはカテゴリー型属性と呼ばれます。属性の値が数値の場合、それは数値型属性と呼ばれます。
使用可能なすべてのRoblox属性の完全なリストについては、既存の属性をご覧ください。カスタム属性についての詳細は、カスタム属性をご覧ください。
例: カテゴリー型属性と数値型属性
| カテゴリー型属性 |
|---|
| フレンドの有無は、サーバーに好みのプレイヤーがいる場合は値が「true」という文字列になり、好みのプレイヤーがいない場合は「false」という文字列になるため、カテゴリー型属性です。 |
| 言語は、プレイヤーの言語設定(例えば「日本語」)であるため、カテゴリー型属性です。 |
| 数値型属性 |
| 年齢は、プレイヤーの年齢を表す数値型属性です。 |
| 稼働状況は、現在このサーバーにいるプレイヤーの数を表す数値型属性です。 |
信号
信号は属性値を0から1の間の数値、すなわち信号スコアに変換します。信号スコアが1の場合は高いプレイヤーの互換性を予測し、信号スコアが0の場合は低いプレイヤーの互換性を予測します。属性に応じて、変換には異なる集計、比較、および正規化が含まれる場合があります。
使用可能なRoblox信号の完全なリストについては、既存の信号をご覧ください。カスタム信号についての詳細は、カスタム信号をご覧ください。
例: 異なる信号スコアを持つ2つのサーバー
以下の表は、8人のプレイヤーが収容できる2つの異なるサーバーの稼働状況信号スコアを計算します。
| サーバーのプレイヤー数 | 稼働状況スコア | |
|---|---|---|
| サーバーA | 2 | 2/8 = 0.25 |
| サーバーB | 6 | 6/8 = 0.75 |
稼働状況信号はサーバーBの方が高く、参加中のプレイヤーにとってより適したサーバーと見なされます。
重み
信号の重みは、その信号の他の信号に対する重要性を示します。重みが高いほど、信号がサーバースコアに与える寄与が大きくなります。信号スコアに重みを掛けた後の値は、加重信号と呼ばれます。
信号は負の重みを持つことはできません。信号の重みが0の場合、その信号はスコア決定に考慮されません。
例: 稼働状況スコアの重み付け
以下の表は、8人のプレイヤーが収容できる場所の稼働状況信号スコアを、稼働状況信号の重みが2で計算します。
| サーバーのプレイヤー数 | 稼働状況スコア | 加重稼働状況スコア | |
|---|---|---|---|
| サーバーA | 2 | 2/8 = 0.25 | 0.25 * 2 = 0.5 |
| サーバーB | 6 | 6/8 = 0.75 | 0.75 * 2 = 1.5 |
例: 異なる重みを持つ2つの構成
異なる重みはマッチメイキングが異なるサーバーを選択させることもあります。以下の表は、異なるマッチメイキング構成を持つ2つのサーバーのサーバースコアを計算します。構成2は稼働状況信号の重みが高く、サーバーAには参加中のプレイヤーの友人がいます。
| フレンド | 稼働状況 | |||||
|---|---|---|---|---|---|---|
| 重み | スコア | 重み | スコア | 総スコア | ||
| 構成1 | サーバーA | 1 | 1 | 5 | 0.25 | 1 * 1 + 5 * 0.25 = 2.25 |
| サーバーB | 1 | 0 | 5 | 0.75 | 1 * 0 + 5 * 0.75 = 3.75 | |
| 構成2 | サーバーA | 3 | 1 | 5 | 0.25 | 3 * 1 + 5 * 0.25 = 4.25 |
| サーバーB | 3 | 0 | 5 | 0.75 | 3 * 0 + 5 * 0.75 = 3.75 | |
サーバースコア
サーバースコアは、サーバーの重み付けされた信号スコアの合計を計算する以下の加重合計公式によって計算されます:
マッチメイキング構成
マッチメイキング構成は、場所のサーバーをスコアリングするために使用される信号と重みのセットです。デフォルトでは、すべての場所のすべてのサーバーはRobloxのデフォルト構成でスコアリングされるため、使用するために設定をカスタマイズまたは有効化する必要はありません。
Robloxのデフォルト構成には、以下の信号と重みが含まれています。
| 信号 | 重み |
|---|---|
| フレンド | 15 |
| レイテンシ | 3 |
| テキストチャット | 3 |
| 稼働状況 | 2 |
| プレイ履歴 | 2 |
| 言語 | 2 |
| 年齢 | 1 |
| ボイスチャット | 1 |
| デバイスタイプ | 0 |
デフォルトのRoblox構成では、フレンド信号の重みは他のすべての信号の重みの合計を上回っています。これは、参加中のプレイヤーがフレンド(または同じIPアドレスにいるプレイヤー)がいるサーバーに常にマッチすることを意味します。
デバイスタイプ信号はデフォルト構成に存在しますが、重みが0であるため、マッチメイキングの決定に影響を与えません。この重みは、マッチメイキングをカスタマイズする際に調整できます。
各Roblox信号についての詳細は、既存の信号をご覧ください。
高度な概念
以下は、マッチメイキングプロセスに関するより高度な理念です。
正規化
信号は属性値を0から1の間の数値に正規化します。数値信号は任意の正の数値で正規化でき、この数値を正規化因子と呼びます。正規化された値が1を超える場合、それは1に制限されます。
例: 年齢信号の設計
年齢信号は、サーバー内のプレイヤーの平均年齢と参加中のプレイヤーの年齢の差を測定します。
年齢差が25を超えるサーバーはすべて、プレイヤーに対して等しく互換性がないと見なされます。たとえば、年齢差が25の場合、年齢差が26のプレイヤーにとってそれほど悪いものではないため、両方の値は信号スコアを0にすべきです。この場合、25が正規化因子と見なされます。
信号スコアは年齢差と逆の関係にあり、つまり年齢差が小さいと信号スコアが高くなります。
以下の表は、2つの異なる正規化因子の下での年齢信号スコアを示しています。
| 年齢 | 正規化因子: 100 | 正規化因子: 25 |
|---|---|---|
| 50 | 0.5 | 0 |
| 25 | 0.75 | 0 |
| 12 | 0.88 | 0.52 |
| 5 | 0.95 | 0.8 |
| 0 | 1 | 1 |
正規化因子が25の信号は、5歳と12歳の年齢差をより遠く離れたものと見なします。小さな正規化因子は、年齢差のわずかな増加や減少を増幅する効果があります。
重みの大きさ
重みは、構成内の他の信号に対する信号の重要性を示します。重みの相対的な大きさが信号の重要性を決定し、絶対的な大きさではありません。
例: 相対的な大きさと絶対的な大きさ
以下の表は、2つの異なるマッチメイキング構成を持つ2つのサーバーのサーバースコアを計算します。構成5と構成6は、稼働状況の重みがそれぞれフレンドの重みよりも高いです。サーバーAには参加中のプレイヤーのフレンドがいます。
| フレンド | 稼働状況 | |||||
|---|---|---|---|---|---|---|
| 重み | スコア | 重み | スコア | 総スコア | ||
| 構成5 | サーバーA | 10,000 | 1 | 15,000 | 0.25 | 10,000 * 1 + 15,000 * 0.25 = 13,750 |
| サーバーB | 10,000 | 0 | 15,000 | 0.75 | 10,000 * 0 + 15,000 * 0.75 = 11,250 | |
| 構成6 | サーバーA | 0.01 | 1 | 0.05 | 0.25 | 0.01 * 1 + 0.05 * 0.25 = 0.0225 |
| サーバーB | 0.01 | 0 | 0.05 | 0.75 | 0.01 * 0 + 0.05 * 0.75 = 0.0375 | |
サーバーAは構成5で勝ち、サーバーBは構成6で勝ちます。これは、構成5の稼働状況の重みがフレンドの重みの1.5倍であるのに対し、構成6の稼働状況の重みはフレンドの重みの5倍だからです。
絶対的な大きさの違いにもかかわらず、構成6は構成5よりも稼働状況をフレンドよりも優先させています。