> ## 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.

# Inicio rápido de Matchmaking

> Tutorial de inicio rápido de un flujo completo de PlayFab Matchmaking en Unity: creación de tickets, sondeo del estado y recuperación de los resultados de la partida mediante el SDK multijugador.

# Inicio rápido de la API REST de Matchmaking

<Note>
  Le recomendamos encarecidamente que considere usar los SDK multijugador, ya que incluyen compatibilidad con mensajes en tiempo real que reduce la necesidad de sondeo. Esto mejorará la experiencia de emparejamiento y reducirá los retrasos. [Inicio rápido: SDK de cliente](/services/playfab/multiplayer/matchmaking/quickstart-client-sdk)
</Note>

Esta guía de inicio rápido le acompaña por todo el proceso de integración de la característica de emparejamiento. Todos los ejemplos de código de este inicio rápido son para Unity; sin embargo, los conceptos y el flujo se aplican (en general) también a otras plataformas.

En función del diseño de su juego, considere la sección de emparejamiento de [un solo usuario](#single-user-ticket-matchmaking) o de [varios
usuarios](#multiple-user-ticket-matchmaking).

Este tutorial ilustra cómo enviar un ticket a una cola específica para encontrar una partida. Una cola probablemente se corresponda con un modo de juego o con varios modos de juego (por ejemplo, un modo de capturar la bandera y un modo rey de la colina en la misma cola).

El servicio de emparejamiento se encarga de encontrar una partida entre los tickets de una cola. Cuando se encuentra una partida, el título debe encargarse de conectar a los jugadores entre sí para jugar.

## Configurar una cola de emparejamiento en Game Manager

Este inicio rápido presupone que ha configurado sus colas en Game Manager. Para obtener detalles sobre cómo configurar una, consulte [Configuración de colas de emparejamiento](/services/playfab/multiplayer/matchmaking/config-queues).

## Emparejamiento con ticket de un solo usuario

Si su juego tiene un modo de juego 1 contra 1, o admite que un solo usuario entre en el emparejamiento por sí mismo, considere el emparejamiento de un solo usuario. El emparejamiento de un solo usuario sigue el patrón que se ilustra a continuación.

<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="Flujo de emparejamiento" width="708" height="460" data-path="images/playfab/multiplayer/matchmaking/quickstart/matchmaking-single-user-flow.png" />

### Crear un ticket de emparejamiento

Un usuario crea un ticket de emparejamiento mediante [CreateMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.creatematchmakingticket). Cuando la creación del ticket se realiza correctamente, el servicio devuelve un `TicketId`.

La creación del ticket requiere que especifique el `Creator` (la identidad y los atributos del usuario), `GiveUpAfterSeconds` (el tiempo en segundos antes de que el servicio deje de intentar emparejar el ticket) y el `QueueName` en el que buscar una partida.

El campo `Creator` debe contener los atributos de usuario requeridos por la configuración de la cola correspondiente al `QueueName`. Un buen valor para el tiempo de `GiveUpAfterSeconds` es 120 segundos, para evitar que los usuarios abandonen por su cuenta.

```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);
```

### Comprobar el estado del ticket de emparejamiento

Debe sondear el servicio por `TicketId` para acceder al `Status` del ticket en el emparejamiento. Para ello, haga que el título llame a [GetMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatchmakingticket). Puede sondear hasta 10 veces por minuto. Por ejemplo, sondee el estado del ticket cada 6 segundos. El sondeo puede aumentar los retrasos al recuperar el estado del ticket. Por este motivo, le recomendamos encarecidamente que considere usar el método del SDK multijugador que se describe en [Inicio rápido: SDK de cliente](/services/playfab/multiplayer/matchmaking/quickstart-client-sdk). Esto evita la necesidad de sondear gracias a la funcionalidad de mensajes en tiempo real.

Cuando el estado del
ticket cambia a `Matched`, el cliente puede dejar de sondear el ticket. A partir de ese momento, el ticket incluirá el `MatchId`.

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

### Obtener la partida

Desde el cliente, llame a [GetMatch](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatch) con el `MatchId` proporcionado en la respuesta de
[GetMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatchmakingticket). Esta partida contiene la lista de usuarios que se han emparejado entre sí.

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

### Cancelación de un ticket de emparejamiento

Si por algún motivo su cliente desea cancelar el proceso de emparejamiento antes de que se alcance `GiveUpAfterSeconds`, llame a [CancelMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.cancelmatchmakingticket) con el `TicketId`. Si aún no se ha encontrado una partida, el ticket se retira del proceso de emparejamiento y su estado cambia a `Canceled`.

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

## Emparejamiento con ticket de varios usuarios

Si su juego permite que grupos de jugadores entren juntos en una cola de emparejamiento, hay que hacer algunas cosas más para entrar en el emparejamiento. Le aconsejamos que el título asigne un líder de grupo (el creador), para evitar realizar llamadas innecesarias. El líder crea el ticket, pero todos los miembros del grupo deben dar su consentimiento para unirse a él.

### Crear un ticket de emparejamiento (varios usuarios)

El grupo debe elegir un creador de ticket en el título. El creador crea un ticket de emparejamiento mediante [CreateMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.creatematchmakingticket), que devuelve un `TicketId` si se realiza correctamente. La creación del ticket requiere que especifique el `Creator` (la identidad y los atributos del usuario), `GiveUpAfterSeconds` (el tiempo en segundos antes de que el servicio deje de intentar emparejar el ticket), `MembersToMatchWith` (las identidades de los demás miembros del grupo) y el `QueueName` en el que buscar una partida.

El campo `Creator` debe contener los atributos de usuario requeridos por la configuración de la cola correspondiente al `QueueName`. Un buen valor para el tiempo de `GiveUpAfterSeconds` es 120 segundos, para evitar que los usuarios abandonen por su cuenta.

### Los miembros del grupo se unen al ticket de partida

Una vez creado el ticket de partida, los demás miembros del grupo tienen que unirse a él para avanzar en el proceso de emparejamiento. En este momento, el ticket está en el estado `WaitingForPlayers`. No comenzará a emparejarse con otros tickets hasta que todos los `MembersToMatchWith` se hayan unido al ticket.

Para que los miembros se unan, el `Creator` debe compartir el `TicketId` con los demás miembros a través del título. Cada miembro llama entonces a [JoinMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.joinmatchmakingticket), proporcionando sus propios atributos requeridos. Una vez que todos los miembros se han unido al ticket, el estado del ticket pasa 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);
```

El resto del proceso es el mismo que el del [emparejamiento con ticket de un solo usuario](#single-user-ticket-matchmaking)

### Conexión de los jugadores entre sí

Una vez que los jugadores se hayan emparejado, querrá que se unan entre sí, ya sea a través de un servidor o mediante conexiones punto a punto.

Si usa un servidor dedicado, puede basarse en el identificador de la partida para identificar de forma única el grupo de jugadores al que deben pertenecer. Si usa los servidores multijugador de PlayFab, `GetMatch` proporciona un servidor y un puerto para que los jugadores se conecten.

Para obtener más información, consulte [Integración con PlayFab Multiplayer Servers](/services/playfab/multiplayer/matchmaking/multiplayer-servers).

A partir de esta versión, la conexión punto a punto no se admite oficialmente en el emparejamiento. Si se requiere punto a punto, considere usar [PlayFab Party](/services/playfab/multiplayer/networking) o una [solución alternativa provisional](/services/playfab/multiplayer/matchmaking/peer-to-peer).
Póngase en contacto con nosotros para obtener más ayuda al respecto.

## Conclusión

Con este inicio rápido, ahora debería tener un flujo de emparejamiento funcional en su juego. Además, debería tener en cuenta lo siguiente:

* Cómo controla el título la formación de grupos.
* Qué muestra el título mientras los usuarios esperan una partida.
* Cómo controlar los errores y los reintentos.


## Related topics

- [Inicio rápido del SDK de Matchmaking](/es/services/playfab/multiplayer/matchmaking/quickstart-client-sdk.md)
- [Inicio rápido del SDK de Lobby](/es/services/playfab/multiplayer/lobby/lobby-getting-started.md)
- [Inicio rápido del complemento de Unity de Multiplayer](/es/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/multiplayer-unity-plugin-quickstart.md)
- [Inicio rápido de PlayFab Online Subsystem (OSS)](/es/services/playfab/multiplayer/networking/party-unreal-engine-oss-quickstart.md)
- [Inicio rápido de Linux](/es/services/playfab/sdks/c/quickstart-linux.md)
