Pular para o conteúdo principal
Este artigo descreve como o PlayFab Matchmaking avalia tíquetes, aplica regras e forma partidas. Entender o processo de correspondência ajuda você a projetar configurações de fila que produzam partidas de alta qualidade com eficiência.

Visão geral da formação de partidas

Quando você envia um tíquete para uma fila, o serviço de matchmaking o coloca junto com outros tíquetes em espera. O serviço executa continuamente um loop de partidas que tenta agrupar tíquetes compatíveis em partidas. Veja o que acontece em cada etapa:
  1. Os tíquetes expirados são removidos. Os tíquetes que excedem o tempo limite de GiveUpAfterSeconds são cancelados.
  2. Os tíquetes são ordenados por tempo de espera: O tíquete que está esperando há mais tempo se torna a semente, ou ponto de partida, de uma possível partida.
  3. Os candidatos são classificados por compatibilidade: Cada tíquete restante recebe uma pontuação de distância com base no quanto seus atributos se alinham com o tíquete semente, de acordo com as regras da fila.
  4. Um grupo é formado de forma gulosa: Começando pelos candidatos mais próximos, os tíquetes são adicionados ao grupo um de cada vez, até MaxMatchSize.
  5. Cada adição é validada: À medida que um tíquete é adicionado, cada regra verifica se o candidato ainda é compatível com o grupo formado até então. Se alguma regra o rejeitar, o candidato será ignorado.
  6. O grupo completo é validado: Quando um grupo atinge pelo menos MinMatchSize, uma passagem de validação final confirma se o grupo atende a todas as regras. Se passar, uma partida será criada.
  7. Retrocesso: Se nenhum grupo válido puder ser formado, o serviço removerá o último tíquete adicionado e tentará o próximo candidato. Esse processo explora agrupamentos alternativos antes de desistir da semente atual.
Em seguida, o serviço passa para o próximo tíquete que está esperando há mais tempo como uma nova semente e repete o processo.
O algoritmo prioriza os tíquetes que estão esperando há mais tempo. Essa prioridade garante que os jogadores que esperam mais sejam os primeiros a receber partidas.

Como as regras influenciam a correspondência

As regras têm duas finalidades durante a formação de partidas: filtragem e ordenação.

Filtragem

Uma regra pode impedir que um tíquete entre em um grupo. Por exemplo, uma StringEqualityRule na versão de build do jogo rejeita qualquer tíquete cujo build não corresponda ao build do grupo. O serviço de matchmaking verifica a filtragem sempre que considera um candidato. Não é apenas uma verificação única no início.

Ordenação (distância)

As regras também contribuem com uma pontuação de distância que determina quais candidatos são testados primeiro. Uma distância menor significa maior compatibilidade.
  • Um tíquete com um valor de atributo idêntico geralmente tem distância 0.
  • Um tíquete no limite do intervalo permitido de uma regra tem distância próxima de 1.
  • Um tíquete fora do intervalo permitido é filtrado (distância efetivamente infinita).
Quando uma fila tem várias regras, a distância de cada regra é multiplicada pelo seu peso e somada. Os tíquetes são testados em ordem, da menor para a maior distância total, para que os candidatos mais compatíveis sejam testados primeiro.
Use os pesos das regras para expressar importância relativa. Por exemplo, se a similaridade de habilidade for mais importante do que a preferência de região, atribua um peso maior à regra de habilidade.

Validação

Algumas restrições só podem ser verificadas depois que um grupo completo é formado. Por exemplo, as regras de equilíbrio de equipes (TeamDifferenceRule, TeamSizeBalanceRule) precisam ver o grupo completo antes de poderem avaliar se as equipes estão equilibradas. Essas regras são executadas como uma etapa de validação final.

Expansão e relaxamento

Quando um tíquete aguarda, as regras relaxam suas restrições para ampliar a busca. Dois mecanismos controlam esse processo:
  • Expansão: Uma regra ajusta gradualmente seu limite ao longo do tempo. Por exemplo, uma DifferenceRule com um limite de habilidade de 0,2 pode se expandir em 0,1 a cada 5 segundos, permitindo, por fim, uma diferença de 0,5.
  • Segundos até se tornar opcional: Após um tempo configurado, a regra para completamente de filtrar. A regra ainda contribui para a ordenação (distância), mas não bloqueia mais partidas.
A expansão é sempre baseada em tempo. Ela se aplica uniformemente a todos os tíquetes com base em quanto tempo eles estão esperando. Os tíquetes que esperam mais tempo naturalmente atingem estágios de expansão mais amplos e podem ser combinados com um conjunto maior de candidatos.
O relaxamento não significa que a qualidade da partida seja ignorada. Mesmo quando uma regra se torna opcional, ela ainda contribui com distância para a etapa de ordenação. Os candidatos que atendem à regra são testados antes dos que não atendem.
Para obter mais detalhes sobre como configurar expansões, confira Configurando filas de matchmaking.

Dimensionamento e particionamento

Quando uma fila recebe um grande volume de tíquetes, o serviço particiona os tíquetes em grupos que avalia de forma independente. O particionamento usa atributos de regras que dividem naturalmente a população. Por exemplo, uma StringEqualityRule no modo de jogo cria limites de partição bem definidos. À medida que a carga diminui, as partições se mesclam novamente. Esse processo fornece ao serviço um conjunto maior de candidatos e melhora a qualidade das partidas. Para obter mais detalhes sobre como projetar filas que se dimensionam bem, confira Dimensionamento do matchmaking.

Projetando para preferências assimétricas

Alguns cenários de matchmaking envolvem preferências assimétricas, em que o Jogador A está disposto a ser combinado com o Jogador B, mas o Jogador B não está disposto a ser combinado com o Jogador A. As configurações de jogo multiplataforma (cross-play) são o exemplo mais comum. Para conhecer um padrão de configuração recomendado e um exemplo prático, confira Lidando com preferências assimétricas de jogo multiplataforma.

Confira também

Última modificação em 8 de outubro de 2026