Attribute und Signale

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Bestehende Attribute

Die Standard-Roblox-Matchmaking-Konfiguration verwendet Signale basierend auf vorhandenen Attributen wie Spielerstandort, Gruppeund Verzögerung.

Um Daten für das Matchmaking zu verwenden, die Roblox nicht automatisch in seine Standardkonfiguration einbezieht, musst du benutzerdefinierte Attribute und benutzerdefinierte Signale erstellen.

Zuordnung Typ Beschreibung
Geschätzte Spielerverzögerung ZahlendDie geschätzte Verzögerung eines Spielers auf einem Server.
Hat Freunde KategorischOb ein Server einen Freund oder einen anderen Spieler der gleichen IP-Adresse wie der beitretende Spieler:inhat.
Ist Voice-Chat aktiviert KategorischOb ein Spieler Voice-Chat aktiviert hat.
Spieleralter ZahlendDas Alter des Spielers.
Spielgerätetyp KategorischDer eingebendes Spielers. Es kann ein mobiles Gerät, ein Computer, ein Tablet, eine Konsole oder ein VR-Gerät sein.
Spieler-Sprache KategorischDie Sprache des Spielers.
Spieler-Spiel历史 ZahlendDie Anzahl der Minuten, die ein Spieler in einem Universum in den letzten 28 Tagen gespielt hat.
Serverbesetzung ZahlendDie Anzahl der Spieler auf einem Server.

Bestehende Signale

Die folgenden sind von Roblox definierte Signale, die basierend auf Roblox-Attributen abgeleitet wurden:

Signale Beschreibung
Alter Der Unterschied zwischen dem durchschnittlichen Alter der Spieler auf dem Server und dem Alter des beitretenden Spielers, mit einem maximal relevanten Unterschied von 25.
Gerätetyp Die Relation der Spieler auf dem Server mit demselben Gerätetyp wie der beitretende Spieler:in.
Freunde Die Anzahl der Personen auf dem Server, die mit dem beitretenden Spieler befreundet sind oder eine IP-Adresse mit dem beitretenden Spieler:inteilen.1, wenn es einen bevorzugten Spieler:ingibt, 0 sonst.
Verzögerung Die geschätzte Spielerverzögerung für einen Server mit einem maximal relevanten Wert von 250.
Sprache Das Verhältnis der Spieler auf dem Server mit der gleichen Sprache wie der beitretende Spieler:in
Belegung Die Relation der Spieler auf dem Server im Vergleich zur Kapazität des Servers.
Spielhistorie Der Unterschied zwischen der durchschnittlichen Spielhistorie auf dem Server und der Spielhistorie des beitretenden Spielers, mit einem maximal relevanten Unterschied von 4.6.
Stimmchat Das Verhältnis der Spieler auf dem Server mit Voice-Chat aktiviert.

Alter

Ein numerisches Signal, das die durchschnittlichen Alter der Spieler auf einem Server mit dem Alter des beitretenden Spieler:invergleicht.Dieses Signal hat einen maximal relevanten Unterschied von 25.Die Signalpunktzahl ist umgekehrt mit dem Altersunterschied verbunden, was bedeutet, dass niedrigere Altersunterschiede höhere Punktzahlen haben.


ageDifferenceSignalScore = 1 - min(25, ageDifference) / 25, where
ageDifference = abs(avgServerAge - joiningPlayerAge)

Gerätetyp

Ein kategorisches Signal, das die Relation der Spieler auf dem Server mit demselben Gerätetyp wie der beitretende Spieler:inmisst.Gerätetypen umfassen: Computer, mobiles Gerät, Tablet, Konsole und VR-Gerät.


