É altamente recomendável considerar o uso dos Multiplayer SDKs, pois eles incluem suporte a mensagens em tempo real que reduz a necessidade de sondagem, melhorando a experiência de matchmaking e reduzindo atrasos. Usando tíquetes de preenchimento de servidor - Multiplayer SDK
- Correspondência
- Tíquetes de preenchimento não podem ser combinados entre si.
- Tíquetes de preenchimento recebem prioridade durante a pesquisa. Isso reduz a fragmentação da base de jogadores.
- Contrato
- Tíquetes de preenchimento podem ser criados com um campo
ServerDetails. Isso permite que o servidor indique como os jogadores combinados devem se conectar a ele. - Tíquetes de preenchimento podem ser criados com atribuições de equipe. Isso permite que jogos com equipes mantenham as informações de suas equipes.
- Tíquetes de preenchimento podem ser criados com um campo
- Propriedades da fila
- Tíquetes de preenchimento não disparam a alocação de Multiplayer Server.
- Tíquetes de preenchimento não são refletidos nas estatísticas da fila, pois seus jogadores já estão jogando uma partida e distorceriam o tempo de espera de forma imprecisa.
- Propriedade
- Tíquetes de preenchimento pertencem a um servidor de jogo, não a um usuário. Os usuários não podem visualizar nem interagir com tíquetes de preenchimento de forma alguma.
Criando um tíquete de preenchimento de servidor
O processo de preenchimento começa de forma semelhante à criação de um tíquete de matchmaking comum, mas com a chamada CreateServerBackfillTicket em vez de uma chamada CreateServerMatchmakingTicket. O servidor de jogo deve fornecer todas as informações de membros do jogo que está hospedando no momento. A maneira mais eficiente de fazer isso é armazenar os atributos retornados no resultado da partida anterior. Esses atributos podem ser recuperados chamando GetMatch com o sinalizadorReturnMemberAttributes. Como alternativa, o servidor de jogo pode consultar
os usuários para obter as informações de atributos.
Além dos membros, o servidor de jogo pode especificar duas informações
adicionais.
ServerDetails
Essa estrutura é idêntica à estrutura retornada em uma chamada GetMatch e permite que o servidor especifique quaisquer informações necessárias para se conectar a ele. Quando o tíquete de preenchimento é combinado, sua estrutura ServerDetails é retornada a todos os jogadores que chamarem GetMatch na partida resultante. Todos os campos dessa estrutura são opcionais. Os títulos podem precisar apenas de um subconjunto deles para fornecer informações suficientes para que os clientes se conectem ao servidor de jogo.O campo
IPV4Address não é validado e pode ser usado para fornecer informações arbitrárias de cadeia de conexão aos clientes.Atribuições de equipe
Se o tíquete de preenchimento for enviado a uma fila com equipes, cada membro também poderá ser especificado com um TeamId, indicando a equipe em que está no momento. Essa associação é preservada quando uma partida é retornada. Se um TeamId não for especificado para um usuário, ele poderá ser colocado em qualquer equipe.Interagindo com um tíquete de preenchimento
Depois de criado, um tíquete de preenchimento começa a procurar tíquetes de matchmaking comuns que atendam aos critérios das regras. O fluxo dos tíquetes de preenchimento é idêntico ao funcionamento dos tíquetes de matchmaking comuns, exceto pelo uso de APIs análogas. O servidor de jogo pode verificar o status do seu tíquete chamando GetServerBackfillTicket. Ele também pode cancelar o tíquete chamando CancelServerBackfillTicket.Os clientes não têm permissão para cancelar um tíquete de preenchimento do qual fazem parte. Suponha que um cliente esteja em uma partida 4v4 e que um jogador da equipe adversária tenha saído. O cliente poderia manter sua vantagem cancelando continuamente todos os tíquetes de preenchimento dos quais fizesse parte. Para evitar isso, somente servidores de jogo podem cancelar tíquetes de preenchimento.
Limites de associação e recuperação de tíquetes de preenchimento perdidos
Assim como nos tíquetes de matchmaking comuns, um usuário pode estar em apenas um tíquete de preenchimento por fila a qualquer momento. Esse limite é controlado separadamente dos tíquetes comuns que um cliente controla. Caso um servidor de jogo crie um tíquete de preenchimento e depois falhe, todos os usuários do tíquete de preenchimento perdido não poderão ser enviados em outro tíquete de preenchimento devido ao limite de associação. Um servidor de jogo descobre isso ao receber o erroMatchmakingTicketMembershipLimitExceeded, junto com uma
lista de usuários que indica quais têm tíquetes de preenchimento pendentes em um
corpo errorDetails.
