Attributs et signaux

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Attributs existants

La configuration par défaut du matchmaking Roblox utilise des signaux basés sur des attributs existants tels que l'emplacement du joueur, le groupe d'âge et la latence.

Pour utiliser des données pour le matchmaking que Roblox n'inclut pas automatiquement dans sa configuration par défaut, vous devez créer des attributs personnalisés et des signaux personnalisés.

AttributTypeDescription
Latence estimée du joueurNumériqueLa latence estimée d'un joueur sur un serveur.
A des amisCatégoriqueIndique si un serveur a un ami ou un autre joueur ayant la même adresse IP que le joueur qui rejoint.
Chat vocal activéCatégoriqueIndique si un joueur a le chat vocal activé.
Âge du joueurNumériqueL'âge du joueur.
Type d'appareil du joueurCatégoriqueLe type d'appareil du joueur. Peut être un appareil mobile, un ordinateur, une tablette, une console ou un appareil VR.
Langue du joueurCatégoriqueLa langue du joueur.
Historique de jeu du joueurNumériqueLe logarithme en base 10 du nombre de minutes qu'un joueur a jouées dans un univers au cours des 28 derniers jours.
Occupation du serveurNumériqueLe nombre de joueurs sur un serveur.
Groupe de chat textuel du joueurCatégoriqueLe groupe de chat textuel du joueur où ils peuvent discuter par texte ensemble.

Signaux existants

Les signaux suivants sont des signaux définis par Roblox dérivés des attributs Roblox :

SignalDescription
ÂgeLa différence entre l'âge moyen des joueurs sur le serveur et l'âge du joueur qui rejoint, avec une différence maximale pertinente de 25.
Type d'appareilLe ratio de joueurs sur le serveur ayant le même type d'appareil que le joueur qui rejoint.
AmisLe nombre de personnes sur le serveur qui sont amis avec le joueur qui rejoint ou qui partagent une adresse IP avec le joueur qui rejoint. 1 s'il y a un joueur préféré, sinon 0.
LatenceLa latence estimée du joueur pour un serveur, avec une valeur maximale pertinente de 250.
LangueLe ratio de joueurs sur le serveur ayant la même langue que le joueur qui rejoint.
OccupationLe ratio de joueurs sur le serveur par rapport à la capacité du serveur.
Historique de jeuLa différence entre l'historique moyen de jeu sur le serveur et l'historique de jeu du joueur qui rejoint, avec une différence maximale pertinente de 4.6.
Chat vocalLe ratio de joueurs sur le serveur ayant le chat vocal activé.
Chat textuelLe ratio de joueurs sur le serveur qui peuvent discuter par texte avec le joueur qui rejoint.

Âge

Un signal numérique qui compare les âges moyens des joueurs sur un serveur à l'âge du joueur qui rejoint. Ce signal a une différence maximale pertinente de 25. Le score du signal est inversement lié à la différence d'âge, ce qui signifie que des différences d'âge plus faibles ont des scores plus élevés.

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

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

Type d'appareil

Un signal catégorique qui mesure le ratio de joueurs sur le serveur ayant le même type d'appareil que le joueur qui rejoint. Les types d'appareils incluent : Ordinateur, appareil mobile, tablette, console et appareil VR.

deviceTypeSignalScore=# joueurs avec le meˆme appareil que le joueur qui rejoint/# joueurs sur le serveur\text{deviceTypeSignalScore} = \text{\# joueurs avec le même appareil que le joueur qui rejoint} / \text{\# joueurs sur le serveur}

Amis

Un joueur préféré est un joueur qui est soit ami avec le joueur qui rejoint, soit partage la même adresse IP que le joueur qui rejoint. Le signal Amis est un signal catégorique avec un score de 1 lorsqu'il y a un joueur préféré sur le serveur et un score de 0 lorsqu'il n'y a pas de joueurs préférés sur le serveur.

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

Le signal Amis peut également être considéré comme un signal numérique avec une valeur pertinente maximale de 1.

