Atributos e sinais

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Atributos existentes

A configuração padrão de correspondência do Roblox usa sinais baseados em atributos existentes, como localização do jogador, grupo etário e latência.

Para usar dados para correspondência que o Roblox não inclui automaticamente em sua configuração padrão, você precisa criar atributos personalizados e sinais personalizados.

AtributoTipoDescrição
Latência Estimada do JogadorNuméricoA latência estimada de um jogador em um servidor.
Tem AmigosCategóricoSe um servidor tem um amigo ou outro jogador com o mesmo endereço IP que o jogador que está entrando.
Está Ativado o Chat de VozCategóricoSe um jogador tem o chat de voz ativado.
Idade do JogadorNuméricoA idade do jogador.
Tipo de Dispositivo do JogadorCategóricoO tipo de dispositivo do jogador. Pode ser um dispositivo móvel, um computador, um tablet, um console ou um dispositivo VR.
Idioma do JogadorCategóricoO idioma do jogador.
Histórico de Jogo do JogadorNuméricoO log-10 do número de minutos que um jogador jogou em um universo nos últimos 28 dias.
Ocupação do ServidorNuméricoO número de jogadores em um servidor.
Grupo de Chat de Texto do JogadorCategóricoO grupo de chat de texto do jogador onde eles podem conversar via texto juntos.

Sinais existentes

Os seguintes são sinais definidos pelo Roblox, derivados com base em atributos do Roblox:

SinalDescrição
IdadeA diferença entre a idade média dos jogadores no servidor e a idade do jogador que está entrando, com uma diferença máxima relevante de 25.
Tipo de DispositivoA proporção de jogadores no servidor com o mesmo tipo de dispositivo que o jogador que está entrando.
AmigosO número de pessoas no servidor que são amigas do jogador que está entrando ou que compartilham um endereço IP com o jogador que está entrando. 1 se houver um jogador preferido, 0 caso contrário.
LatênciaA latência estimada do jogador para um servidor, com um valor máximo relevante de 250.
IdiomaA proporção de jogadores no servidor que usam o mesmo idioma que o jogador que está entrando.
OcupaçãoA proporção de jogadores no servidor em comparação com a capacidade do servidor.
Histórico de JogoA diferença entre o histórico de jogo médio no servidor e o histórico de jogo do jogador que está entrando, com uma diferença máxima relevante de 4.6.
Chat de VozA proporção de jogadores no servidor com o chat de voz ativado.
Chat de TextoA proporção de jogadores no servidor que podem conversar via texto com o jogador que está entrando.

Idade

Um sinal numérico que compara as idades médias dos jogadores em um servidor com a idade do jogador que está entrando. Este sinal tem uma diferença máxima relevante de 25. A pontuação do sinal é inversamente relacionada à diferença de idade, significando que diferenças de idade menores têm pontuações mais altas.

ageDifferenceSignalScore=1min(25,ageDifference)/25\text{ageDifferenceSignalScore} = 1 - \min(25, \text{ageDifference}) / 25

onde

ageDifference=avgServerAgejoiningPlayerAge\text{ageDifference} = |\text{avgServerAge} - \text{joiningPlayerAge}|

Tipo de Dispositivo

Um sinal categórico que mede a proporção de jogadores no servidor com o mesmo tipo de dispositivo que o jogador que está entrando. Os tipos de dispositivos incluem: Computador, dispositivo móvel, tablet, console e dispositivo VR.

deviceTypeSignalScore=# jogadores com o mesmo dispositivo que o jogador que estaˊ entrando/# jogadores no servidor\text{deviceTypeSignalScore} = \text{\# jogadores com o mesmo dispositivo que o jogador que está entrando} / \text{\# jogadores no servidor}

Amigos

Um jogador preferido é um jogador que é amigo do jogador que está entrando ou que compartilha o mesmo endereço IP que o jogador que está entrando. O sinal Amigos é um sinal categórico com uma pontuação de 1 quando há um jogador preferido no servidor e uma pontuação de 0 quando não há jogadores preferidos no servidor.

friendsSignalScore=hasFriends ? 1:0\text{friendsSignalScore} = \text{hasFriends} \ {?} \ 1 : 0

O sinal Amigos também pode ser considerado um sinal numérico com um valor máximo relevante de 1.

