属性と信号

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

既存の属性

デフォルトのRobloxマッチメイキング構成は、プレイヤーの位置、年齢層、レイテンシなどの既存の属性に基づく信号を使用します。

Robloxが自動的にデフォルト構成に含めないデータをマッチメイキングに使用するには、カスタム属性カスタム信号を作成する必要があります。

属性タイプ説明
推定プレイヤーレイテンシ数値サーバー内のプレイヤーの推定レイテンシ。
友達がいるかカテゴリカルサーバーに参加しているプレイヤーと同じIPアドレスを持つ友達または他のプレイヤーがいるかどうか。
ボイスチャットが有効かカテゴリカルプレイヤーがボイスチャットを有効にしているかどうか。
プレイヤーの年齢数値プレイヤーの年齢。
プレイヤーデバイスタイプカテゴリカルプレイヤーのデバイスタイプ。モバイルデバイス、コンピュータ、タブレット、コンソール、またはVRデバイスのいずれか。
プレイヤーの言語カテゴリカルプレイヤーの言語。
プレイヤーのプレイ履歴数値過去28日間にユニバースでプレイヤーがプレイした時間の対数(log-10)で表された分数。
サーバーの占有率数値サーバー内のプレイヤーの数。
プレイヤーのテキストチャットグループカテゴリカルプレイヤーが一緒にテキストチャットできるプレイヤーのテキストチャットグループ。

既存の信号

以下は、Robloxの属性に基づいて派生したRoblox定義の信号です:

信号説明
年齢サーバー内のプレイヤーの平均年齢と参加プレイヤーの年齢の差。最大関連差は25。
デバイスタイプ参加プレイヤーと同じデバイスタイプを持つサーバー内のプレイヤーの比率。
友達サーバー内で参加プレイヤーと友達である人の数。または、参加プレイヤーと同じIPアドレスを共有する人の数です。優先プレイヤーがいる場合は1、いない場合は0。
レイテンシサーバーの推定プレイヤーレイテンシ。最大関連値は250。
言語参加プレイヤーと同じ言語を話すサーバー内のプレイヤーの比率。
占有率サーバー内のプレイヤー数とサーバーの定員の比率。
プレイ履歴サーバー内のプレイヤーの平均プレイ履歴と参加プレイヤーのプレイ履歴の差。最大関連差は4.6。
ボイスチャットボイスチャットが有効なサーバー内のプレイヤーの比率。
テキストチャット参加プレイヤーと一緒にテキストチャットできるサーバー内のプレイヤーの比率。

年齢

サーバー内のプレイヤーの平均年齢と参加プレイヤーの年齢を比較する数値信号。この信号の関連最大差は25です。信号スコアは年齢差に反比例しており、つまり年齢差が小さいほどスコアが高くなります。

ageDifferenceSignalScore=1min(25,ageDifference)/25\text{ageDifferenceSignalScore} = 1 - \min(25, \text{ageDifference}) / 25

ここで、

ageDifference=avgServerAgejoiningPlayerAge\text{ageDifference} = |\text{avgServerAge} - \text{joiningPlayerAge}|

デバイスタイプ

参加プレイヤーと同じデバイスタイプを持つサーバー内のプレイヤーの比率を測定するカテゴリカル信号。デバイスタイプには、コンピュータ、モバイルデバイス、タブレット、コンソール、VRデバイスが含まれます。

deviceTypeSignalScore=# players with same device as joining player/# players on the server\text{deviceTypeSignalScore} = \text{\# players with same device as joining player} / \text{\# players on the server}

友達

優先プレイヤーは、参加プレイヤーと友達であるか、参加プレイヤーと同じIPアドレスを共有するプレイヤーです。友達信号はカテゴリカル信号であり、サーバー内に優先プレイヤーがいる場合は1、いない場合は0のスコアを持ちます。

friendsSignalScore=hasFriends ? 1:0\text{friendsSignalScore} = \text{hasFriends} \ {?} \ 1 : 0

友達信号は最大関連値1の数値信号とも見なすことができます。

friendsSignalScore=min(# preferred players in server,1)/1\text{friendsSignalScore} = \min(\text{\# preferred players in server}, 1) / 1

言語

参加プレイヤーと同じ言語設定を持つサーバー内のプレイヤーの比率を測定するカテゴリカル信号。

languageSignalScore=# players with same language setting as joining player/# players on the server\text{languageSignalScore} = \text{\# players with same language setting as joining player} / \text{\# players on the server}

レイテンシ

参加プレイヤーがサーバーでプレイした場合の推定ping時間をミリ秒単位で測定する数値信号。この信号の最大関連値は250ミリ秒です。信号スコアはpingに反比例しており、つまりping値が低いほどスコアが高くなります。

latencySignalScore=1min(250,estimatedPingMs)/250\text{latencySignalScore} = 1 - \min(250, \text{estimatedPingMs}) / 250

占有率

サーバー内のプレイヤー数とサーバーの定員の比率を測定する数値信号。

occupancySignalScore=# players in server/serverCapacity\text{occupancySignalScore} = \text{\# players in server} / \text{serverCapacity}

プレイ履歴

プレイ履歴属性値は、過去28日間にユニバースでプレイヤーがプレイした時間の対数(log-10)で表されます。この数値信号は、サーバー内のプレイヤーの平均log-10プレイ履歴値と参加プレイヤーのプレイ履歴値を比較します。この信号の関連最大差は4.6です。信号スコアはプレイ履歴の差に反比例しており、つまりプレイ履歴の差が小さいほどスコアが高くなります。

playHistorySignalScore=1min(4.6,playHistoryDifference/4.6)\text{playHistorySignalScore} = 1 - \min(4.6, \text{playHistoryDifference} / 4.6), ここで

playHistoryDifference=avgServerPlayHistoryjoiningPlayerPlayHistory\text{playHistoryDifference} = |\text{avgServerPlayHistory} - \text{joiningPlayerPlayHistory}|

ボイスチャット

プレイヤーはボイスチャットを有効または無効にできます。ボイスチャット信号は、参加プレイヤーと同じボイスチャット設定を持つプレイヤーの比率を測定するカテゴリカル信号です。

もしプレイスがボイスチャットを無効にしている場合、ボイスチャット信号の重みは0になります。

voiceChatSignalScore=# players with same voice chat setting as joining player/# players on the server\text{voiceChatSignalScore} = \text{\# players with same voice chat setting as joining player} / \text{\# players on the server}

テキストチャット

サーバー内で参加プレイヤーと一緒にテキストチャットできるプレイヤーの比率を測定するカテゴリカル信号です。

textChatSignalScore=# players can text with the joining player in common /# players on the server\text{textChatSignalScore} = \text{\# players can text with the joining player in common } / \text{\# players on the server}

カスタム属性

カスタム属性は、カスタム信号にプレイヤーとサーバーのデータへのアクセスを提供します。独自のカスタム属性を作成する方法については、カスタム属性を作成するを参照してください。既存のRoblox属性については、既存の属性を参照してください。

属性特性
プレイヤー永続的

プレイヤーのレベルやゲーム内のスコアなど、データストアに永続するカスタムプレイヤーデータ

DataStore APIを使用して管理されます
サーバー永続的でなく、サーバーがアクティブな限りのみ持続します

サーバー固有のデータ(サーバーレベルやゲームモードなど)

MatchmakingService APIを使用して管理されます
プレイヤー属性の例

local DataStoreService = game:GetService("DataStoreService")
local eloStore = DataStoreService:GetDataStore("PlayerElo")
function onMatchEnded(players: {Player}, winners: {Player}, losers: {Player})
for _, player in players do
local updatedElo = CalculateUpdatedElo(player, winners, losers)
local success, errorMessage = pcall(function()
eloStore:SetAsync(player.UserId, updatedElo)
end)
end
end
サーバー属性の例

local MatchmakingService = game:GetService("MatchmakingService")
local RunService = game:GetService("RunService")
if RunService:IsStudio() then
-- テスト用に初期属性とスキーマを設定
MatchmakingService:InitializeServerAttributesForStudio({
Level = "Advanced",
Elo = 123.456,
TrainingMode = true
})
end
-- Level属性を取得
local currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")
if errorMessage then
warn(errorMessage)
else
print("Current level: " .. currentLevel)
end
-- Level属性値をAdvancedに更新
local success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Advanced")
if not success then
warn("Failed to update server attribute [Level] to [Advanced] due to error: " .. errorMessage)
else
print("Successfully set [Level] to [Advanced]")
end

カスタム信号

カスタム信号は、あなたが作成し定義したもので、数値またはカテゴリカルであることができます:

  • 数値信号は数値です。参加プレイヤーの属性とサーバーの集計値の差を比較し、大きな差異があるとスコアが低下または増加します。たとえば、プレイヤーのスキルレベルがサーバーの平均スキルレベルに近いほど、数値信号のスコアは高くなります。このスコアは、信号の重みで掛け算されます。
  • カテゴリカル信号は文字列やブール値です。参加プレイヤーの属性がサーバー内の他のプレイヤーに比べてどれだけ一般的かに基づいています。たとえば、サーバー内のプレイヤーが参加プレイヤーと同じ言語を話す割合が高いほど、スコアは増加します。このスコアも信号の重みで掛け算されます。

独自のカスタム信号を作成する方法については、カスタム信号を作成するを参照してください。既存のRoblox信号については、既存の信号を参照してください。

プレイヤー数値

参加プレイヤー

サーバーの平均プレイヤー属性と参加プレイヤーの属性との差を最小化します。1000を超える差は信号スコアを0に返します。

参加プレイヤーの数値信号の公式

local diff = math.abs(server_{aggregation_function}_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
参加プレイヤーの数値信号の例

local server_average_Elo = 2000
local joining_player_Elo = 1000
local max_relevant_difference = 1500
local diff = math.abs(server_average_Elo - joining_player_Elo)
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
定数値

サーバーの平均プレイヤー属性と定数値500との差を最小化します。1000を超える差は信号スコアを0に返します。

定数値の公式での数値信号

local diff = math.abs(server_sum_{attribute_name} + joining_player_{attribute_name} - constant_value)
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
定数値の数値信号の例

local server_sum_PowerLevel = 4500
local joining_player_PowerLevel = 9901
local max_relevant_difference = 1500
local constant_value = 5000
local diff = math.abs(server_sum_PowerLevel + joining_player_PowerLevel - constant_value)
local score = 1 - math.min(diff / max_relevant_difference, 1)

プレイヤーカテゴリカル

クラスタリング

参加プレイヤーの属性と同じ属性を持つサーバー内のプレイヤーの比率を最大化します。

クラスタリング公式でのカテゴリカル信号

local score = num_players_same_{attribute_name} / occupancy
return score
クラスタリングの例

local num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return score
多様化

参加プレイヤーの属性と異なる属性を持つサーバー内のプレイヤーの比率を最大化します。

多様化公式でのカテゴリカル信号

local score = num_players_same_{attribute_name} / occupancy
return 1 - score
多様化の例

local num_players_same_RpgClass = 15
local occupancy = 19
local score = num_players_same_RpgClass / occupancy
return score

サーバー数値

参加プレイヤー

サーバーの属性と参加プレイヤーの属性との差を最小化します。1000を超える差は信号スコアを0に返します。

参加プレイヤーの公式サーバー数値信号

local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
参加プレイヤーの数値信号の例

local server_Level = 4500
local joining_player_Level = 9000
local max_relevant_difference = 1500
local diff = math.abs(server_Level - joining_player_Level)
local score = 1 - math.min(diff / max_relevant_difference, 1)
定数値

サーバーの属性値と定数値との違いを最小化します。この定数値を超える違いは信号スコアを0に返します。

定数値公式でのサーバー数値信号

local diff = math.abs(server_{attribute_name} - constant_value)
local score = math.min(diff / max_relevant_difference, 1)
return score
定数値のサーバー数値信号の例

local server_GameTime = 500
local max_relevant_difference = 1000
local constant_value = 1000
local diff = math.abs(server_GameTime - constant_value)
local score = math.min(diff / max_relevant_difference, 1)

サーバーカテゴリカル

参加プレイヤーと比較

サーバーの属性値(例:ゲームモード)がプレイヤーの属性値(例:優先ゲームモード)と等しい場合、スコアは1になります。それ以外の場合、信号スコアは0になります。

参加プレイヤーの公式サーバーカテゴリカル信号

if server_{attribute_name} == joining_player_{attribute_name} then
return 1
else
return 0
end
参加プレイヤーのサーバーカテゴリカル信号の例

local server_GameMode = "Survival"
local joining_player_GameMode = "Survival"
if server_GameMode == joining_player_GameMode then
return 1
else
return 0
end
定数値と比較

サーバーの属性値が真の定数値と等しい場合、スコアは1になります。それ以外の場合、信号スコアは0になります。

定数値公式でのサーバーカテゴリカル信号

if server_{attribute_name} == constant_value then
return 1
else
return 0
end
定数値のサーバーカテゴリカル信号の例

local server_GameNotStarted = true
if server_GameNotStarted == true then
return 1
else
return 0
end
©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。