Unity 6: Lobby, Relay y Sessions, ¿qué necesitas para jugar con amigos?

GamerCreador

Admin
SUPER VIP
Leyenda
Referente
Mentor
Especialista
Creador
Colaborador
Participante
Explorador
Desde
1 Oct 2019
Mensajes
2,382
Reacciones
2,158
Honor
829
Si estás montando un cooperativo en Unity, es fácil acabar con tres tutoriales abiertos y paquetes que no coinciden. Para orientarte, empieza por separar reunir jugadores, conectarlos y sincronizar la partida.

unity_01_componentes.webp

Mapa conceptual: reunir jugadores, conectarlos, sincronizar y coordinar son responsabilidades distintas.

Qué hace cada pieza

  • Lobby: agrupa jugadores y datos de la sala, como la configuración previa a la partida.
  • Relay: intermedia el tráfico entre jugadores y ayuda con los problemas de conectividad directa. No convierte por sí solo tu juego en un servidor dedicado que ejecute todas las reglas.
  • Netcode: se ocupa de la comunicación y sincronización del juego. Para un proyecto basado en GameObjects, Netcode for GameObjects es una de las opciones de Unity.
  • Sessions: es la abstracción del Multiplayer Services SDK que coordina la sesión. No es un cuarto servicio de alojamiento que debas contratar por separado.

Unity reúne Lobby, Matchmaker y Relay en el Multiplayer Services SDK. Su documentación también explica la diferencia entre Lobby y Relay.

Una ruta razonable para tu primer cooperativo

Para probar con dos amigos, un host jugador y conexión mediante Relay puede ser un punto de partida manejable. El host sigue siendo parte importante de la partida: diseña qué ocurre si sale, se desconecta o su equipo va lento.

Propuesta de primera prueba:

  1. Anota la versión exacta del Editor y de los paquetes. Conserva esa combinación mientras haces el prototipo.
  2. Configura el proyecto de Unity Services y su autenticación siguiendo el tutorial correspondiente a esas versiones.
  3. Instala Multiplayer Services y el netcode elegido. Para NGO, la guía oficial usa com.unity.services.multiplayer y com.unity.netcode.gameobjects.
  4. Prepara una escena mínima con un único objeto sincronizado antes de añadir combate, inventario o matchmaking.
  5. Crea una sesión con red Relay y comparte su código para que entre la otra instancia. En SessionOptions, MaxPlayers incluye al host: dos plazas significan dos jugadores en total.
  6. Prueba dos equipos en redes diferentes y luego desconecta al host deliberadamente. Anota qué ve el cliente y cómo vuelve al menú.

Consulta crear una sesión y la integración de Relay con NGO. Esta última muestra la configuración manual de Relay; si estás usando Sessions para gestionarlo, no dupliques a ciegas ambos flujos.

Dos trampas que conviene detectar pronto

Tutorial antiguo + proyecto nuevo. El antiguo Game Lobby Sample está marcado como obsoleto por Unity. Puede servir para estudiar conceptos, pero no es una plantilla actual que debas copiar sin revisar dependencias. Aviso del repositorio oficial.

Cambiar el host de la sala no conserva automáticamente la partida. Unity distingue la elección de un nuevo host de la migración de los datos de juego. La solución depende del netcode y de su arquitectura; comprueba la guía de migración antes de prometer continuidad sin cortes.

unity_02_prueba.webp

Primera prueba: versiones fijadas, dos jugadores, un objeto compartido y salida del host.

Cómo sabría que el prototipo está listo

Dos jugadores se unen desde redes distintas, ambos ven el mismo objeto, la desconexión muestra un mensaje claro y una nueva partida puede empezar sin reiniciar toda la aplicación. Después añadiría el resto, una funcionalidad cada vez.

¿Qué estás intentando montar: cooperativo entre amigos o partidas competitivas? Comparte también las versiones del Editor y de Multiplayer Services si un tutorial no te compila.