people-arrowsMatchmaking/Juegos hub

Proporcionamos APIs/configuraciones para gestionar cómo hacemos matchmaking de jugadores a servidores en tu juego, y te permitimos dirigir a los jugadores a nuevos servidores para soportar escenarios de 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 apenas está comenzando, quizá quieras priorizar menos la 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 de Creator y pueden cambiarse en cualquier momento.

Prioridad de instancia + Requerir modo de alta prioridad

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

Los juegos pueden establecer un nivel de "prioridad" para cada instancia en función del 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 cual solo dirigirá a los jugadores a instancias con prioridad establecida en cero y levantará 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.

circle-info

Esta función está disponible solo por solicitud, ya que si tus instancias nunca o rara vez se establecen en prioridad número 0, ¡se levantará una cantidad masiva de servidores! Por favor contáctanos!

Juegos Hub

Los juegos 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 lobby 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 elegir entre modos de juego (como clases/vs clásico)

Referencia de la API

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

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

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

    // Sistema de cola para emparejamiento personalizado. Estas APIs 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;
}
circle-exclamation

Ejemplo: enviar a un jugador a otro juego

circle-info

Actualmente no hay forma de pasar información adicional al transferir a un jugador a un nuevo juego, ni tampoco hay forma de configurar servidores dinámicamente al inicio. Si quieres tener diferentes modos (por ejemplo, 1v1 vs 2v2), tendrás que crear juegos dedicados y vincularlos con el sistema de parentado de juegos.

circle-info

Recomendamos habilitar Productos/datos entre juegosal usar APIs de teletransporte/hub para garantizar que las compras de los jugadores y los datos guardados puedan reutilizarse fácilmente entre ambos.

Última actualización