Atributos y señaleses

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Atributos existentes

La configuración predeterminada de emparejamiento de Roblox utiliza señales basadas en atributos existentes como la ubicación del jugador, el grupo de edad y la latencia.

Para usar los datos para el emparejamiento que Roblox no incluye automáticamente en su configuración predeterminada, debe crear atributos personalizados y señales personalizadas.

Atribución Tipo Descripción
Tiempo de retraso estimado del jugador NumericalLa latencia estimada de un jugador en un servidor.
Tiene amigos CategorizalSi un servidor tiene un amigo o otro jugador con la misma dirección IP que el jugador que se une.
¿Está habilitado el chat de voz CategorizalSi un jugador tiene el chat de voz habilitado.
Edad del jugador NumericalLa edad del jugador.
Tipo de dispositivo del jugador CategorizalEl introducirde dispositivo del jugador. Puede ser un dispositivo móvil, un ordenador, una tableta, una consola o un dispositivo VR.
Idioma del jugador CategorizalEl idioma del jugador.
Historial de juego del jugador NumericalEl número de minutos log-10 que un jugador ha jugado en un universo en los últimos 28 días.
Ocupación del servidor NumericalEl número de jugadores en un servidor.

Señales existentes

Los siguientes son señales definidas por Roblox derivadas basadas en atributos de Roblox:

Señal Descripción
Edad La diferencia entre la edad media de los jugadores en el servidor y la edad del jugador que se une, con una diferencia relevante máxima de 25.
Tipo de dispositivo La proporción de jugadores en el servidor con el mismo tipo de dispositivo que el jugador que se une.
Amigos El número de personas en el servidor que son amigos del jugador que se une o que comparten una dirección IP con el jugador que se une.1 si hay un jugador preferido, 0 de lo contrario.
Latencia La latencia estimada del jugador para un servidor, con un valor máximo relevante de 250.
Idioma La proporción de jugadores en el servidor con el mismo idioma que el jugador que se une
Ocupación La relación de jugadores en el servidor en comparación con la capacidad del servidor.
Historial de reproducción La diferencia entre el historial de juego promedio en el servidor y el historial de juego del jugador que se une, con una diferencia relevante máxima de 4.6.
Chat de voz La proporción de jugadores en el servidor con chat de voz habilitado.

Edad

Una señal numérica que compara la edad media de los jugadores en un servidor con la edad del jugador que se une.Esta señal tiene una diferencia máxima relevante de 25.La puntuación de señal está inversamente relacionada con la diferencia de edad, lo que significa que las diferencias de edad más bajas tienen puntuaciones más altas.


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

Tipo de dispositivo

Una señal categorial que mide la proporción de jugadores en el servidor con el mismo tipo de dispositivo que el jugador que se une.Los tipos de dispositivos incluyen: Ordenador, dispositivo móvil, tableta, consola y dispositivo VR.


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

Amigos

Un jugador preferido es un jugador que es amigo del jugador que se une o que comparte la misma dirección IP que el jugador que se une.La señal de Amigos es una señal categorial con una puntuación de 1 cuando hay un jugador preferido en el servidor y una puntuación de 0 cuando no hay jugadores preferidos en el servidor.


friendsSignalScore = hasFriends ? 1 : 0

La señal de Amigos también se puede considerar una señal numérica con un valor máximo relevante de 1.


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

Idioma

Una señal categorial que mide la proporción de jugadores en el servidor que comparten la misma configuración de idioma que el jugador que se une.


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

Latencia

Una señal numérica que mide el tiempo de ping estimado en milisegundos del jugador que se une si jugara en un servidor.Esta señal tiene un valor máximo relevante de 250 milisegundos.La puntuación de señal está inversamente relacionada con el ping, lo que significa que los valores de ping más bajos tienen puntuaciones más altas.


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

Ocupación

Una señal numérica que mide la proporción de jugadores en el servidor con la capacidad del servidor.