friendsSignalScore=min(# joueurs preˊfeˊreˊs sur le serveur,1)/1\text{friendsSignalScore} = \min(\text{\# joueurs préférés sur le serveur}, 1) / 1

Langue

Un signal catégorique qui mesure le ratio de joueurs sur le serveur qui partagent le même paramètre de langue que le joueur qui rejoint.

languageSignalScore=# joueurs avec le meˆme parameˋtre de langue que le joueur qui rejoint/# joueurs sur le serveur\text{languageSignalScore} = \text{\# joueurs avec le même paramètre de langue que le joueur qui rejoint} / \text{\# joueurs sur le serveur}

Latence

Un signal numérique qui mesure le temps de ping estimé en millisecondes du joueur qui rejoint s'il jouait sur un serveur. Ce signal a une valeur maximale pertinente de 250 millisecondes. Le score du signal est inversement lié au ping, ce qui signifie que des valeurs de ping plus faibles ont des scores plus élevés.

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

Occupation

Un signal numérique qui mesure le ratio de joueurs sur le serveur par rapport à la capacité du serveur.

occupancySignalScore=# joueurs sur le serveur/serverCapacity\text{occupancySignalScore} = \text{\# joueurs sur le serveur} / \text{serverCapacity}

Historique de jeu

La valeur de l'attribut Historique de jeu est le logarithme en base 10 du nombre de minutes qu'un joueur a jouées dans un univers au cours des 28 derniers jours. Ce signal numérique compare la valeur moyenne de l'historique de jeu en logarithme en base 10 des joueurs sur le serveur à la valeur de l'historique de jeu du joueur qui rejoint. Ce signal a une différence maximale pertinente de 4.6. Le score du signal est inversement lié à la différence d'historique de jeu, ce qui signifie que des différences d'historique de jeu plus faibles ont des scores plus élevés.

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

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

Chat vocal

Un joueur peut avoir le chat vocal activé ou désactivé. Le signal de Chat vocal est un signal catégorique qui mesure le ratio de joueurs ayant le même paramètre de chat vocal que le joueur qui rejoint par rapport au nombre de joueurs sur le serveur.

Si un endroit a le chat vocal désactivé, le poids du signal de Chat vocal est 0.

voiceChatSignalScore=# joueurs avec le meˆme parameˋtre de chat vocal que le joueur qui rejoint/# joueurs sur le serveur\text{voiceChatSignalScore} = \text{\# joueurs avec le même paramètre de chat vocal que le joueur qui rejoint} / \text{\# joueurs sur le serveur}

Chat textuel

Un signal catégorique qui mesure le ratio de joueurs sur le serveur qui peuvent discuter par texte avec le joueur qui rejoint.

textChatSignalScore=# joueurs peuvent discuter avec le joueur qui rejoint en commun /# joueurs sur le serveur\text{textChatSignalScore} = \text{\# joueurs peuvent discuter avec le joueur qui rejoint en commun } / \text{\# joueurs sur le serveur}

Attributs personnalisés

Les attributs personnalisés donnent aux signaux personnalisés accès aux données des joueurs et des serveurs. Pour plus d'informations sur la création de vos propres attributs personnalisés, voir Créer un attribut personnalisé. Pour plus d'informations sur les attributs Roblox existants, voir Attributs existants.

AttributCaractéristiques
JoueurPersistant

Données de joueur personnalisées qui persistent dans les magasins de données, comme le niveau ou le score d'un joueur dans le jeu

Géré à l'aide des API DataStore
ServeurNon persistant et ne dure que tant que le serveur est actif

Données spécifiques au serveur comme le niveau du serveur ou le mode de jeu

Géré à l'aide de l'API MatchmakingService
Exemple d'attribut de joueur

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
Exemple d'attribut de serveur

local MatchmakingService = game:GetService("MatchmakingService")
local RunService = game:GetService("RunService")
if RunService:IsStudio() then
-- Configure les attributs initiaux et le schéma pour les tests
MatchmakingService:InitializeServerAttributesForStudio({
Level = "Avancé",
Elo = 123.456,
TrainingMode = true
})
end
-- Récupère l'attribut Niveau
local currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")
if errorMessage then
warn(errorMessage)
else
print("Niveau actuel : " .. currentLevel)
end
-- Met à jour la valeur de l'attribut Niveau à Avancé
local success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Avancé")
if not success then
warn("Échec de la mise à jour de l'attribut du serveur [Level] à [Avancé] en raison de l'erreur : " .. errorMessage)
else
print("Attribut [Level] défini sur [Avancé] avec succès")
end

Signaux personnalisés

Les signaux personnalisés sont créés et définis par vous et peuvent être numériques ou catégoriques :

  • Les signaux numériques sont des nombres. Ils comparent la différence entre l'attribut du joueur qui rejoint et la valeur agrégée du serveur, des différences plus grandes diminuant ou augmentant le score. Par exemple, plus le niveau de compétence d'un joueur est proche du niveau de compétence moyen du serveur, plus le score du signal numérique est élevé. Ce score est ensuite multiplié par le poids du signal.
  • Les signaux catégoriques sont des chaînes ou des booléens. Ils sont basés sur la fréquence à laquelle l'attribut du joueur qui rejoint est commun par rapport aux autres joueurs sur le serveur. Par exemple, si un pourcentage élevé des joueurs dans un serveur a la même langue préférée que le joueur qui rejoint, le score augmente. Ce score est également multiplié par le poids du signal.

Pour plus d'informations sur la création de vos propres signaux personnalisés, voir Créer un signal personnalisé. Pour plus d'informations sur les signaux Roblox existants, voir Signaux existants.

Numérique du joueur

Joueur qui rejoint

Minimise la différence entre l'attribut moyen du joueur sur le serveur et l'attribut du joueur qui rejoint. Les différences supérieures à 1000 renvoient un score de signal de 0.

Formule de joueur qui rejoint pour signal numérique du joueur

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
Exemple de joueur qui rejoint pour signal numérique du joueur

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
Valeur constante

Minimise la différence entre l'attribut moyen du joueur sur le serveur et une valeur constante de 500. Les différences supérieures à 1000 renvoient un score de signal de 0.

Formule de valeur constante pour signal numérique du joueur

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
Exemple de valeur constante pour signal numérique du joueur

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)