friendsSignalScore=min(# jogadores preferidos no servidor,1)/1\text{friendsSignalScore} = \min(\text{\# jogadores preferidos no servidor}, 1) / 1

Idioma

Um sinal categórico que mede a proporção de jogadores no servidor que compartilham a mesma configuração de idioma que o jogador que está entrando.

languageSignalScore=# jogadores com a mesma configurac¸a˜o de idioma que o jogador que estaˊ entrando/# jogadores no servidor\text{languageSignalScore} = \text{\# jogadores com a mesma configuração de idioma que o jogador que está entrando} / \text{\# jogadores no servidor}

Latência

Um sinal numérico que mede o tempo de ping estimado em milissegundos do jogador que está entrando se ele fosse jogar em um servidor. Este sinal tem um valor máximo relevante de 250 milissegundos. A pontuação do sinal é inversamente relacionada ao ping, significando que valores de ping mais baixos têm pontuações mais altas.

latencySignalScore=1min(250,estimatedPingMs)/250\text{latencySignalScore} = 1 - \min(250, \text{estimatedPingMs}) / 250

Ocupação

Um sinal numérico que mede a proporção de jogadores no servidor em relação à capacidade do servidor.

occupancySignalScore=# jogadores no servidor/serverCapacity\text{occupancySignalScore} = \text{\# jogadores no servidor} / \text{serverCapacity}

Histórico de Jogo

O valor do atributo Histórico de Jogo é o log-10 do número de minutos que um jogador jogou em um universo nos últimos 28 dias. Este sinal numérico compara o valor médio de log-10 do Histórico de Jogo dos jogadores no servidor com o valor do Histórico de Jogo do jogador que está entrando. Este sinal tem uma diferença máxima relevante de 4.6. A pontuação do sinal é inversamente relacionada à diferença do histórico de jogo, significando que diferenças menores de histórico de jogo têm pontuações mais altas.

playHistorySignalScore=1min(4.6,playHistoryDifference/4.6)\text{playHistorySignalScore} = 1 - \min(4.6, \text{playHistoryDifference} / 4.6), onde

playHistoryDifference=avgServerPlayHistoryjoiningPlayerPlayHistory\text{playHistoryDifference} = |\text{avgServerPlayHistory} - \text{joiningPlayerPlayHistory}|

Chat de Voz

Um jogador pode ter o chat de voz ativado ou desativado. O sinal de Chat de Voz é um sinal categórico que mede a proporção de jogadores com a mesma configuração de chat de voz que o jogador que está entrando em relação ao número de jogadores no servidor.

Se um lugar tiver o chat de voz desativado, o peso do sinal de Chat de Voz é 0.

voiceChatSignalScore=# jogadores com a mesma configurac¸a˜o de chat de voz que o jogador que estaˊ entrando/# jogadores no servidor\text{voiceChatSignalScore} = \text{\# jogadores com a mesma configuração de chat de voz que o jogador que está entrando} / \text{\# jogadores no servidor}

Chat de Texto

Um sinal categórico que mede a proporção de jogadores no servidor que podem conversar via texto com o jogador que está entrando em comum.

textChatSignalScore=# jogadores que podem conversar com o jogador que estaˊ entrando em comum /# jogadores no servidor\text{textChatSignalScore} = \text{\# jogadores que podem conversar com o jogador que está entrando em comum } / \text{\# jogadores no servidor}

Atributos personalizados

Atributos personalizados dão acesso a dados de jogador e servidor para sinais personalizados. Para mais informações sobre como criar seus próprios atributos personalizados, veja Criar um atributo personalizado. Para mais informações sobre atributos existentes do Roblox, veja Atributos existentes.

AtributoCaracterísticas
JogadorPersistente

Dados personalizados do jogador que persistem em data stores, como o nível ou a pontuação de um jogador dentro do jogo

Gerenciado usando as APIs DataStore
ServidorNão persistente e dura apenas enquanto o servidor estiver ativo

Dados específicos do servidor, como o nível do servidor ou o modo de jogo

Gerenciado usando a API MatchmakingService
Exemplo de atributo de jogador

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
Exemplo de atributo de servidor

local MatchmakingService = game:GetService("MatchmakingService")
local RunService = game:GetService("RunService")
if RunService:IsStudio() then
-- Configura atributos e esquema iniciais para teste
MatchmakingService:InitializeServerAttributesForStudio({
Level = "Avançado",
Elo = 123.456,
TrainingMode = true
})
end
-- Recupera o atributo Level
local currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")
if errorMessage then
warn(errorMessage)
else
print("Nível atual: " .. currentLevel)
end
-- Atualiza o valor do atributo Level para Avançado
local success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Avançado")
if not success then
warn("Falha ao atualizar o atributo do servidor [Level] para [Avançado] devido ao erro: " .. errorMessage)
else
print("Definido com sucesso [Level] para [Avançado]")
end

Sinais personalizados

Sinais personalizados são criados e definidos por você e podem ser numéricos ou categóricos:

  • Sinais numéricos são números. Eles comparam a diferença entre o atributo do jogador que está entrando e o valor agregado do servidor, com diferenças maiores diminuindo ou aumentando a pontuação. Por exemplo, quanto mais próximo o nível de habilidade de um jogador estiver do nível de habilidade médio do servidor, maior será a pontuação do sinal numérico. Essa pontuação é então multiplicada pelo peso do sinal.
  • Sinais categóricos são strings ou booleanos. Eles são baseados na frequência com que o atributo do jogador que está entrando é comum quando comparado aos outros jogadores no servidor. Por exemplo, se uma alta porcentagem dos jogadores dentro de um servidor tiver o mesmo idioma preferido que o jogador que está entrando, a pontuação aumenta. Essa pontuação também é multiplicada pelo peso do sinal.

Para mais informações sobre como criar seus próprios sinais personalizados, veja Criar um sinal personalizado. Para mais informações sobre sinais existentes do Roblox, veja Sinais existentes.

Jogador numérico

Jogador que está entrando

Minimiza a diferença entre o atributo médio do jogador do servidor e o atributo do jogador que está entrando. Diferenças além de 1000 retornam uma pontuação de sinal de 0.

Fórmula de jogador que está entrando para sinal numérico do jogador

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
Exemplo de jogador que está entrando para sinal numérico do jogador

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 a diferença entre o atributo médio do jogador do servidor e um valor constante de 500. Diferenças além de 1000 retornam uma pontuação de sinal de 0.

Fórmula de valor constante para sinal numérico do jogador

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
Exemplo de valor constante para sinal numérico do jogador

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)