occupancySignalScore = (# players in server) / serverCapacity

Historial de reproducción

El valor del atributo de historia de juego es el número de minutos de registro-10 que un jugador ha jugado en un universo en los últimos 28 días.Esta señal numérica compara el valor promedio de la historia de juego de los jugadores en el servidor al valor de la historia de juego del jugador que se une.Esta señal tiene una diferencia máxima relevante de 4.6.La puntuación de señal está inversamente relacionada con la diferencia del historial de reproducción, lo que significa que las diferencias de historial de reproducción más bajas tienen puntuaciones más altas.


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

chatde voz

Un jugador puede tener el chat de voz habilitado o deshabilitado.La señal de chat de voz es una señal categorizada que mide la proporción de jugadores con la misma configuración de chat de voz que el jugador que se une al número de jugadores en el servidor.

Si un lugar tiene el chat de voz deshabilitado, el peso de la señal de chat de voz es 0.


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

Atributos personalizados

Los atributos personalizados dan acceso a señales personalizadas a los datos del jugador y del servidor.Para obtener más información sobre la creación de atributos personalizados propios, vea Crear un atributo personalizado.Para obtener más información sobre los atributos existentes de Roblox, consulte Atributos existentes.

Atribución Características
Jugador Datos de jugador persistentes que persisten en almacenes de datos, como el nivel o la puntuación de un jugador dentro de la experiencia Controlados usando las API DataStore gestionadas
Servidor No es persistente y solo dura mientras el servidor esté activo Datos específicos del servidor como el nivel del servidor o el modo de juego Gestionados con la API de MatchmakingService
Ejemplo de atributo de jugador

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
Ejemplo de atributo del servidor

local MatchmakingService = game::GetService("MatchmakingService")
local RunService = game:GetService("RunService")
if RunService:IsStudio() then
-- Configura los atributos iniciales y el esquema para las pruebas
MatchmakingService:InitializeServerAttributesForStudio(
{
Level = "Advanced",
Elo = 123.456,
TrainingMode = true
})
end
-- Recupera el atributo Nivel
local currentLevel, error = MatchmakingService:GetServerAttribute("Level")
if error then
print(error)
else
print("Current level: " .. currentLevel)
end
-- Actualiza el valor del atributo Nivel a Avanzado
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

Señales personalizadas

Las señales personalizadas se crean y definen por ti y pueden ser numéricas o categorizadas:

  • Las señales numéricas son números.Comparan la diferencia entre el atributo del jugador conectado y el valor agregado del servidor, con diferencias más grandes que reducen o aumentan la puntuación.Por ejemplo, cuanto más cerca está el nivel de habilidad de un jugador al nivel de habilidad promedio del servidor, mayor es la puntuación del señal numérica.Esta puntuación se multiplica luego por el peso de la señal.
  • Las señales categoriales son cadenas o booleanas.Se basan en cuán común es el atributo del jugador unido cuando se compara con los otros jugadores del servidor.Por ejemplo, si un alto porcentaje de los jugadores dentro de un servidor tiene el mismo idioma preferido que el jugador que se une, la puntuación aumenta.Esta puntuación se multiplica entonces también por el peso de la señal.

Para obtener más información sobre la creación de señales personalizadas, vea Crear una señal personalizada.Para obtener más información sobre las señales existentes de Roblox, vea Señales existentes.

Jugador numérico

Unirse al jugador

Minimiza la diferencia entre el atributo promedio del jugador del servidor y el atributo del jugador que se une.Las diferencias más allá de 1000 devuelven una puntuación de señal de 0.

Unir la fórmula del jugador para la señal numérica del jugador

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
Unirse al ejemplo de jugador para la señal numérica del jugador

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

Minimiza la diferencia entre el atributo promedio del jugador del servidor y un valor constante de 500.Las diferencias más allá de 1000 devuelven una puntuación de señal de 0.

Fórmula de valor constante para la señal numérica del jugador

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
Ejemplo de valor constante para la señal numérica del jugador

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)

Categoría del jugador

Agrupación

Maximiza la proporción de jugadores en el servidor que tienen el mismo atributo que el atributo del jugador que se une.

Fórmula de agrupación para la señal categorical del jugador

local score = num_players_same_{attribute_name} / occupancy
return score
Ejemplo de agrupación para la señal categorizadora del jugador

local num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return score
Diversificación

Maximiza la proporción de jugadores en el servidor que tienen un atributo diferente al atributo del jugador que se une.

Fórmula de diversificación para la señal categorical del jugador

local score = num_players_same_{attribute_name} / occupancy
return 1 - score
Ejemplo de diversificación para la señal categorizada del jugador

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

Servidor numérico

Unirse al jugador

Minimiza la diferencia entre el atributo del servidor y el atributo del jugador que se une. Las diferencias por encima de 1000 devuelven una puntuación de señal de 0.

Unir la fórmula del jugador para la señal numérica del servidor

local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
Unirse al ejemplo de jugador para la señal numérica del jugador

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

Minimiza la diferencia entre el valor del atributo del servidor y un valor constante. Las diferencias más allá de este valor constante devuelven una puntuación de señal de 0.

Fórmula de valor constante para la señal numérica del servidor

local diff = math.abs(server_{attribute_name} - constant_value)
local score = math.min(diff / max_relevant_difference, 1)
return score
Ejemplo de valor constante para la señal numérica del servidor

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)

Servidor categorizado

Comparar con unirse al jugador

La puntuación es 1 cuando el valor del atributo del servidor (por ejemplo, Modo de juego) es igual al valor del atributo del jugador (por ejemplo, Modo de juego preferido).De lo contrario, la puntuación de señal es 0.

Unir la fórmula del jugador para la señal categorizada del servidor

if server_{attribute_name} = joining_player_{attribute_name} then
return 1
else
return 0
end
Unirse al ejemplo de jugador para la señal categorizada del servidor

local server_GameMode = "Survival"
local joining_player_GameMode = "Survival"
if server_GameMode = joining_player_GameMode then
return 1
else
return 0
end
Comparar con el valor constante

La puntuación es 1 cuando el valor del atributo del servidor es igual a un valor constante de verdad. De lo contrario, la puntuación de la señal es 0.

Fórmula de valor constante para la señal categorizada del servidor

if server_{attribute_name} = constant_value then
return 1
else
return 0
end
Ejemplo de valor constante para la señal categorizada del servidor

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