Atrybuty i sygnały

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Istniejące atrybuty

Domyślna konfiguracja dopasowywania Roblox wykorzystuje sygnały oparte na istniejących atrybutach, takich jak lokalizacja gracza, grupa wiekowa i opóźnienie.

Aby użyć danych do dopasowywania, których Roblox nie uwzględnia automatycznie w swojej domyślnej konfiguracji, musisz utworzyć niestandardowe atrybuty i niestandardowe sygnały.

AtrybutTypOpis
Szacowane opóźnienie graczaLiczbowySzacowane opóźnienie gracza w serwerze.
Ma przyjaciółKategorycznyCzy serwer ma przyjaciela lub innego gracza o tym samym adresie IP, co gracz dołączający.
Czat głosowy włączonyKategorycznyCzy gracz ma włączony czat głosowy.
Wiek graczaLiczbowyWiek gracza.
Typ urządzenia graczaKategorycznyTyp urządzenia gracza. Może to być urządzenie mobilne, komputer, tablet, konsola lub urządzenie VR.
Język graczaKategorycznyJęzyk gracza.
Historia gry graczaLiczbowyLiczba minut, które gracz spędził w uniwersum w ciągu ostatnich 28 dni (logarytm dziesiętny).
Zajętość serweraLiczbowyLiczba graczy w serwerze.
Grupa czatu tekstowego graczaKategorycznyGrupa czatu tekstowego gracza, w której mogą wspólnie czatować.

Istniejące sygnały

Poniżej znajdują się sygnały zdefiniowane przez Roblox, pochodzące na podstawie atrybutów Robloxa:

SygnałOpis
WiekRóżnica między średnim wiekiem graczy na serwerze a wiekiem gracza dołączającego, z maksymalną istotną różnicą wynoszącą 25.
Typ urządzeniaStosunek graczy na serwerze z tym samym typem urządzenia, co gracz dołączający.
PrzyjacieleLiczba osób na serwerze, które są przyjaciółmi gracza dołączającego lub które dzielą adres IP z graczem dołączającym. 1, jeśli istnieje preferowany gracz, 0 w przeciwnym razie.
OpóźnienieSzacowane opóźnienie gracza dla serwera, z maksymalną istotną wartością wynoszącą 250.
JęzykStosunek graczy na serwerze z tym samym językiem, co gracz dołączający.
ZajętośćStosunek graczy na serwerze do pojemności serwera.
Historia gryRóżnica między średnią historią gry na serwerze a historią gry gracza dołączającego, z maksymalną istotną różnicą wynoszącą 4.6.
Czat głosowyStosunek graczy na serwerze z włączonym czatem głosowym.
Czat tekstowyStosunek graczy na serwerze, którzy mogą wspólnie czatować tekstowo z graczem dołączającym.

Wiek

Liczbowy sygnał, który porównuje średni wiek graczy na serwerze z wiekiem gracza dołączającego. Ten sygnał ma maksymalną istotną różnicę wynoszącą 25. Wynik sygnału jest odwrotnie proporcjonalny do różnicy wieku, co oznacza, że niższe różnice wieku mają wyższe wyniki.

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

gdzie

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

Typ urządzenia

Kategoryczny sygnał, który mierzy stosunek graczy na serwerze z tym samym typem urządzenia, co gracz dołączający. Typy urządzeń obejmują: komputer, urządzenie mobilne, tablet, konsola i urządzenie VR.

deviceTypeSignalScore=# graczy z tym samym urządzeniem co gracz dołączający/# graczy na serwerze\text{deviceTypeSignalScore} = \text{\# graczy z tym samym urządzeniem co gracz dołączający} / \text{\# graczy na serwerze}

Przyjaciele

Preferowany gracz to gracz, który jest przyjacielem gracza dołączającego lub dzieli ten sam adres IP z graczem dołączającym. Sygnał Przyjaciele to kategoryczny sygnał, którego wynik wynosi 1, gdy na serwerze jest preferowany gracz, oraz 0, gdy nie ma preferowanych graczy na serwerze.

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

Sygnał Przyjaciele można również traktować jako sygnał liczbowy z maksymalną istotną wartością wynoszącą 1.

