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.
| Attribut | Type | Description |
|---|---|---|
| Latence estimée du joueur | Numérique | La latence estimée d'un joueur dans un serveur. |
| A des amis | Catégorique | Indique 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égorique | Indique si un joueur a le chat vocal activé. |
| Âge du joueur | Numérique | L'âge du joueur. |
| Type de dispositif du joueur | Catégorique | Le type de dispositif du joueur. Peut être un appareil mobile, un ordinateur, une tablette, une console ou un dispositif VR. |
| Langue du joueur | Catégorique | La langue du joueur. |
| Historique de jeu du joueur | Numérique | Le logarithme en base 10 du nombre de minutes qu'un joueur a joué dans un univers au cours des 28 derniers jours. |
| Occupation du serveur | Numérique | Le nombre de joueurs dans un serveur. |
| Groupe de chat textuel du joueur | Catégorique | Le 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 :
| Signal | Description |
|---|---|
| Âge | La 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 dispositif | Le ratio de joueurs dans le serveur ayant le même type de dispositif que le joueur qui rejoint. |
| Amis | Le 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. |
| Latence | Le 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. |
| Langue | Le ratio de joueurs dans le serveur ayant la même langue que le joueur qui rejoint. |
| Occupation | Le ratio de joueurs dans le serveur par rapport à la capacité du serveur. |
| Historique de jeu | La 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 vocal | Le ratio de joueurs dans le serveur ayant le chat vocal activé. |
| Chat textuel | Le 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.
où
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.
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.
Le signal Amis peut également être considéré comme un signal numérique avec une valeur pertinente maximale de 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.
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.
Occupation
Un signal numérique qui mesure le ratio de joueurs sur le serveur par rapport à la capacité du serveur.
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.
, où
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.
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.
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.
| Attribut | Caractéristiques |
|---|---|
| Joueur | Persistant 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 |
| Serveur | Non 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 |
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
endlocal 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é]")
endSignaux 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.
local diff = math.abs(server_{aggregation_function}_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return scorelocal 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 scoreValeur 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.
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 scorelocal 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.
local score = num_players_same_{attribute_name} / occupancy
return scorelocal num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return scoreDiversification
Maximise le ratio de joueurs dans le serveur qui ont un attribut différent de l'attribut du joueur qui rejoint.
local score = num_players_same_{attribute_name} / occupancy
return 1 - scorelocal num_players_same_RpgClass = 15
local occupancy = 19
local score = num_players_same_RpgClass / occupancy
return scoreNumé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.
local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return scorelocal 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.
local diff = math.abs(server_{attribute_name} - constant_value)
local score = math.min(diff / max_relevant_difference, 1)
return scorelocal 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.
if server_{attribute_name} == joining_player_{attribute_name} then
return 1
else
return 0
endlocal server_GameMode = "Survie"
local joining_player_GameMode = "Survie"
if server_GameMode == joining_player_GameMode then
return 1
else
return 0
endComparer à 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.
if server_{attribute_name} == constant_value then
return 1
else
return 0
endlocal server_GameNotStarted = true
if server_GameNotStarted == true then
return 1
else
return 0
end