Catégorique du joueur

Clustering

Maximise le ratio de joueurs dans le serveur qui ont le même attribut que l'attribut du joueur qui rejoint.

Formule de clustering pour signal catégorique du joueur

local score = num_players_same_{attribute_name} / occupancy
return score
Exemple de clustering pour signal catégorique du joueur

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

Maximise le ratio de joueurs dans le serveur qui ont un attribut différent de celui du joueur qui rejoint.

Formule de diversification pour signal catégorique du joueur

local score = num_players_same_{attribute_name} / occupancy
return 1 - score
Exemple de diversification pour signal catégorique du joueur

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

Numérique du serveur

Joueur qui rejoint

Minimise la différence entre l'attribut du serveur et l'attribut du joueur qui rejoint. Les différences supérieures à 1000 renvoient un score de signal de 0.

Formule de joueur qui rejoint pour signal numérique du serveur

local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
Exemple de joueur qui rejoint pour signal numérique du serveur

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)
Valeur constante

Minimise la différence entre la valeur d'attribut du serveur et une valeur constante. Les différences supérieures à cette valeur constante renvoient un score de signal de 0.

Formule de valeur constante pour signal numérique du serveur

local diff = math.abs(server_{attribute_name} - constant_value)
local score = math.min(diff / max_relevant_difference, 1)
return score
Exemple de valeur constante pour signal numérique du serveur

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)

Catégorique du serveur

Comparer au joueur qui rejoint

Le score est de 1 lorsque la valeur d'attribut du serveur (par exemple, Mode de jeu) est égale à la valeur d'attribut du joueur (par exemple, Mode de jeu préféré). Sinon, le score de signal est 0.

Formule de joueur qui rejoint pour signal catégorique du serveur

if server_{attribute_name} == joining_player_{attribute_name} then
return 1
else
return 0
end
Exemple de joueur qui rejoint pour signal catégorique du serveur

local server_GameMode = "Survie"
local joining_player_GameMode = "Survie"
if server_GameMode == joining_player_GameMode then
return 1
else
return 0
end
Comparer à une valeur constante

Le score est de 1 lorsque la valeur d'attribut du serveur est égale à une valeur constante de vrai. Sinon, le score de signal est 0.

Formule de valeur constante pour signal catégorique du serveur

if server_{attribute_name} == constant_value then
return 1
else
return 0
end
Exemple de valeur constante pour signal catégorique du serveur

local server_GameNotStarted = true
if server_GameNotStarted == true then
return 1
else
return 0
end
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.