Matchmaking chato, sem desequilíbrio e filas: um guia prático

Matchmaking é o principal componente dos mais modernos jogos multiplayer. Quando um desenvolvedor o leva a sério, acontece que os novatos encontram regularmente profissionais em batalha, e alguns jogadores precisam esperar para sempre apenas para entrar na partida. Além disso, é difícil testar e analisar antes do lançamento, porque você precisa considerar vários fatores. Como os jogadores são distribuídos geograficamente? Quanto tempo eles estão prontos para esperar na fila? Qual ping é ideal para um jogo confortável? Esses e outros fatores afetam a qualidade do casamento.

imagem

Neste artigo, discutiremos primeiro a prática geral de selecionar batalhas em jogos multiplayer e depois compartilharemos nossa própria experiência na organização de encontros para robôs de guerra.

Quais critérios escolher?


Então, o que determina uma boa correspondência? Obviamente, isso depende dos recursos da plataforma e do gênero do jogo, mas, como regra, os desenvolvedores são guiados pelos seguintes critérios:

  • tempo de espera curto;
  • ping baixo;
  • a diferença mínima na experiência, habilidades e progresso dos jogadores: aqui a experiência do jogo pode ser levada em consideração tanto em geral quanto para uma classe específica, se o jogo tiver uma divisão neles;
  • oposição entre si - grupos pré-montados de atores que visam um trabalho coordenado;
  • início simultâneo da partida para todos os jogadores.

Outros requisitos são possíveis, por exemplo:

  • pegar jogadores que falam o mesmo idioma;
  • leve em consideração os resultados das últimas partidas do jogador, bem como o coeficiente de conformidade com a classificação: se um jogador perdeu as últimas partidas, ele pode estar fora de forma agora e, por algum tempo, deve facilitar os adversários;
  • faça matchmaking levando em consideração a composição das equipes: se uma equipe não possui, por exemplo, um tanque ou um curandeiro, procure por adversários uma equipe com a mesma composição;
  • reunir trolls, librés e garras para que não interfiram com outros jogadores;
  • diversificar a composição dos jogadores para que as mesmas pessoas não se encontrem em partidas diferentes com muita frequência;
  • reúna jogadores usando o bate-papo por voz.

Está longe de ser sempre possível satisfazer simultaneamente todos esses requisitos. Além disso, um grande número de requisitos sempre contraria o desejo de alcançar um curto tempo de espera. Mesmo que o jogo seja muito bem-sucedido e centenas de pessoas aguardem a partida a cada minuto, ainda pode não haver tempo suficiente para atender a alguns requisitos. Por exemplo, se você deseja encontrar outra equipe australiana satisfatória para uma equipe australiana como rival, o tempo de espera pode aumentar drasticamente.

Nesse sentido, de todos os requisitos desejados, é necessário escolher o mais importante para um projeto específico. Encurtar esta lista levará a uma melhor conformidade com os requisitos restantes e a um menor tempo de espera.

Além disso, ao desenvolver jogos multiplayer, vale lembrar que a adição de vários modos de jogo divide a base de jogadores em várias filas e, portanto, leva a um aumento no tempo de espera e, consequentemente, a uma deterioração na qualidade das partidas. Portanto, pense novamente antes de adicionar este ou aquele modo ao jogo e se vale a pena dar ao jogador a oportunidade de escolher entre eles.

Reduzir o número de requisitos para matchmaking não é a única maneira de reduzir o tempo de espera. Por exemplo, você pode implementar o multiplayer no sistema Drop-In-Drop-Out, para que os usuários possam entrar no jogo a qualquer momento e sair a qualquer momento. Se isso não for possível, com uma curta duração de partidas, você poderá permitir que o jogador jogue com bots no processo de espera. Obviamente, isso não resolverá o problema da expectativa, mas pelo menos nos permitirá passar o tempo.

Como avaliar a conformidade com os critérios selecionados?


Portanto, temos um certo número de jogadores, que devemos alocar para as partidas. Como fazer melhor? Qual é preferível: o mesmo nível de habilidades ou ping baixo? Como podemos equilibrar esses requisitos para que as partes joguem uma contra a outra?

Para comparação, precisamos de uma certa métrica. De alguma forma, todos esses critérios devem convergir em um parâmetro, pelo valor mais alto do qual o sistema pode realizar uma pesquisa. Em seguida, chamaremos o placar da partida.

Para obter o valor dessa avaliação, você deve primeiro calcular os indicadores individuais. Considere uma combinação de fatores:

  • Equipes com o mesmo nível de habilidade. Este é o critério mais óbvio na criação de partidas. Para cada jogo, o método de cálculo deste parâmetro é individual. Uma das mais simples: pegue o nível médio de experiência por equipe e compare-o com o mesmo valor para outra equipe. Quanto maior a diferença, pior a correspondência e menor o indicador desejado.
  • Jogadores com o mesmo nível de habilidade. Mesmo que as duas equipes estejam perfeitamente equilibradas, mas consistam, por exemplo, em dois profissionais e um iniciante, o indicador médio das habilidades das equipes será o mesmo, mas uma boa partida ainda não funcionará. Portanto, introduzimos outro parâmetro não para a equipe como um todo, mas para cada jogador individualmente, ou a variação do nível de habilidades dentro da equipe.
  • Festa. Idealmente, um grupo tocando juntos por um longo tempo deve se opor a outro do mesmo grupo, e não contra três jogadores separados. É fácil calcular: se um time está jogando há muito tempo, temos um indicador igual a 100%. Se uma equipe de três jogar contra dois amigos e um jogador aleatório, obtemos 60%. Se nenhum dos jogadores tivesse jogado um com o outro antes, o valor seria 0%.
  • Ping oponentes. Para cada usuário, verificamos o ping com todos os três jogadores da equipe adversária. Quanto maior o ping, menor a pontuação.
  • Variabilidade dos adversários. Na busca de atender aos requisitos de maior prioridade, o sistema de organização de partidas geralmente pode colocar as mesmas equipes umas contra as outras com as maiores taxas de correspondência. Portanto, para que os jogadores não fiquem entediados jogando constantemente com rostos familiares, vale a pena acompanhar quantas vezes eles se enfrentam nas partidas.


