> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Início rápido de matchmaking

> Passo a passo de início rápido de um fluxo completo do PlayFab Matchmaking no Unity: criar tíquetes, sondar o status e recuperar os resultados das partidas usando o Multiplayer SDK.

# Início rápido da API REST de Matchmaking

<Note>
  É altamente recomendável considerar o uso dos Multiplayer SDKs, pois eles incluem suporte a mensagens em tempo real que reduz a necessidade de sondagem. Isso melhorará a experiência de matchmaking e reduzirá os atrasos. [Início rápido - SDK do cliente](/pt-BR/services/playfab/multiplayer/matchmaking/quickstart-client-sdk)
</Note>

Este guia de início rápido orienta você por todo o processo de integração do recurso de matchmaking. Todos os exemplos de código deste início rápido são para o Unity; no entanto, os conceitos e o fluxo se aplicam (em geral) a outras plataformas também.

Dependendo do design do seu jogo, considere a seção de matchmaking de [usuário único](#matchmaking-de-tíquete-de-usuário-único) ou de [vários
usuários](#matchmaking-de-tíquete-de-vários-usuários).

Este tutorial ilustra como enviar um tíquete para uma fila específica a fim de encontrar uma partida. Uma fila provavelmente corresponde a um modo de jogo ou a vários modos de jogo (por exemplo, um modo de captura de bandeira e um modo rei da colina na mesma fila).

O serviço de matchmaking se encarrega de encontrar uma partida entre os tíquetes de uma fila. Quando uma partida é encontrada, seu título deve se encarregar de conectar os jogadores para a jogabilidade.

## Configurar uma fila de matchmaking no Game Manager

Este início rápido pressupõe que você tenha configurado suas filas no Game Manager. Para obter detalhes sobre como configurar uma, confira [Configurando filas de matchmaking](/pt-BR/services/playfab/multiplayer/matchmaking/config-queues).

## Matchmaking de tíquete de usuário único

Se o seu jogo tiver um modo 1v1 ou permitir que um único usuário entre sozinho no matchmaking, considere o matchmaking de usuário único. O matchmaking de usuário único segue o padrão ilustrado abaixo.

<img src="https://mintcdn.com/microsoft-4404708b/dqv53299jA1M-fNi/images/playfab/multiplayer/matchmaking/quickstart/matchmaking-single-user-flow.png?fit=max&auto=format&n=dqv53299jA1M-fNi&q=85&s=7a34b642c26c3ab073ca258bae379604" alt="Fluxo de matchmaking" width="708" height="460" data-path="images/playfab/multiplayer/matchmaking/quickstart/matchmaking-single-user-flow.png" />

### Criar um tíquete de matchmaking

Um usuário cria um tíquete de matchmaking usando [CreateMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.creatematchmakingticket). Quando a criação do tíquete é bem-sucedida, o serviço retorna um `TicketId`.

A criação do tíquete exige que você especifique o `Creator` (a identidade e os atributos do usuário), `GiveUpAfterSeconds` (o tempo, em segundos, antes de o serviço desistir de combinar o tíquete) e o `QueueName` no qual encontrar uma partida.

O campo `Creator` deve conter os atributos de usuário exigidos pela configuração da fila correspondente ao `QueueName`. Um bom valor para `GiveUpAfterSeconds` é 120 segundos, para evitar que os usuários desistam por conta própria.

```csharp theme={null}
PlayFabMultiplayerAPI.CreateMatchmakingTicket(
    new CreateMatchmakingTicketRequest
    {
        // The ticket creator specifies their own player attributes.
        Creator = new MatchmakingPlayer
        {
            Entity = new EntityKey
            {
                Id = "<Entity ID goes here>",
                Type = "<Entity type goes here>",
            },

            // Here we specify the creator's attributes.
            Attributes = new MatchmakingPlayerAttributes
            {
                DataObject = new
                {
                    Skill = 24.4
                },
            },
        },

        // Cancel matchmaking if a match is not found after 120 seconds.
        GiveUpAfterSeconds = 120,

        // The name of the queue to submit the ticket into.
        QueueName = "myqueue",
    },

    // Callbacks for handling success and error.
    this.OnMatchmakingTicketCreated,
    this.OnMatchmakingError);
```

### Verificar o status do tíquete de matchmaking

Você deve sondar o serviço pelo `TicketId` para acessar o `Status` do tíquete no matchmaking. Para isso, faça com que seu título chame [GetMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatchmakingticket). Você pode sondar até 10 vezes por minuto. Por exemplo, sonde o status do tíquete a cada 6 segundos. A sondagem pode aumentar os atrasos ao recuperar o status do seu tíquete. É por esse motivo que recomendamos fortemente considerar o uso do método do Multiplayer SDK descrito aqui: [Início rápido - SDK do cliente](/pt-BR/services/playfab/multiplayer/matchmaking/quickstart-client-sdk). Ele evita a necessidade de sondagem usando a funcionalidade de mensagens em tempo real.

Quando o status do
tíquete mudar para `Matched`, seu cliente poderá parar de sondar o tíquete. A partir desse ponto, o tíquete incluirá o `MatchId`.

```csharp theme={null}
PlayFabMultiplayerAPI.GetMatchmakingTicket(
    new GetMatchmakingTicketRequest
    {
        TicketId = "<ticket ID goes here>",
        QueueName = "myqueue",
    },
    this.OnGetMatchmakingTicket,
    this.OnMatchmakingError);
```

### Obter a partida

No seu cliente, chame [GetMatch](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatch) com o `MatchId` fornecido na resposta de
[GetMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatchmakingticket). Essa partida contém a lista de usuários que foram combinados.

```csharp theme={null}
PlayFabMultiplayerAPI.GetMatch(
    new GetMatchRequest
    {
        MatchId = "<match ID goes here>",
        QueueName = "myqueue",
    },
    this.OnGetMatch,
    this.OnMatchmakingError);
```

### Cancelando um tíquete de matchmaking

Se, por algum motivo, seu cliente quiser cancelar o processo de matchmaking antes que `GiveUpAfterSeconds` seja atingido, chame [CancelMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.cancelmatchmakingticket) com o `TicketId`. Se uma partida ainda não tiver sido encontrada, o tíquete será retirado do processo de matchmaking e seu status mudará para `Canceled`.

```csharp theme={null}
PlayFabMultiplayerAPI.CancelMatchmakingTicket(
    new CancelMatchmakingTicketRequest
    {
        QueueName = "myqueue",
        TicketId = "<ticket ID goes here>",
    },
    this.OnTicketCanceled,
    this.OnMatchmakingError);
```

## Matchmaking de tíquete de vários usuários

Se o seu jogo permitir que grupos de jogadores entrem juntos em uma fila de matchmaking, há mais algumas coisas que precisam ser feitas para entrar no matchmaking. Recomendamos que seu título designe um líder de grupo (o criador) para evitar chamadas desnecessárias. O líder cria o tíquete, mas todos os membros do grupo devem concordar em ingressar nele.

### Criar um tíquete de matchmaking (vários usuários)

O grupo deve eleger um criador de tíquete no seu título. O criador cria um tíquete de matchmaking usando [CreateMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.creatematchmakingticket), que retorna um `TicketId` em caso de êxito. A criação do tíquete exige que você especifique o `Creator` (a identidade e os atributos do usuário), `GiveUpAfterSeconds` (o tempo, em segundos, antes de o serviço desistir de combinar o tíquete), `MembersToMatchWith` (as identidades dos outros membros do grupo) e o `QueueName` no qual encontrar uma partida.

O campo `Creator` deve conter os atributos de usuário exigidos pela configuração da fila correspondente ao `QueueName`. Um bom valor para `GiveUpAfterSeconds` é 120 segundos, para evitar que os usuários desistam por conta própria.

### Os membros do grupo ingressam no tíquete de partida

Depois que o tíquete de partida for criado, os outros membros do grupo precisarão ingressar nele para dar continuidade ao processo de matchmaking. Nesse momento, o tíquete está no status `WaitingForPlayers`. Ele não começará a ser combinado com outros tíquetes até que todos os `MembersToMatchWith` tenham ingressado no tíquete.

Para que os membros ingressem, o `Creator` deve compartilhar o `TicketId` com os outros membros por meio do seu título. Cada membro então chama [JoinMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.joinmatchmakingticket), fornecendo os próprios atributos necessários. Depois que todos os membros tiverem ingressado no tíquete, o status do tíquete passará a ser `WaitingForMatch`.

```csharp theme={null}
PlayFabMultiplayerAPI.JoinMatchmakingTicket(
    new JoinMatchmakingTicketRequest
    {
        TicketId = "<ticket ID>",
        QueueName = "myqueue",
        Member = new MatchmakingPlayer
        {
            Entity = new EntityKey
            {
                Id = "<Entity ID goes here>",
                Type = "<Entity type goes here>",
            },
            Attributes = new MatchmakingPlayerAttributes
            {
                DataObject = new
                {
                    Skill = 19.3
                },
            },
        }
    },
    this.OnJoinMatchmakingTicket,
    this.OnMatchmakingError);
```

O restante do processo é igual ao do [matchmaking de tíquete de usuário único](#matchmaking-de-tíquete-de-usuário-único)

### Conectando seus jogadores

Depois que seus jogadores forem combinados, você vai querer que eles se conectem uns aos outros, seja por meio de um servidor ou de conexões ponto a ponto.

Se você estiver usando um servidor dedicado, poderá contar com a ID da partida para identificar de forma exclusiva o grupo de jogadores em que eles devem estar. Se você estiver usando os servidores multijogador do PlayFab, `GetMatch` fornecerá um servidor e uma porta para seus jogadores se conectarem.

Para obter mais informações, confira [Integração com o PlayFab Multiplayer Servers](/pt-BR/services/playfab/multiplayer/matchmaking/multiplayer-servers).

Nesta versão, a conexão ponto a ponto ainda não tem suporte oficial no matchmaking. Se for necessária uma conexão ponto a ponto, considere usar o [PlayFab Party](/pt-BR/services/playfab/multiplayer/networking) ou uma [solução alternativa provisória](/pt-BR/services/playfab/multiplayer/matchmaking/peer-to-peer).
Entre em contato conosco para obter mais suporte sobre isso.

## Conclusão

Com este início rápido, você já deve ter um fluxo de matchmaking funcionando no seu jogo. Além disso, considere o seguinte:

* Como seu título lida com a formação de grupos.
* O que seu título exibe enquanto os usuários aguardam uma partida.
* Como lidar com falhas e novas tentativas.


## Related topics

- [Matchmaking](/pt-BR/services/playfab/multiplayer/matchmaking/index.md)
- [Início rápido do SDK de Matchmaking](/pt-BR/services/playfab/multiplayer/matchmaking/quickstart-client-sdk.md)
- [Início rápido de estatísticas](/pt-BR/services/playfab/player-progression/statistics/quickstart-statistics.md)
- [Início rápido de trocas](/pt-BR/services/playfab/economy-monetization/economy/trading/trading-quickstart.md)
- [Início rápido de métricas](/pt-BR/services/playfab/data-analytics/learn-data/trends/trends-quickstart.md)