deviceTypeSignalScore = (# players with same device as joining player) / (# players on the server)

Freunde

Ein bevorzugter Spieler ist ein Spieler, der entweder Freund des beitretenden Spielers ist oder die gleiche IP-Adresse wie der beitretende Spieler:inteilt.Das Freundes-Signal ist ein kategorisches Signal mit einer Punktzahl von 1, wenn es einen bevorzugten Spieler auf dem Server gibt, und eine Punktzahl von 0, wenn es keine bevorzugten Spieler auf dem Server gibt.


friendsSignalScore = hasFriends ? 1 : 0

Das Freundes-Signal kann auch als numerisches Signal mit einem maximal relevanten Wert von 1 betrachtet werden.


friendsSignalScore = min(# preferred players in server, 1) / 1

Sprache

Ein kategorisches Signal, das die Relation der Spieler auf dem Server misst, die die gleiche Spracheinstellung wie der beitretende Spieler:inhaben.


languageSignalScore = (# players with same language setting as joining player) / (# players on the server)

Latenz

Ein numerisches Signal, das die geschätzte Pingzeit in Millisekunden des anschließenden Spielers misst, wenn er auf einem Server spielen würde.Dieses Signal hat einen maximal relevanten Wert von 250 Millisekunden.Die Signalpunktzahl ist umgekehrt mit dem Ping verbunden, was bedeutet, dass niedrigere Ping-Werte höhere Werte haben.


latencySignalScore = 1 - min(250, estimatedPingMs) / 250

Belegung

Ein numerisches Signal, das die Relation der Spieler auf dem Server zur Kapazität des Servers misst.


occupancySignalScore = (# players in server) / serverCapacity

Spielhistorie

Der Wert des Attributs "Spiel历史" ist die Anzahl der Minuten, die ein Spieler in einem Universum in den letzten 28 Tagen gespielt hat.Dieses numerische Signal vergleicht den durchschnittlichen log-10-Spielhistorienwert der Spieler auf dem Server mit dem Spielhistorien-Wert des beitretenden Spieler:in.Dieses Signal hat einen maximal relevanten Unterschied von 4,6.Die Signalpunktzahl ist umgekehrt mit dem Unterschied der Spielhistorie verbunden, d. h. niedrigere Unterschiede der Spielhistorie haben höhere Punktzahlen.


playHistorySignalScore = 1 - min(4.6, playHistoryDifference / 4.6), where
playHistoryDifference = abs(avgServerPlayHistory - joiningPlayerPlayHistory)

Chat

Ein Spieler kann Voice-Chat aktiviert oder deaktiviert haben.Das Voice-Chat-Signal ist ein kategorisches Signal, das die Relation der Spieler mit derselben Voice-Chat-Einstellung wie der beitretende Spieler zur Anzahl der Spieler auf dem Server misst.

Wenn ein Ort Voice-Chat deaktiviert hat, beträgt das Gewicht des Voice-Chat-Signals 0.


voiceChatSignalScore = (# players with same voice chat setting as joining player) / (# players on the server)

Benutzerdefinierte Attribute

Benutzerdefinierte Attribute gewähren Zugriff auf Spieler- und Serversdaten durch benutzerdefinierte Signale.Für weitere Informationen zur Erstellung eigener benutzerdefinierter Attribute siehe Erstellen eines benutzerdefinierten Attributes.Für weitere Informationen über vorhandene Roblox-Attribute siehe Bestehende Attribute.

Zuordnung Eigenschaften
Spieler Beständige benutzerdefinierte Spielerdaten, die in Datenlagern bleiben, wie das Level oder die Punktzahl eines Spieler:ininnerhalb der Erfahrung Über die DataStore APIs verwaltet
Server Nicht persistent und nur so lange aktiv, wie der Server aktiv ist Server-spezifische Daten wie das Serverlevel oder der Spielmodus Managed mit der MatchmakingService
Spielerattribut-Beispiel

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
Beispiel für Serverattribut

local MatchmakingService = game::GetService("MatchmakingService")
local RunService = game:GetService("RunService")
if RunService:IsStudio() then
-- Stellt initiale Attribute und Schema für Tests bereit
MatchmakingService:InitializeServerAttributesForStudio(
{
Level = "Advanced",
Elo = 123.456,
TrainingMode = true
})
end
-- Ruft den Attribut-Level ab
local currentLevel, error = MatchmakingService:GetServerAttribute("Level")
if error then
print(error)
else
print("Current level: " .. currentLevel)
end
-- Aktualisiert den Wert des Attributs Levels auf Fortgeschritten
local success, error = MatchmakingService:SetServerAttribute("Level", "Advanced")
if not success then
print("Failed to update server attribute [Level] to [Advanced] due to error: " .. error)
else
print("Successfully set [Level] to [Advanced]")
end

Benutzerdefinierte Signale

Benutzerdefinierte Signale werden von dir erstellt und definiert und können numerisch oder kategorisch sein:

  • Zahlensignale sind Zahlen.Sie vergleichen den Unterschied zwischen dem Attribut des anschließenden Spieler:inund dem aggregierten Wert des Servers, wobei größere Unterschiede die Punktzahl senken oder erhöhen.Zum Beispiel ist der Abstand des Fähigkeitslevels eines Spielers zum durchschnittlichen Fähigkeitslevel des Servers umso größer, je höher die Punktzahl des numerischen Signals ist.Diese Punktzahl wird dann mit dem Gewicht des Signals multipliziert.
  • Kategorische Signale sind Zeichenketten oder Booleen.Sie basieren darauf, wie häufig das Attribut des anschließenden Spieler:inim Vergleich zu den anderen Spielern auf dem Server ist.Wenn beispielsweise ein hoher Prozentsatz der Spieler in einem Server die gleiche bevorzugte Sprache wie der beitretende Spieler:inhat, steigt die Punktzahl.Diese Punktzahl wird dann auch mit dem Gewicht des Signals multipliziert.

Für weitere Informationen zur Erstellung eigener benutzerdefinierter Signale siehe Erstelle ein benutzerdefiniertes Signal.Für weitere Informationen über vorhandene Roblox-Signale siehe Bestehende Signale.

Spieler numerisch

Spieler beitreten

Verringert den Unterschied zwischen dem durchschnittlichen Spielerattribut des Servers und dem Attribut des beitretenden Spieler:in.Unterschiede über 1000 geben eine Signalpunktzahl von 0 zurück.

Spielerformel für numerisches Signal des Spielers beitreten

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
Beispiel des Spielers für numerisches Signal des Spielers beitreten

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
Konstante Wert

Verringert den Unterschied zwischen dem durchschnittlichen Spielerattribut des Servers und einem konstanten Wert von 500.Unterschiede über 1000 geben eine Signalpunktzahl von 0 zurück.

Konstante Wertformel für numerisches Signal des Spielers

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
Konstante Wertbeispiel für numerisches Signal des Spielers

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)

Spieler kategorisch

Klusterung

Maximiert das Verhältnis der Spieler auf dem Server, die dasselbe Attribut wie das Attribut des beitretenden Spieler:inhaben.

Klassierungsformel für Spielerkategorisches Signal

local score = num_players_same_{attribute_name} / occupancy
return score
Klassifizierungsexempel für Spielersignal

local num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return score
Diversifizierung

Maximiert das Verhältnis der Spieler auf dem Server, die ein anderes Attribut als das des anschließenden Spieler:inhaben.

Diversifizierungsformel für kategorielle Signal des Spielers

local score = num_players_same_{attribute_name} / occupancy
return 1 - score
Beispiel zur Diversifizierung für kategorielle Signal des Spielers

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

Servernumerisch

Spieler beitreten

Minimiert den Unterschied zwischen dem Attribut des Servers und dem Attribut des anschließenden Spieler:in. Unterschiede über 1000 geben eine Signalpunktzahl von 0 zurück.

Spielermenge an der Formel für servernumerisches Signal anschließen

local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
Beispiel des Spielers für numerisches Signal des Spielers beitreten

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)
Konstante Wert

Minimiert den Unterschied zwischen dem Attributwert des Servers und einem konstanten Wert. Unterschiede über diesem konstanten Wert geben eine Signalpunktzahl von 0 zurück.

Konstante Wertformel für servernumerisches Signal

local diff = math.abs(server_{attribute_name} - constant_value)
local score = math.min(diff / max_relevant_difference, 1)
return score
Konstante Wertbeispiel für servernumerisches Signal

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)

Serverkategorisch

Vergleichen mit dem Beitritt von Spielern

Die Punktzahl ist 1, wenn der Attributswert des Servers (z. B. Spielmodus) dem Attributswert des Spieler:in(z. B. bevorzugter Spielmodus) gleich ist.Ansonsten ist die Signalpunktzahl 0.

Spielerformel für Serverkategorisches Signal beitreten

if server_{attribute_name} = joining_player_{attribute_name} then
return 1
else
return 0
end
Beitritt zum Spielerbeispiel für serverkategorische Signal

local server_GameMode = "Survival"
local joining_player_GameMode = "Survival"
if server_GameMode = joining_player_GameMode then
return 1
else
return 0
end
Vergleichen mit konstanter Wert

Die Punktzahl ist 1, wenn der Attributswert des Servers einem konstanten Wert von true gleich ist. Ansonsten ist die Signalpunktzahl 0.

Konstante Wertformel für serverkategorisches Signal

if server_{attribute_name} = constant_value then
return 1
else
return 0
end
Konstante Wertbeispiel für Serverkategorisches Signal

local server_GameNotStarted = true
if server_GameNotStarted = true then
return 1
else
return 0
end