Um exemplo de uma partida em que as equipes têm um indicador de 100% para uma festa, um bom indicador da habilidade média da equipe, mas uma fraca correlação nas habilidades de jogadores individuais: na equipe azul, elas diferem significativamente

Como levar em conta a ambiguidade dos critérios?


Portanto, para cada um dos critérios, temos uma pontuação de 0% (coincidência muito ruim) a 100% (melhor), mas no final, precisamos obter apenas um número. Para isso, usaremos o valor médio ponderado. Em seguida, podemos definir a prioridade de importância para cada critério.

Ao calcular a estimativa, vale a pena considerar se queremos obter uma dependência linear dos parâmetros. Por exemplo, melhorar o ping de 210 ms para 200 ms vale a pena de 110 ms para 100 ms? Ambas as opções foram aprimoradas em 10 ms, mas o valor do ping em si é duas vezes diferente.

Curiosamente, no caso de alguns critérios, é mais fácil obter uma diferença significativa no desempenho do que no caso de outros. Portanto, para ganhar 0% em termos de nível de habilidade, é necessário coletar três jogadores profissionais e três iniciantes na partida, o que é extremamente raro. No entanto, obter 0% pelo critério de party é muito mais fácil, pois para isso você precisa ter uma equipe montada há muito tempo contra três jogadores solteiros. Também vale a pena considerar esse aspecto.


Um exemplo de como as equipes podem ser compostas de acordo com o nível de habilidade. Verde e amarelo mostram ping entre jogadores

Agora, com base nos valores dos indicadores de cada um dos requisitos, podemos calcular a pontuação final.

Como esse número é o critério dominante, o algoritmo produz certas preferências. Se a troca de dois jogadores aumentar o parâmetro de avaliação de uma partida em 5%, mas reduzir em 10% em outra partida, o sistema não fará isso, porque em geral o resultado será pior. No entanto, em alguns casos, isso pode ser negligenciado. Portanto, pode ser apropriado melhorar um indicador de 50% (o que é muito ruim) para 55%, reduzindo o outro de 90% para 80% (o que ainda é muito bom). Isso pode ser alcançado, por exemplo, calculando a raiz quadrada de todos os indicadores da avaliação para o estágio médio. Assim, melhorar as partidas ruins se torna relativamente mais importante que as boas.

Como isso acontece nos robôs de guerra?


Como estamos falando de um jogo para celular no qual tudo deve acontecer rapidamente, a principal prioridade é o baixo tempo de espera antes de entrar na batalha. Para isso, o sistema de matchmaking deve ser o mais simples possível. No momento, o casamenteiro War Robots leva em conta apenas a classificação de seleção de jogadores (MMR) e tenta se concentrar nas partes, mas como elas não são comuns no jogo, esse critério é secundário: se você não pode combinar partes da mesma força, o sistema tenta se combinar. algumas partes ou não se concentram nesse critério. E se um jogador sair da batalha, em seu lugar, ele pegará outro que atenda aos critérios, mas apenas no início da partida.

A classificação da seleção de jogadores depende do número de vitórias / derrotas e do lugar na equipe e, dependendo do resultado da partida, pode aumentar ou diminuir. De acordo com esta classificação, os jogadores são agrupados em ligas e divisões. Dentro da divisão, o casamenteiro procura jogadores com a pontuação mais próxima possível, expandindo gradualmente o alcance da pesquisa e cobrindo também as próximas divisões. Vale ressaltar que o casamenteiro tenta impedir os jogadores das ligas inferiores que subestimam sua classificação deliberadamente, seguindo-os de acordo com padrões característicos de comportamento: geralmente o número de derrotas é maior que o número médio de batalhas da liga por dia.


Os robôs de guerra simplificados correspondem ao fluxograma correspondente

O sistema costumava funcionar errado. O principal critério foi o poder de robôs e armas e, a partir dos resultados das partidas, apenas os cinco últimos foram levados em consideração. O sistema estava mais vulnerável à manipulação. Jogadores experientes poderiam estar na mesma batalha com os recém-chegados, se eles mudassem suas armas para outras mais fracas, ou vice-versa, um novato no robô de primeiro nível poderia instalar a 12ª arma e acabar em uma batalha com profissionais, sem ter tempo para desenvolver a habilidade do jogo. Nesse sentido, o sistema de classificação, com base na experiência real de vitórias e derrotas, acabou sendo muito mais honesto, embora não fosse possível chegar a ele imediatamente: uma reorganização completa do processo de matchmaking é uma etapa radical, portanto, foram feitas primeiras tentativas para simplesmente definir as condições adicionais do sistema.

O trabalho de otimização e aprimoramento do matchmaking no War Robots está em andamento. Talvez no futuro seja possível combinar a antiga e a nova abordagem para encontrar correspondências, mas não se esqueça que qualquer melhoria na qualidade da correspondência leva a um aumento no tempo de espera. Portanto, o desenvolvimento de uma solução desse tipo será aconselhável apenas se não afetar significativamente o desempenho do sistema.

Source: https://habr.com/ru/post/pt475548/


All Articles