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 de Roblox utilise des signaux basés sur des attributs existants tels que la localisation 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 dans 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.
Le chat vocal est activéCatégoriqueIndique si un joueur a le chat vocal activé.
Âge du joueurNumériqueL'âge du joueur.
Type de dispositif du joueurCatégoriqueLe type de dispositif du joueur. Peut être un appareil mobile, un ordinateur, une tablette, une console ou un dispositif 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é dans un univers au cours des 28 derniers jours.
Occupation du serveurNumériqueLe nombre de joueurs dans un serveur.
Groupe de chat textuel du joueurCatégoriqueLe groupe de chat textuel du joueur où ils peuvent discuter 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 dans le serveur et l'âge du joueur qui rejoint, avec une différence maximale pertinente de 25.
Type de dispositifLe ratio de joueurs dans le serveur ayant le même type de dispositif que le joueur qui rejoint.
AmisLe nombre de personnes dans 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é, 0 sinon.
LatenceLe delta ping du joueur qui rejoint pour un serveur, qui est le ping estimé au-dessus du ping le plus bas que le joueur pourrait atteindre sur son meilleur datacenter accessible, avec une valeur pertinente maximale de 100.
LangueLe ratio de joueurs dans le serveur ayant la même langue que le joueur qui rejoint.
OccupationLe ratio de joueurs dans le serveur par rapport à la capacité du serveur.
Historique de jeuLa différence entre l'historique de jeu moyen dans 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 dans le serveur ayant le chat vocal activé.
Chat textuelLe ratio de joueurs dans 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 de dispositif

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

deviceTypeSignalScore=# joueurs avec le meˆme dispositif que le joueur qui rejoint/# joueurs sur le serveur\text{deviceTypeSignalScore} = \text{\# joueurs avec le même dispositif 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é dans le serveur et un score de 0 lorsqu'il n'y a pas de joueurs préférés dans 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 dans le serveur,1)/1\text{friendsSignalScore} = \min(\text{\# joueurs préférés dans 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 delta ping du joueur qui rejoint en millisecondes s'il devait jouer sur un serveur, qui est le ping estimé au-dessus du ping le plus bas que le joueur pourrait atteindre sur son meilleur datacenter accessible. Ce signal a une valeur pertinente maximale de 100 millisecondes. Le score du signal est inversement lié au delta ping, ce qui signifie que des valeurs de delta ping plus faibles ont des scores plus élevés.

latencySignalScore=1min(100,deltaPingMs)/100\text{latencySignalScore} = 1 - \min(100, \text{deltaPingMs}) / 100

Occupation

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

occupancySignalScore=# joueurs dans le serveur/serverCapacity\text{occupancySignalScore} = \text{\# joueurs dans 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é 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 dans 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 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 dans le serveur.

Si un lieu a le chat vocal désactivé, le poids du signal 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 ensemble.

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 accès aux signaux personnalisés aux données des joueurs et des serveurs. Pour plus d'informations sur la création de vos propres attributs personnalisés, consultez Créer un attribut personnalisé. Pour plus d'informations sur les attributs Roblox existants, consultez Attributs existants.

AttributCaractéristiques
JoueurPersistant

Données personnalisées du joueur 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 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 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 Level
local currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")
if errorMessage then
warn(errorMessage)
else
print("Niveau actuel : " .. currentLevel)
end
-- Met à jour la valeur de l'attribut Level à Avancé
local success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Avancé")
if not success then
warn("Échec de la mise à jour de l'attribut serveur [Level] à [Avancé] en raison de l'erreur : " .. errorMessage)
else
print("Attribut [Level] défini avec succès à [Avancé]")
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, avec 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 dans le serveur. Par exemple, si un pourcentage élevé des joueurs dans un serveur ont la même langue préférée que le joueur qui rejoint, le score augmente. Ce score est ensuite également multiplié par le poids du signal.

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

Numérique joueur

Joueur qui rejoint

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

Formule du joueur qui rejoint pour le 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 du joueur qui rejoint pour le 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 du serveur et une valeur constante de 500. Les différences au-delà de 1000 renvoient un score de signal de 0.

Formule de valeur constante pour le 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 le 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 joueur

Regroupement

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

Formule de regroupement pour le signal catégorique du joueur
local score = num_players_same_{attribute_name} / occupancy
return score
Exemple de regroupement pour le 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 l'attribut du joueur qui rejoint.

Formule de diversification pour le signal catégorique du joueur
local score = num_players_same_{attribute_name} / occupancy
return 1 - score
Exemple de diversification pour le 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 serveur

Joueur qui rejoint

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

Formule du joueur qui rejoint pour le 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 du joueur qui rejoint pour le 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 de l'attribut du serveur et une valeur constante. Les différences au-delà de cette valeur constante renvoient un score de signal de 0.

Formule de valeur constante pour le 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 le 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 serveur

Comparer au joueur qui rejoint

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

Formule du joueur qui rejoint pour le signal catégorique du serveur
if server_{attribute_name} == joining_player_{attribute_name} then
return 1
else
return 0
end
Exemple du joueur qui rejoint pour le 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 1 lorsque la valeur de l'attribut du serveur est égale à une valeur constante de vrai. Sinon, le score du signal est 0.

Formule de valeur constante pour le signal catégorique du serveur
if server_{attribute_name} == constant_value then
return 1
else
return 0
end
Exemple de valeur constante pour le 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.