> For the complete documentation index, see [llms.txt](https://docs.allout.game/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.allout.game/all-out-docs/docs-es/conceptos-basicos-del-motor/matchmaking-hub-games.md).

# Emparejamiento/Juegos hub

### Preferencias de emparejamiento

**Modo de llenado:**

All Out aloja servidores en todo el mundo para ofrecer una experiencia de baja latencia a los jugadores; sin embargo, si tu juego recién está comenzando, quizás quieras sacrificar algo de latencia para asegurarte de que los jugadores puedan jugar juntos en el mismo servidor. Los modos de llenado están documentados en la página principal del portal del creador y pueden cambiarse en cualquier momento.

**Prioridad de instancia + Requerir modo de alta prioridad**

Existe un modo especial de emparejamiento que te permite evitar enviar jugadores a servidores específicos mediante código.

Los juegos pueden establecer un nivel de "prioridad" para cada instancia según el estado de la ronda, el número de jugadores, etc. usando `Server.set_matchmaking_priority(priority)`.

Opcionalmente, puedes solicitar habilitar el modo "Requerir alta prioridad" para tu juego, lo que **solo** dirigirá a los jugadores a instancias con la prioridad establecida en cero y pondrá en marcha **nuevos servidores** si no hay ninguno.

Esto puede ser útil si tienes un juego por rondas en el que no quieres que nuevos jugadores se unan a partidas ya en curso.

{% hint style="info" %}
Esta función solo está disponible bajo solicitud, ya que si tus instancias nunca o rara vez se configuran con el número de prioridad 0, ¡pondrá en marcha una cantidad masiva de servidores! Por favor [contáctanos](/all-out-docs/docs-es/dandolo-todo/developer-support.md)!
{% endhint %}

### Juegos de hub

Los juegos de hub son un patrón común que permite a los jugadores reunirse y hacer cola juntos para un juego por rondas. Algunos ejemplos incluyen:

* Un vestíbulo para Red Sun que permite a los jugadores hacer cola para jugar juntos y comprar mejoras mientras esperan
* El hub de Bed Wars que te permite seleccionar entre modos de juego (como clases/vs clásico)

### Referencia de la API

```go
Server :: struct {
    // Transferir a un jugador a otro juego (hub -> partida, partida -> hub, etc.).
    transfer_player_to_game :: proc(player: Player, game_id: string);

    // Establecer la prioridad de emparejamiento para esta instancia (0 = máxima prioridad).
    set_matchmaking_priority :: proc(priority: int);

    // Expulsar a un jugador del servidor.
    kick_player :: proc(player: Player, reason: string = "Kicked.");

    // Sistema de cola para emparejamiento personalizado. Estas API están actualmente obsoletas, pero podrían volver. Prefiere la API transfer_player_to_game.
    queue_add_player           :: proc(queue: string, player: Player);
    queue_remove_player        :: proc(queue: string, player: Player);
    queue_set_server_available :: proc(queue: string, available: bool);

    // Identidad del servidor.
    get_id :: proc() -> string;
    get_private_server_host_id :: proc() -> string, bool;
}
```

`transfer_player_to_game`, `set_matchmaking_priority`, y `kick_player` tengan efecto en el servidor. Llámalas desde la ruta compartida normal del juego; la llamada correspondiente desde el cliente no tiene efecto.

Las dos consultas de ID solo devuelven datos útiles en el servidor. No bifurques la jugabilidad compartida y predicha basándote en sus resultados.

### Ejemplo: enviar a un jugador a otro juego

```go
GAME_ID_2V2 :: "your_game_id_here";

send_to_2v2_game :: proc(player: Player) {
    Server.transfer_player_to_game(player, GAME_ID_2V2);
}
```

{% hint style="info" %}
Actualmente no hay forma de pasar información adicional al transferir a un jugador a un nuevo juego, ni tampoco de configurar servidores dinámicamente al iniciar. Si quieres tener diferentes modos (por ejemplo, 1v1 vs 2v2), tendrás que crear juegos dedicados y vincularlos con el sistema de jerarquía de juegos.
{% endhint %}

{% hint style="info" %}
Recomendamos habilitar [Productos/datos entre juegos](/all-out-docs/docs-es/datos-y-persistencia/cross-game-products-data.md) al usar las API de teletransporte/hub para garantizar que las compras y los datos guardados de los jugadores puedan reutilizarse fácilmente entre ambos.
{% endhint %}
