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 datos para el emparejamiento que Roblox no incluye automáticamente en su configuración predeterminada, necesitas crear atributos personalizados y señales personalizadas.
| Atributo | Tipo | Descripción |
|---|---|---|
| Latencia estimada del jugador | Numerical | La latencia estimada de un jugador en un servidor. |
| Tiene amigos | Categórico | Si un servidor tiene un amigo u otro jugador de la misma dirección IP que el jugador que se une. |
| Chat de voz habilitado | Categórico | Si un jugador tiene habilitado el chat de voz. |
| Edad del jugador | Numerical | La edad del jugador. |
| Tipo de dispositivo del jugador | Categórico | El tipo de dispositivo del jugador. Puede ser un dispositivo móvil, una computadora, una tableta, una consola o un dispositivo VR. |
| Idioma del jugador | Categórico | El idioma del jugador. |
| Historial de juego del jugador | Numerical | El log-10 del número de minutos que un jugador ha jugado en un universo en los últimos 28 días. |
| Ocupación del servidor | Numerical | El número de jugadores en un servidor. |
| Grupo de chat de texto del jugador | Categórico | El grupo de chat de texto del jugador donde pueden chatear. |
Señales existentes
Las siguientes son señales definidas por Roblox derivadas de los atributos de Roblox:
| Señal | Descripción |
|---|---|
| Edad | La diferencia entre la edad promedio de los jugadores en el servidor y la edad del jugador que se une, con una diferencia máxima relevante 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 en caso 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 proporción de jugadores en el servidor en comparación con la capacidad del servidor. |
| Historial de juego | La diferencia entre el historial de juego promedio en el servidor y el historial de juego del jugador que se une, con una diferencia máxima relevante de 4.6. |
| Chat de voz | La proporción de jugadores en el servidor con el chat de voz habilitado. |
| Chat de texto | La proporción de jugadores en el servidor que pueden chatear por texto con el jugador que se une. |
Edad
Una señal numérica que compara las edades promedio 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 la señal está inversamente relacionada con la diferencia de edad, lo que significa que las menores diferencias de edad tienen puntuaciones más altas.
donde
Tipo de dispositivo
Una señal categórica 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 dispositivo incluyen: Computadora, dispositivo móvil, tableta, consola y dispositivo VR.
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 categórica 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.
La señal de Amigos también puede considerarse una señal numérica con un valor máximo relevante de 1.
Idioma
Una señal categórica que mide la proporción de jugadores en el servidor que comparten la misma configuración de idioma que el jugador que se une.
Latencia
Una señal numérica que mide el tiempo de ping estimado en milisegundos del jugador que se une si jugaran en un servidor. Esta señal tiene un valor máximo relevante de 250 milisegundos. La puntuación de la señal está inversamente relacionada con el ping, lo que significa que los valores de ping más bajos tienen puntuaciones más altas.
Ocupación
Una señal numérica que mide la proporción de jugadores en el servidor en comparación con la capacidad del servidor.
Historial de juego
El valor del atributo de Historial de juego es el log-10 del número de minutos que un jugador ha jugado en un universo en los últimos 28 días. Esta señal numérica compara el valor promedio de Historial de juego log-10 de los jugadores en el servidor con el valor de Historial de juego del jugador que se une. Esta señal tiene una diferencia máxima relevante de 4.6. La puntuación de la señal está inversamente relacionada con la diferencia en el historial de juego, lo que significa que las menores diferencias de historial de juego tienen puntuaciones más altas.
, donde
Chat de voz
Un jugador puede tener el chat de voz habilitado o deshabilitado. La señal de Chat de voz es una señal categórica que mide la proporción de jugadores con la misma configuración de chat de voz que el jugador que se une en comparación con el 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.
Chat de texto
Una señal categórica que mide la proporción de jugadores en el servidor que pueden chatear por texto con el jugador que se une.
Atributos personalizados
Los atributos personalizados le dan a las señales personalizadas acceso a los datos del jugador y del servidor. Para más información sobre cómo crear tus propios atributos personalizados, consulta Crear un atributo personalizado. Para más información sobre los atributos existentes de Roblox, consulta Atributos existentes.
| Atributo | Características |
|---|---|
| Jugador | Persistente Datos personalizados del jugador que persisten en los almacenes de datos, como el nivel o la puntuación de un jugador dentro del juego Administrado usando las APIs DataStore |
| Servidor | No persistente y solo dura mientras el servidor esté activo Datos específicos del servidor como el nivel del servidor o el modo de juego Administrado usando la API 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 de servidorlocal MatchmakingService = game:GetService("MatchmakingService")local RunService = game:GetService("RunService")if RunService:IsStudio() then-- Configura atributos iniciales y esquema para pruebasMatchmakingService:InitializeServerAttributesForStudio({Level = "Avanzado",Elo = 123.456,TrainingMode = true})end-- Recupera el atributo de Nivellocal currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")if errorMessage thenwarn(errorMessage)elseprint("Nivel actual: " .. currentLevel)end-- Actualiza el valor del atributo de Nivel a Avanzadolocal success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Avanzado")if not success thenwarn("Error al actualizar el atributo del servidor [Nivel] a [Avanzado] debido al error: " .. errorMessage)elseprint("Se estableció correctamente [Nivel] a [Avanzado]")end
Señales personalizadas
Las señales personalizadas son creadas y definidas por ti y pueden ser numéricas o categóricas:
- Las señales numéricas son números. Comparan la diferencia entre el atributo del jugador que se une y el valor agregado del servidor, con diferencias más grandes reduciendo o aumentando la puntuación. Por ejemplo, cuanto más cercano sea el nivel de habilidad de un jugador al nivel de habilidad promedio del servidor, mayor será la puntuación de la señal numérica. Esta puntuación se multiplica luego por el peso de la señal.
- Las señales categóricas son cadenas o booleanos. Se basan en cuán común es el atributo del jugador que se une en comparación con los otros jugadores en el servidor. Por ejemplo, si un alto porcentaje de los jugadores dentro de un servidor tienen el mismo idioma preferido que el jugador que se une, la puntuación aumenta. Esta puntuación también se multiplica por el peso de la señal.
Para más información sobre cómo crear tus propias señales personalizadas, consulta Crear una señal personalizada. Para más información sobre las señales existentes de Roblox, consulta Señales existentes.
Jugador numérico
Jugador que se une
Minimiza la diferencia entre el atributo promedio del jugador en el servidor y el atributo del jugador que se une. Diferencias superiores a 1000 devuelven una puntuación de señal de 0.
Fórmula de jugador que se une para señal numérica de jugadorlocal diff = math.abs(server_{aggregation_function}_{attribute_name} - joining_player_{attribute_name})local score = 1 - math.min(diff / max_relevant_difference, 1)return score
Ejemplo de jugador que se une para señal numérica de jugadorlocal 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
Valor constante
Minimiza la diferencia entre el atributo promedio del jugador en el servidor y un valor constante de 500. Diferencias superiores a 1000 devuelven una puntuación de señal de 0.
Fórmula de valor constante para señal numérica de jugadorlocal 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 señal numérica de jugadorlocal 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)
Jugador categórico
Clustering
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 clustering para señal categórica de jugadorlocal score = num_players_same_{attribute_name} / occupancyreturn score
Ejemplo de clustering para señal categórica de jugadorlocal num_players_same_Guild = 15local occupancy = 19local score = num_players_same_Guild / occupancyreturn 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 señal categórica de jugadorlocal score = num_players_same_{attribute_name} / occupancyreturn 1 - score
Ejemplo de diversificación para señal categórica de jugadorlocal num_players_same_RpgClass = 15local occupancy = 19local score = num_players_same_RpgClass / occupancyreturn score
Servidor numérico
Jugador que se une
Minimiza la diferencia entre el atributo del servidor y el atributo del jugador que se une. Diferencias superiores a 1000 devuelven una puntuación de señal de 0.
Fórmula de jugador que se une para señal numérica de servidorlocal diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})local score = 1 - math.min(diff / max_relevant_difference, 1)return score
Ejemplo de jugador que se une para señal numérica de servidorlocal 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)
Valor constante
Minimiza la diferencia entre el valor del atributo del servidor y un valor constante. Diferencias superiores a este valor constante devuelven una puntuación de señal de 0.
Fórmula de valor constante para señal numérica de servidorlocal diff = math.abs(server_{attribute_name} - constant_value)local score = math.min(diff / max_relevant_difference, 1)return score
Ejemplo de valor constante para señal numérica de servidorlocal 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)
Servidor categórico
Comparar con el jugador que se une
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 la señal es 0.
Fórmula de jugador que se une para señal categórica de servidorif server_{attribute_name} == joining_player_{attribute_name} thenreturn 1elsereturn 0end
Ejemplo de jugador que se une para señal categórica de servidorlocal server_GameMode = "Supervivencia"local joining_player_GameMode = "Supervivencia"if server_GameMode == joining_player_GameMode thenreturn 1elsereturn 0end
Comparar con valor constante
La puntuación es 1 cuando el valor del atributo del servidor es igual a un valor constante verdadero. De lo contrario, la puntuación de la señal es 0.
Fórmula de valor constante para señal categórica de servidorif server_{attribute_name} == constant_value thenreturn 1elsereturn 0end
Ejemplo de valor constante para señal categórica de servidorlocal server_GameNotStarted = trueif server_GameNotStarted == true thenreturn 1elsereturn 0end