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.
| Atributo | Tipo | Descrição |
|---|---|---|
| Latência Estimada do Jogador | Numérico | A latência estimada de um jogador em um servidor. |
| Tem Amigos | Categórico | Se 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 Voz | Categórico | Se um jogador tem o chat de voz ativado. |
| Idade do Jogador | Numérico | A idade do jogador. |
| Tipo de Dispositivo do Jogador | Categórico | O tipo de dispositivo do jogador. Pode ser um dispositivo móvel, um computador, um tablet, um console ou um dispositivo VR. |
| Idioma do Jogador | Categórico | O idioma do jogador. |
| Histórico de Jogo do Jogador | Numérico | O log-10 do número de minutos que um jogador jogou em um universo nos últimos 28 dias. |
| Ocupação do Servidor | Numérico | O número de jogadores em um servidor. |
| Grupo de Chat de Texto do Jogador | Categórico | O 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:
| Sinal | Descrição |
|---|---|
| Idade | A 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 Dispositivo | A proporção de jogadores no servidor com o mesmo tipo de dispositivo que o jogador que está entrando. |
| Amigos | O 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ência | A latência estimada do jogador para um servidor, com um valor máximo relevante de 250. |
| Idioma | A proporção de jogadores no servidor que usam o mesmo idioma que o jogador que está entrando. |
| Ocupação | A proporção de jogadores no servidor em comparação com a capacidade do servidor. |
| Histórico de Jogo | A 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 Voz | A proporção de jogadores no servidor com o chat de voz ativado. |
| Chat de Texto | A 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.
onde
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.
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.
O sinal Amigos também pode ser considerado um sinal numérico com um valor máximo relevante de 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.
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.
Ocupação
Um sinal numérico que mede a proporção de jogadores no servidor em relação à capacidade do servidor.
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.
, onde
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.
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.
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.
| Atributo | Características |
|---|---|
| Jogador | Persistente 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 |
| Servidor | Nã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 servidorlocal MatchmakingService = game:GetService("MatchmakingService")local RunService = game:GetService("RunService")if RunService:IsStudio() then-- Configura atributos e esquema iniciais para testeMatchmakingService:InitializeServerAttributesForStudio({Level = "Avançado",Elo = 123.456,TrainingMode = true})end-- Recupera o atributo Levellocal currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")if errorMessage thenwarn(errorMessage)elseprint("Nível atual: " .. currentLevel)end-- Atualiza o valor do atributo Level para Avançadolocal success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Avançado")if not success thenwarn("Falha ao atualizar o atributo do servidor [Level] para [Avançado] devido ao erro: " .. errorMessage)elseprint("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 jogadorlocal 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 jogadorlocal 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 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 jogadorlocal 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 jogadorlocal 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)
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 jogadorlocal score = num_players_same_{attribute_name} / occupancyreturn score
Exemplo de clustering para sinal categórico do jogadorlocal num_players_same_Guild = 15local occupancy = 19local score = num_players_same_Guild / occupancyreturn 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 jogadorlocal score = num_players_same_{attribute_name} / occupancyreturn 1 - score
Exemplo de diversificando para sinal categórico do jogadorlocal num_players_same_RpgClass = 15local occupancy = 19local score = num_players_same_RpgClass / occupancyreturn 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 servidorlocal 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 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 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 servidorlocal 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 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 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 servidorif server_{attribute_name} == joining_player_{attribute_name} thenreturn 1elsereturn 0end
Exemplo de jogador que está entrando para sinal categórico do servidorlocal server_GameMode = "Sobrevivência"local joining_player_GameMode = "Sobrevivência"if server_GameMode == joining_player_GameMode thenreturn 1elsereturn 0end
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 servidorif server_{attribute_name} == constant_value thenreturn 1elsereturn 0end
Exemplo de valor constante para sinal categórico do servidorlocal server_GameNotStarted = trueif server_GameNotStarted == true thenreturn 1elsereturn 0end