El Meta

La muerte del reenvío de puertos: cómo WebRTC está salvando el juego en red retro

Durante mucho tiempo, la “era dorada” de los videojuegos retro quedó atrapada tras un muro de menús con texto azul, direcciones IP confusas y el temido Reenvío de puertos. Si creciste en la década de los 2000 tratando de jugar un clásico juego de lucha de arcade o un juego de plataformas de 8 bits con un amigo que estaba al otro lado del país, probablemente pasaste más tiempo en la configuración de tu enrutador que en el juego en sí. Tenías que ir a 192.168.1.1, buscar la configuración de NAT y rezar para que abrir el puerto 27015 no dejara a la computadora de tu familia vulnerable ante cualquier novato en informática del barrio.

Pero en Recomendación 88, ya hemos superado eso. Al aprovechar WebRTC (Comunicación en tiempo real por Internet), hemos eliminado de manera efectiva la necesidad de una configuración manual de la red. A continuación, te ofrecemos un análisis técnico detallado sobre por qué WebRTC es la columna vertebral revolucionaria del juego en red moderno y cómo resuelve la “crisis de conectividad” que ha afectado a la emulación retro durante décadas.


El problema: la gran barrera del NAT

Para entender por qué WebRTC supone un cambio revolucionario, hay que comprender por qué el juego en red a la antigua usanza era tan complicado. La mayoría de los usuarios de Internet en casa no tienen una dirección IP pública directa para su computadora. En cambio, están detrás de un NAT (Traducción de direcciones de red) puerta de enlace: tu enrutador.

Cuando intentabas organizar una partida en un emulador antiguo, la computadora de tu amigo enviaba un paquete a tu enrutador, y tu enrutador respondía:, “No sé para qué dispositivo de esta casa es este paquete”,” y cerrarlo de inmediato. Por eso tuviste que “reenviar” el puerto. Le estabas indicando manualmente al enrutador: “Todo lo que llega a Port X va a mi computadora para videojuegos”.”

Fue un proceso lleno de dificultades que impidió que 90% de jugadores ocasionales pudieran disfrutar alguna vez de la diversión de los videojuegos retro para dos jugadores en línea.


La solución: WebRTC y el marco “ICE”

WebRTC no le pide al usuario que solucione los problemas de la red; es él quien los soluciona por el usuario. Utiliza un marco de trabajo llamado ICE (Establecimiento de conectividad interactiva) para encontrar la ruta de menor resistencia entre dos jugadores. Este proceso ocurre en milisegundos de manera invisible:

  1. STUN (Utilidades de traversal de sesión para NAT): Tu navegador envía una solicitud a un servidor STUN simplemente para preguntar: “¿Cuál es mi dirección IP pública y mi puerto?” Una vez que conoce su “identidad pública”, la comparte con el otro jugador a través de nuestro servidor de señalización.
  2. Perforación de agujeros UDP: Dado que ambos jugadores se envían “pings” entre sí al mismo tiempo, muchos enrutadores modernos interpretan esto como una comunicación “solicitada” y abren automáticamente un acceso temporal en el firewall. No es necesario realizar un reenvío de puertos manualmente.
  3. TURN (Traversal Using Relays around NAT): En aproximadamente el 10-15% de los casos —por lo general, en redes corporativas o universitarias estrictamente controladas—, ni siquiera el «hole punching» funciona. En estos casos, WebRTC recurre a un servidor TURN, que actúa como un relé de alta velocidad, lo que garantiza que la sesión de juego siga funcionando donde los emuladores antiguos simplemente no lograrían conectarse.

¿Por qué no usar simplemente WebSockets?

Muchos desarrolladores web intentan crear juegos utilizando WebSockets, pero para los juegos retro de alta velocidad (como Street Fighter o Contra), los WebSockets son un desastre. Los WebSockets se ejecutan en TCP (Protocolo de control de transmisión).

El TCP es “confiable”, lo que significa que, si se pierde un solo paquete de datos, todo el flujo se detiene y espera a que ese paquete se vuelva a enviar. En un juego, esto provoca “tropiezos” o “cortes”. Si tu personaje salta, pero se pierde el paquete, el juego se congela durante 200 ms mientras espera a que llegue el comando de salto.

WebRTC utiliza UDP (Protocolo de datagramas de usuario). En un entorno de juego en red basado en UDP, si se pierde un paquete, simplemente pasamos al siguiente. Esto permite una experiencia mucho más fluida, en la que se alcanza un “estado de flujo” y la latencia se percibe como constante en lugar de entrecortada.


Seguridad sin estrés

Una de las ventajas más subestimadas del enfoque WebRTC en Rec0m88 es privacidad. En los viejos tiempos, cuando se compartían direcciones IP a través de Discord o IRC, le dabas tu dirección digital, literalmente, a extraños.

WebRTC en un entorno de navegador está muy aislado en un entorno de caja de arena. Ofrece DTLS (Seguridad de la capa de transporte de datagramas) y SRTP (Protocolo de transporte seguro en tiempo real) Cifrado por defecto. Tus datos se cifran de extremo a extremo y, como se ejecuta en el navegador, el emulador nunca tiene acceso de “administrador” a tu computadora local. Obtienes el rendimiento de una aplicación nativa en C++ con la seguridad de un navegador web moderno.


El futuro del juego en línea es la configuración automática

En Rec0m88, creemos que la tecnología debe pasar a un segundo plano para que el juego sea el protagonista. Al utilizar los canales de datos de WebRTC, hemos reducido la barrera de acceso al juego en red de juegos retro, pasando de un “nivel de técnico de TI” a un “nivel de un solo clic”.”

Ya sea que estés organizando una sala para un juego de lucha de 4 jugadores o un combate 1 contra 1, la compleja interacción entre el cruce de NAT, el descubrimiento de STUN y la señalización UDP ocurre en un abrir y cerrar de ojos. La era del ’host inaccesible“ ha terminado.


¿Estás listo para comprobar la latencia por ti mismo? Sumérgete en nuestros juegos de arcade y inicia una sesión de Netplay para ver cómo funciona WebRTC.

Publicaciones similares

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *