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.
| Attribut | Type | Description |
|---|---|---|
| Latence estimée du joueur | Numérique | La latence estimée d'un joueur sur 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. |
| Chat vocal activé | Catégorique | Indique si un joueur a le chat vocal activé. |
| Âge du joueur | Numérique | L'âge du joueur. |
| Type d'appareil du joueur | Catégorique | Le type d'appareil du joueur. Peut être un appareil mobile, un ordinateur, une tablette, une console ou un appareil 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ées dans un univers au cours des 28 derniers jours. |
| Occupation du serveur | Numérique | Le nombre de joueurs sur un serveur. |
| Groupe de chat textuel du joueur | Catégorique | Le 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 :
| Signal | Description |
|---|---|
| Âge | La 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'appareil | Le ratio de joueurs sur le serveur ayant le même type d'appareil que le joueur qui rejoint. |
| Amis | Le 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. |
| Latence | La latence estimée du joueur pour un serveur, avec une valeur maximale pertinente de 250. |
| Langue | Le ratio de joueurs sur le serveur ayant la même langue que le joueur qui rejoint. |
| Occupation | Le ratio de joueurs sur le serveur par rapport à la capacité du serveur. |
| Historique de jeu | La 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 vocal | Le ratio de joueurs sur le serveur ayant le chat vocal activé. |
| Chat textuel | Le 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.
où
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.
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.
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 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.
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é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.
, où
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.
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.
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.
| Attribut | Caractéristiques |
|---|---|
| Joueur | Persistant 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 |
| 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 |
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 serveurlocal MatchmakingService = game:GetService("MatchmakingService")local RunService = game:GetService("RunService")if RunService:IsStudio() then-- Configure les attributs initiaux et le schéma pour les testsMatchmakingService:InitializeServerAttributesForStudio({Level = "Avancé",Elo = 123.456,TrainingMode = true})end-- Récupère l'attribut Niveaulocal currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")if errorMessage thenwarn(errorMessage)elseprint("Niveau actuel : " .. currentLevel)end-- Met à jour la valeur de l'attribut Niveau à Avancélocal success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Avancé")if not success thenwarn("Échec de la mise à jour de l'attribut du serveur [Level] à [Avancé] en raison de l'erreur : " .. errorMessage)elseprint("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 joueurlocal 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 joueurlocal server_average_Elo = 2000local joining_player_Elo = 1000local max_relevant_difference = 1500local 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 joueurlocal 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 joueurlocal server_sum_PowerLevel = 4500local joining_player_PowerLevel = 9901local max_relevant_difference = 1500local constant_value = 5000local 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 joueurlocal score = num_players_same_{attribute_name} / occupancyreturn score
Exemple de clustering pour signal catégorique du joueurlocal num_players_same_Guild = 15local occupancy = 19local score = num_players_same_Guild / occupancyreturn 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 joueurlocal score = num_players_same_{attribute_name} / occupancyreturn 1 - score
Exemple de diversification pour signal catégorique du joueurlocal num_players_same_RpgClass = 15local occupancy = 19local score = num_players_same_RpgClass / occupancyreturn 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 serveurlocal 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 serveurlocal server_Level = 4500local joining_player_Level = 9000local max_relevant_difference = 1500local 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 serveurlocal 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 serveurlocal server_GameTime = 500local max_relevant_difference = 1000local constant_value = 1000local 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 serveurif server_{attribute_name} == joining_player_{attribute_name} thenreturn 1elsereturn 0end
Exemple de joueur qui rejoint pour signal catégorique du serveurlocal server_GameMode = "Survie"local joining_player_GameMode = "Survie"if server_GameMode == joining_player_GameMode thenreturn 1elsereturn 0end
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 serveurif server_{attribute_name} == constant_value thenreturn 1elsereturn 0end
Exemple de valeur constante pour signal catégorique du serveurlocal server_GameNotStarted = trueif server_GameNotStarted == true thenreturn 1elsereturn 0end