VRCast 02. Combatir el Lag, Criptomonedas y Blockchain

 

En este segundo VRCast hablamos de cómo hemos solucionados los problemas de Lag en Virtual Pong, nuestro juego de Ping Pong multijugador VR.

El problema

El lag se produce cuando hay un desfase alto, en el caso de Virtual Pong concretamente se puede advertir en el tiempo que transcurre desde que nuestro oponente golpea la pelota, hasta que nosotros lo vemos.
Si ese tiempo de retardo es grande, la experiencia de juego se vuelve desagradable.
El lag se debe a un Ping alto, es decir el tiempo que tarda un paquete de datos en ir y volver de un ordenador a otro a través de internet.
El ping es alto porque el paquete pasa por varios equipos antes de llegar a nuestro oponente. A esto hay que sumarle el hecho de que los ordenadores se comunican mediante relay servers, que permite la comunicación entre ordenadores sin abrir puertos pero en contrapartida provoca un aumento del ping.

Solución

La solución pasa por reducir el número de equipos (PCs) implicados en el juego, por los cuales viaja la información. En primer lugar, hemos cambiado a una arquitectura host-cliente, donde un jugador hace de server y cliente al mismo tiempo, y otro jugador hace de cliente. El segundo paso ha sido eliminar los relay servers, de manera que los jugadores se conecten directamente sin intermediarios. Para eliminar los relays sin tener que abrir puertos, se utilizan técnicas de red como el Nat Punchtrough, que suele funcionar en el 85% de casos.

Sin embargo al ser una comunicación entre equipos, siempre habrá lag. Para corregir esto hemos aplicado una solución para jugadores y otra para el observador:

Jugadores
Para jugadores, después de golpear la pelota se calcula la trayectoria que va a llevar la pelota, incluyendo los botes en la mesa.
Después de un instante, le quitamos el control a las físicas y empezamos a mover la pelota de forma manual e idéntica a como lo haría las físicas, pero un poco más lento, de manera inapreciable para el jugador.
Así el desfase entre la pelota del jugador A y la pelota del jugador B se va reduciendo poco a poco. Cuando el desfase está compensado se devuelve el control a las físicas.
Esta velocidad de ralentización, está calculada de forma dinámica dependiendo del ping, mientras más alto sea el ping, más lenta irá la pelota.

Observadores
La técnica arriba mencionada, no puede aplicarse a los observadores, ya que ellos no golpean la pelota y solo se ralentiza a quien golpea la pelota.
Cada jugador calcula las colisiones con su raqueta y la pelota, pero ignora las colisiones de la raqueta del oponente, esperando recibir esa información. Los observadores antes ignoraban ambas colisiones, y esperaban la información de ambos jugadores.
Ahora los observadores calculan las colisiones de todos los jugadores. Esto podría crear trayectorias un poco distintas, pero cuando reciben la información, los observadores rectifican la trayectoria. Es mejor una rectificación que un desfase grande. Esta rectificación es inapreciable a la vista.

Tras la solución implementada, el Lag es inapreciable en unas condiciones de juego normales y la experiencia de juego es satisfactoria para los jugadores. En el modo observador, utilizado para retransmitir, ya no se aprecian desfases y las rectificaciones son apenas perceptibles viendo un partido.

Leave a Reply

Your email address will not be published. Required fields are marked *