friendsSignalScore=min(# preferowanych graczy na serwerze,1)/1\text{friendsSignalScore} = \min(\text{\# preferowanych graczy na serwerze}, 1) / 1

Język

Kategoryczny sygnał, który mierzy stosunek graczy na serwerze, którzy dzielą to samo ustawienie języka, co gracz dołączający.

languageSignalScore=# graczy z tym samym ustawieniem języka co gracz dołączający/# graczy na serwerze\text{languageSignalScore} = \text{\# graczy z tym samym ustawieniem języka co gracz dołączający} / \text{\# graczy na serwerze}

Opóźnienie

Liczbowy sygnał, który mierzy szacowany czas ping w milisekundach gracza dołączającego, gdyby grał na serwerze. Ten sygnał ma maksymalną istotną wartość wynoszącą 250 milisekund. Wynik sygnału jest odwrotnie proporcjonalny do pingu, co oznacza, że niższe wartości pingu mają wyższe wyniki.

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

Zajętość

Liczbowy sygnał, który mierzy stosunek graczy na serwerze do pojemności serwera.

occupancySignalScore=# graczy na serwerze/serverCapacity\text{occupancySignalScore} = \text{\# graczy na serwerze} / \text{serverCapacity}

Historia gry

Wartość atrybutu Historia gry to logarytm dziesiętny liczby minut, które gracz spędził w uniwersum w ciągu ostatnich 28 dni. Ten liczbowy sygnał porównuje średnią wartość logarytmu dziesiętnego Historii gry graczy na serwerze z wartością Historii gry gracza dołączającego. Ten sygnał ma maksymalną istotną różnicę wynoszącą 4.6. Wynik sygnału jest odwrotnie proporcjonalny do różnicy w historii gry, co oznacza, że niższe różnice w historii gry mają wyższe wyniki.

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

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

Czat głosowy

Gracz może mieć włączony lub wyłączony czat głosowy. Sygnał Czat głosowy to kategoryczny sygnał, który mierzy stosunek graczy z tym samym ustawieniem czatu głosowego, co gracz dołączający, do liczby graczy na serwerze.

Jeśli miejsce ma wyłączony czat głosowy, waga sygnału Czat głosowy wynosi 0.

voiceChatSignalScore=# graczy z tym samym ustawieniem czatu głosowego co gracz dołączający/# graczy na serwerze\text{voiceChatSignalScore} = \text{\# graczy z tym samym ustawieniem czatu głosowego co gracz dołączający} / \text{\# graczy na serwerze}

Czat tekstowy

Kategoryczny sygnał, który mierzy stosunek graczy na serwerze, którzy mogą wspólnie czatować tekstowo z graczem dołączającym.

textChatSignalScore=# graczy, ktoˊrzy mogą czatowacˊ tekstowo z graczem dołączającym wspoˊlnie/# graczy na serwerze\text{textChatSignalScore} = \text{\# graczy, którzy mogą czatować tekstowo z graczem dołączającym wspólnie} / \text{\# graczy na serwerze}

Niestandardowe atrybuty

Niestandardowe atrybuty dają niestandardowym sygnałom dostęp do danych graczy i serwera. Aby uzyskać więcej informacji na temat tworzenia własnych niestandardowych atrybutów, zobacz Utwórz niestandardowy atrybut. Aby uzyskać więcej informacji na temat istniejących atrybutów Roblox, zobacz Istniejące atrybuty.

AtrybutCechy
GraczTrwały

Niestandardowe dane gracza, które są zachowywane w magazynach danych, takie jak poziom lub wynik gracza w grze

Zarządzane przy użyciu API DataStore
SerwerNie trwały i działa tylko tak długo, jak serwer jest aktywny

Dane specyficzne dla serwera, takie jak poziom serwera lub tryb gry

Zarządzane przy użyciu API MatchmakingService
Przykład atrybutu gracza

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
Przykład atrybutu serwera

local MatchmakingService = game:GetService("MatchmakingService")
local RunService = game:GetService("RunService")
if RunService:IsStudio() then
-- Ustawia początkowe atrybuty i schemat do testowania
MatchmakingService:InitializeServerAttributesForStudio({
Level = "Zaawansowany",
Elo = 123.456,
TrainingMode = true
})
end
-- Pobiera atrybut Level
local currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")
if errorMessage then
warn(errorMessage)
else
print("Aktualny poziom: " .. currentLevel)
end
-- Aktualizuje wartość atrybutu Level na Zaawansowany
local success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Zaawansowany")
if not success then
warn("Nie udało się zaktualizować atrybutu serwera [Level] na [Zaawansowany] z powodu błędu: " .. errorMessage)
else
print("Pomocnie ustawiono [Level] na [Zaawansowany]")
end

Niestandardowe sygnały

Niestandardowe sygnały są tworzone i definiowane przez ciebie i mogą być liczbowe lub kategoryczne:

  • Sygnały liczbowe to liczby. Porównują różnicę między atrybutem gracza dołączającego a skumulowaną wartością serwera, gdzie większe różnice obniżają lub zwiększają wynik. Na przykład im bliżej poziom umiejętności gracza jest średniego poziomu umiejętności serwera, tym wyższy wynik sygnału liczbowego. Ten wynik jest następnie mnożony przez wagę sygnału.
  • Sygnały kategoryczne to napisy lub boolow. Opierają się na tym, jak powszechny jest atrybut gracza dołączającego w porównaniu do innych graczy na serwerze. Na przykład, jeśli wysoki procent graczy w serwerze ma to samo preferowane ustawienie językowe, co gracz dołączający, wynik wzrasta. Ten wynik jest następnie również mnożony przez wagę sygnału.

Aby uzyskać więcej informacji na temat tworzenia własnych niestandardowych sygnałów, zobacz Utwórz niestandardowy sygnał. Aby uzyskać więcej informacji na temat istniejących sygnałów Roblox, zobacz Istniejące sygnały.

Liczby gracza

Gracz dołączający

Minimalizuje różnicę między średnim atrybutem gracza na serwerze a atrybutem gracza dołączającego. Różnice przekraczające 1000 zwracają wynik sygnału równy 0.

Formuła gracza dołączającego dla sygnału numerycznego

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
Przykład gracza dołączającego dla sygnału numerycznego

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
Wartość stała

Minimalizuje różnicę między średnim atrybutem gracza na serwerze a stałą wartością 500. Różnice przekraczające 1000 zwracają wynik sygnału równy 0.

Formuła wartości stałej dla sygnału numerycznego

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
Przykład wartości stałej dla sygnału numerycznego

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)

Kategoria gracza

Klastrowanie

Maksymalizuje współczynnik graczy w serwerze, którzy mają ten sam atrybut, co atrybut gracza dołączającego.

Formuła klastrowania dla sygnału kategorycznego

local score = num_players_same_{attribute_name} / occupancy
return score
Przykład klastrowania dla sygnału kategorycznego

local num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return score
Zróżnicowanie

Maksymalizuje współczynnik graczy w serwerze, którzy mają inny atrybut niż atrybut gracza dołączającego.

Formuła różnicowania dla sygnału kategorycznego

local score = num_players_same_{attribute_name} / occupancy
return 1 - score
Przykład różnicowania dla sygnału kategorycznego

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

Liczby serwera

Gracz dołączający

Minimalizuje różnicę między atrybutem serwera a atrybutem gracza dołączającego. Różnice przekraczające 1000 zwracają wynik sygnału równy 0.

Formuła dla gracza dołączającego dla sygnału numerycznego serwera

local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
Przykład gracza dołączającego dla sygnału numerycznego serwera

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)
Wartość stała

Minimalizuje różnicę między wartością atrybutu serwera a stałą wartością. Różnice przekraczające tę stałą wartość zwracają wynik sygnału równy 0.

Formuła wartości stałej dla sygnału numerycznego serwera

local diff = math.abs(server_{attribute_name} - constant_value)
local score = math.min(diff / max_relevant_difference, 1)
return score
Przykład wartości stałej dla sygnału numerycznego serwera

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)

Kategoria serwera

Porównanie do gracza dołączającego

Wynik wynosi 1, gdy wartość atrybutu serwera (na przykład tryb gry) jest równa wartości atrybutu gracza (na przykład preferowany tryb gry). W przeciwnym razie wynik sygnału wynosi 0.

Formuła dla gracza dołączającego dla sygnału kategorycznego serwera

if server_{attribute_name} == joining_player_{attribute_name} then
return 1
else
return 0
end
Przykład dla gracza dołączającego dla sygnału kategorycznego serwera

local server_GameMode = "Survival"
local joining_player_GameMode = "Survival"
if server_GameMode == joining_player_GameMode then
return 1
else
return 0
end
Porównanie do wartości stałej

Wynik wynosi 1, gdy wartość atrybutu serwera jest równa stałej wartości prawdziwej. W przeciwnym razie wynik sygnału wynosi 0.

Formuła wartości stałej dla sygnału kategorycznego serwera

if server_{attribute_name} == constant_value then
return 1
else
return 0
end
Przykład wartości stałej dla sygnału kategorycznego serwera

local server_GameNotStarted = true
if server_GameNotStarted == true then
return 1
else
return 0
end
©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.