Jugar con amigos por P2P, sin abrir puertos
No hace falta alquilar un servidor, ni tocar el router, ni instalar nada. Uno de vosotros abre su mundo, pasa un enlace y los demás entran. La partida ocurre entre vuestros navegadores directamente.
Cómo funciona por dentro
El multijugador P2P usa WebRTC, la misma tecnología con la que funcionan las videollamadas del navegador. Hay un servicio de señalización que solo hace de presentador: pone en contacto a los dos navegadores y les ayuda a descubrir por qué camino pueden hablarse. Una vez hecha la presentación se aparta, y los datos del juego viajan directamente entre vosotros.
Eso es lo que hace innecesario abrir puertos. En un servidor tradicional los invitados tienen que llegar hasta tu máquina, y por eso hay que configurar el router. Aquí es la negociación de WebRTC la que encuentra la ruta, atravesando los routers domésticos sin que tengas que tocarlos.
Quien abre el mundo hace de anfitrión: su navegador es quien simula el mundo y quien lo guarda. Los invitados solo ven y actúan sobre esa simulación.
Crear el enlace de invitación
Entra en tu mundo y, desde el menú de pausa, abre la partida a tus amigos. Se genera entonces un enlace que apunta a la web con un identificador de tu sesión añadido en la dirección (verás algo tipo ?connectPeer=…). Ese enlace es la invitación: cópialo y mándalo por donde quieras.
Quien lo abra entra directo en tu mundo, sin registrarse ni instalar nada. Le basta un navegador.
El anfitrión no puede cerrar la pestaña. El mundo se está ejecutando ahí. Si el anfitrión cierra, recarga o deja que el equipo se suspenda, la partida termina para todos.
Amigos sin cuentas
Además del enlace suelto, hay un sistema de amigos deliberadamente simple: tu navegador genera un código de amigo aleatorio y lo guarda en tu equipo. No hay registro, ni correo, ni contraseña. Se lo pasas a quien quieras, él te añade con ese código, y a partir de ahí podéis veros cuando alguno abra una partida anunciada a amigos.
Al compartir puedes elegir si la partida se anuncia públicamente, solo a tus amigos, o si no se anuncia en absoluto y funciona únicamente para quien tenga el enlace. El código está pensado para leerse en voz alta o teclearse: no lleva caracteres que se confundan entre sí, como el cero y la O.
Cuánta gente puede entrar
No hay un tope artificial. El límite real es el equipo del anfitrión: mantiene el mundo y, además, una conexión independiente con cada invitado. Cuanta más gente, más trabajo para esa máquina y más subida de datos consume.
La recomendación práctica es empezar con un grupo pequeño e ir subiendo. Si el anfitrión empieza a ir a tirones o los invitados ven bloques que se colocan y se deshacen, os habéis pasado del punto que aguanta ese equipo o esa conexión. Que haga de anfitrión el que tenga mejor PC y mejor subida.
Si la conexión falla
La causa más común es el tipo de red. En redes domésticas normales los dos navegadores encuentran una ruta directa sin problema. En cambio, en redes móviles, universidades u oficinas es habitual que la red impida esa conexión directa; entonces hace falta un servidor de relevo que reenvíe el tráfico por en medio. El cliente lo intenta automáticamente, pero es lo primero que se rompe cuando alguien está detrás de una red restrictiva.
Cosas que puedes probar, en este orden:
- Que el invitado use otra red. Cambiar de datos móviles a wifi doméstico (o al revés) resuelve una parte grande de los casos.
- Regenerar el enlace. Cierra la partida compartida, vuelve a abrirla y reparte el enlace nuevo. Los identificadores de sesión no son eternos.
- Desactivar VPN y bloqueadores. Una VPN, un proxy corporativo o una extensión que filtre agresivamente pueden impedir la negociación.
- Comprobar el navegador del invitado. Debe ser un navegador actual, y en modo incógnito algunas configuraciones bloquean WebRTC.
- Que el anfitrión siga dentro. Parece obvio, pero es el motivo real de muchos "no me deja entrar".
Un aviso sobre pruebas locales: si el anfitrión está ejecutando la web en su propio equipo, en localhost, el enlace que se genera solo sirve dentro de su red. Para invitar a alguien de fuera hay que jugar desde la web publicada.
Si en lugar de una partida entre navegadores lo que quieres es un servidor Java auténtico, tienes dos caminos: conectarte a un servidor existente o levantar uno en tu propio PC.