속성과 신호

*이 콘텐츠는 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}

대기 시간

접속하는 플레이어가 서버에서 플레이할 경우 추정 핑 시간(밀리초)을 측정하는 숫자 신호입니다. 이 신호의 최대 관련 값은 250밀리초입니다. 신호 점수는 핑과 반비례하며, 낮은 핑 값이 높은 점수를 갖습니다.

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("현재 레벨: " .. currentLevel)
end
-- Level 속성 값을 Advanced로 업데이트
local success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Advanced")
if not success then
warn("서버 속성 [Level]을 [Advanced]로 업데이트하는 데 실패했습니다: " .. errorMessage)
else
print("성공적으로 [Level]을 [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
상수 값과 비교

서버의 속성 값이 상수 값 true와 같으면 점수는 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'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.