Jogador categórico

Clustering

Maximiza a proporção de jogadores no servidor que têm o mesmo atributo que o jogador que está entrando.

Fórmula de clustering para sinal categórico do jogador

local score = num_players_same_{attribute_name} / occupancy
return score
Exemplo de clustering para sinal categórico do jogador

local num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return score
Diversificando

Maximiza a proporção de jogadores no servidor que têm um atributo diferente do que o jogador que está entrando.

Fórmula de diversificando para sinal categórico do jogador

local score = num_players_same_{attribute_name} / occupancy
return 1 - score
Exemplo de diversificando para sinal categórico do jogador

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

Servidor numérico

Jogador que está entrando

Minimiza a diferença entre o atributo do servidor e o atributo do jogador que está entrando. Diferenças além de 1000 retornam uma pontuação de sinal de 0.

Fórmula de jogador que está entrando para sinal numérico do servidor

local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
Exemplo de jogador que está entrando para sinal numérico do servidor

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 a diferença entre o valor do atributo do servidor e um valor constante. Diferenças além deste valor constante retornam uma pontuação de sinal de 0.

Fórmula de valor constante para sinal numérico do servidor

local diff = math.abs(server_{attribute_name} - constant_value)
local score = math.min(diff / max_relevant_difference, 1)
return score
Exemplo de valor constante para sinal numérico do 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 categórico

Comparar com jogador que está entrando

A pontuação é 1 quando o valor do atributo do servidor (por exemplo, Modo de Jogo) é igual ao valor do atributo do jogador (por exemplo, Modo de Jogo Preferido). Caso contrário, a pontuação do sinal é 0.

Fórmula de jogador que está entrando para sinal categórico do servidor

if server_{attribute_name} == joining_player_{attribute_name} then
return 1
else
return 0
end
Exemplo de jogador que está entrando para sinal categórico do servidor

local server_GameMode = "Sobrevivência"
local joining_player_GameMode = "Sobrevivência"
if server_GameMode == joining_player_GameMode then
return 1
else
return 0
end
Comparar com valor constante

A pontuação é 1 quando o valor do atributo do servidor é igual a um valor constante de verdadeiro. Caso contrário, a pontuação do sinal é 0.

Fórmula de valor constante para sinal categórico do servidor

if server_{attribute_name} == constant_value then
return 1
else
return 0
end
Exemplo de valor constante para sinal categórico do servidor

local server_GameNotStarted = true
if server_GameNotStarted == true then
return 1
else
return 0
end
©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.