A fórmula de pontuação
Os servidores são avaliados usando uma fórmula de soma pesada. Existem quatro partes nessa fórmula:
- Atributos, que são dados que descrevem jogadores e servidores, como idade do jogador ou ocupação do servidor.
- Sinais, que transformam atributos em números entre 0 e 1.
- Pesos, que descrevem a importância relativa dos sinais.
- A pontuação do servidor score, que mede a compatibilidade do servidor com o jogador que se junta.
O jogador de junção é correspondido ao servidor com a maior pontuação do servidor.
Atributos
Atributos são dados que descrevem jogadores e servidores.O valor de um atributo pode ser um número ou uma string / cadeia / texto.Quando o valor de um atributo é uma string / cadeia / texto, isso é chamado de atributo categorial.Quando o valor de um atributo é um número, ele é chamado de atributo numérico.
Para uma lista completa de todos os atributos Roblox disponíveis, veja Atributos existentes.Para mais informações sobre atributos personalizados, veja Atributos personalizados.
Exemplo: Atributos categoriais e numerais
Atributos categoricais |
---|
Tem Amigos é um atributo categorial porque seu valor é a string "true" quando há um jogador preferido neste servidor, e "false" quando não há jogadores preferidos neste servidor. |
Idioma é um atributo categorial porque seu valor é a configuração de idioma do jogador, como "Japonês". |
Atributos numerais |
Idade é um atributo numérico porque seu valor é a idade do jogador. |
Ocupação é um atributo numérico porque seu valor é o número de jogadores atualmente neste servidor. |
Sinais
Os sinais transformam os valores dos atributos em números entre 0 e 1, chamados de pontuações de sinal.Uma pontuação de sinal de 1 prevê alta compatibilidade do jogador, enquanto uma pontuação de sinal de 0 prevê baixa compatibilidade do jogador.Dependendo do atributo, as transformações podem incluir diferentes agregações, comparações e normalizações.
Para uma lista completa de sinais existentes do Roblox, veja Sinais existentes. Para mais informações sobre sinais personalizados, veja Sinais personalizados.
Exemplo: Dois servidores com pontuações de sinal diferentes
A tabela a seguir calcula as pontuações do sinal de ocupação para dois servidores diferentes com capacidade para 8 jogadores:
Jogadores no servidor | Pontuação de ocupação | |
---|---|---|
Servidor A | 2 | 2/8 = 0.25 |
Servidor B | 6 | 6/8 = 0.75 |
O sinal de Ocupação pontua o Servidor B mais alto e o considera um ajuste melhor para o jogador que se junta.
Pesas
O peso de um sinal descreve a importância desse sinal em relação a outros sinais.Um peso maior aumenta a contribuição do sinal para a pontuação do servidor.O valor após multiplicar um score de sinal por seu peso é chamado de sinal ponderado .
Sinais não podem ter pesos negativos. Se o peso de um sinal for 0, esse sinal não é considerado para pontuação.
Exemplo: Ponderar a pontuação de ocupação
A tabela a seguir calcula pontuações de sinal de Ocupação pesadas para um local com capacidade para 8 jogadores e um peso de sinal de Ocupação de 2:
Jogadores no servidor | Pontuação de ocupação | Pontuação de ocupação pesada | |
---|---|---|---|
Servidor A | 2 | 2/8 = 0.25 | 0.25 * 2 = 0.5 |
Servidor B | 6 | 6/8 = 0.75 | 0.75 * 2 = 1.5 |
Exemplo: Duas configurações com diferentes pesos
Pesos diferentes também podem fazer com que o matchmaking escolha diferentes servidores.A tabela a seguir calcula as pontuações do servidor de dois servidores com diferentes configurações de matchmaking.A configuração 2 tem um peso maior para o seu sinal de Ocupação, e o Servidor A tem um amigo do jogador que se junta a ele.
Amigos | Ocupação | |||||
---|---|---|---|---|---|---|
Peso | Pontuação > | Peso > | Pontuação > | Pontuação total > | ||
Configuração 1 | Servidor A | 1 | 1 | 5 | 0.25 | 1 * 1 + 5 * 0.25 = 2.25 |
Servidor B | 1 | 0 | 5 | 0.75 | 1 * 0 + 5 * 0.75 = 3.75 | |
Configuração 2 | Servidor A | 3 | 1 | 5 | 0.25 | 3 * 1 + 5 * 0.25 = 4.25 |
Servidor B | 3 | 0 | 5 | 0.75 | 3 * 0 + 5 * 0.75 = 3.75 |
Pontuação do servidor
A pontuação do servidor é calculada pela seguinte fórmula de soma ponderada, que soma as pontuações de sinal pesadas do servidor:
ServerScore= WeightedSignalScore_1 + WeightedSignalScore_2 + ... + WeightedSignalScore_n= Weight_1 * SignalScore_1 + Weight_2 * SignalScore_2 + ... + Weight_n * SignalScore_n
Configurações de matchmaking
Uma configuração de matchmaking é o conjunto de sinais e pesos usados para pontuar servidores de um local.Por padrão, todos os servidores de todos os lugares são pontuados pela configuração padrão do Roblox, o que significa que você não precisa personalizar ou habilitar nenhuma configuração para usá-la.
A configuração padrão do Robox inclui os seguintes sinais e pesos:
Sinal | Peso |
---|---|
Amigos | 10 |
Latência | 3 |
Ocupação | 2 |
Histórico de Jogo | 2 |
Idade | 1 |
Linguagem | 1 |
chat/conversade Voz | 1 |
Tipo de dispositivo | 0 |
Na configuração padrão do Roblox, o peso do sinal de Amigos é maior que a soma dos pesos de todos os outros sinais.Isso significa que, se disponível, o jogador de junção sempre é correspondido a servidores com amigos (ou jogadores com o mesmo endereço IP) neles.
O sinal do tipo de dispositivo existe na configuração padrão, mas tem um peso de 0, portanto, não afeta as decisões de matchmaking.Você pode ajustar esse peso quando você personalizar a busca de correspondência.
Para mais informações sobre cada sinal do Roblox, veja Sinais existentes.
Conceitos avançados
Os seguintes são conceitos mais avançados sobre o processo de matchmaking.
Normalização
Sinais normalizam os valores de atributos para serem números entre 0 e 1.Sinais numéricos podem ser normalizados por qualquer número positivo, chamado de fator de normalização .Se o valor normalizado for maior que 1, ele é reduzido para 1.
Exemplo: Projetar o sinal de Idade
O sinal Idade mede a diferença entre a idade média dos jogadores no servidor e a idade do jogador que se junta.
ageDifference = abs(avgServerAge - joiningPlayerAge)
Servidores com diferenças de idade além de 25 são todos considerados igualmente incompatíveis com o jogador.Por exemplo, uma diferença de idade de 25 não é pior para um jogador do que uma diferença de idade de 26, então ambos os valores devem levar a pontuação do sinal para 0.Neste caso, 25 é considerado o fator de normalização.
normAgeDifference = min(1, abs(avgServerAge - joiningPlayerAge) / 25)
A pontuação do sinal está inversamente relacionada à diferença de idade, o que significa que a pontuação do sinal é maior quando a diferença de idade é menor.
ageDifferenceSignalScore = 1 - normAgeDifference
A tabela a seguir mostra as pontuações do sinal de Idade com dois fatores de normalização diferentes:
Idade | Fator de normalização: 100 | Fator de normalização: 25 |
---|---|---|
50 | 0.5 | 0 |
25 | 0.75 | 0 |
12 | 0.88 | 0.52 |
5 | 0.95 | 0.8 |
0 | 1 | 1 |
O sinal com um fator de normalização de 25 considera as diferenças de idade de 5 anos e 12 anos mais distantes.Fatores de normalização menores têm o efeito de amplificar aumentos ou diminuições marginais na diferença de idade.
Magnitudes de peso
Um peso indica a importância de um sinal em relação a outros sinais em uma configuração.As magnitudes relativas dos pesos determinam a importância do sinal, não suas magnitudes absolutas.
Exemplo: Relativo vs magnitude absoluta
A tabela abaixo calcula as pontuações do servidor de dois servidores com duas configurações diferentes de matchmaking.Configuração 5 e Configuração 6 têm pesos de ocupação maiores que seus respectivos pesos de amigos.O servidor A tem um amigo do jogador que se junta nele.
Amigos | Ocupação | |||||
---|---|---|---|---|---|---|
Peso | Pontuação > | Peso > | Pontuação > | Pontuação total > | ||
Configuração 5 | Servidor A | 10,000 | 1 | 15,000 | 0.25 | 10,000 * 1 + 15,000 * 0.25 = 13,750 |
Servidor B | 10,000 | 0 | 15,000 | 0.75 | 10,000 * 0 + 15,000 * 0.75 = 11,250 | |
Configuração 6 | Servidor A | 0.01 | 1 | 0.05 | 0.25 | 0.01 * 1 + 0.05 * 0.25 = 0.0225 |
Servidor B | 0.01 | 0 | 0.05 | 0.75 | 0.01 * 0 + 0.05 * 0.75 = 0.0375 |
O servidor A vence com a Configuração 5 enquanto o servidor B vence com a Configuração 6.Isso ocorre porque o peso de Ocupação da Configuração 5 é apenas 1,5x seu peso de Amigos, enquanto o peso de Ocupação da Configuração 6 é 5x seu peso de Amigos.
Apesar de diferenças em magnitudes absolutas, a Configuração 6 prioriza a Ocupação sobre os Amigos mais do que a Configuração 5 faz.