GamerDicExplicado

Lag y ping, explicado: qué pasa entre tu clic y lo que ves

Un disparo en un juego online, milisegundo a milisegundo: el paquete, el servidor, el tick y las imágenes que pasan mientras tanto.

Cada número de esta página lo calcula la propia página a partir de unos pocos datos con nombre: imágenes por segundo, ping, ticks del servidor y distancia. Los valores marcados como ejemplo son supuestos para ilustrar el mecanismo, no medidas de un juego concreto.

Haces clic. A 60 imágenes por segundo, cada imagen dura 16,7 ms.

Todo empieza en tu mesa: pulsas el botón de disparo y tu equipo lo registra. Tu pantalla no muestra un movimiento continuo, sino imágenes sueltas. A 60 imágenes por segundo, cada una se queda 16,7 milisegundos, porque 1.000 ms divididos entre 60 dan 16,7 ms. Esa duración es la regla con la que se mide todo lo que viene después.

Tu disparo sale como un paquete hacia el servidor y tarda la mitad del ping: 10 ms.

Tu equipo no dispara en el juego: avisa al servidor. El aviso viaja como un paquete de datos por la red hasta el servidor, en este ejemplo a 500 km. El ping mide la ida y la vuelta de un paquete; con un ping de 20 ms, el viaje de ida cuesta más o menos la mitad, 10 ms. Durante ese tiempo el servidor todavía no sabe nada de tu disparo.

Ni la luz va más rápido: en fibra recorre unos 200.000 km por segundo.

Gran parte del camino es fibra óptica, y dentro del vidrio la luz va a unos 200.000 km por segundo, dos tercios de su velocidad en el vacío. Ir y volver a un servidor a 500 km cuesta por eso al menos 5 ms, sin nada que hacer al respecto. Los otros 15 ms de este ping se van en rodeos de la ruta, routers y colas de espera.

El servidor no reacciona al instante: calcula por ticks, uno cada 15,6 ms.

El servidor no procesa cada paquete en cuanto llega. Avanza la partida a golpes, llamados ticks: en este ejemplo 64 por segundo, uno cada 15,6 ms. Tu paquete llega en el milisegundo 10 y espera 5,6 ms hasta el siguiente tick. Solo entonces el servidor comprueba dónde estaba cada jugador y decide si tu disparo ha dado en el blanco.

La respuesta vuelve en otros 10 ms. Ida más vuelta: eso es el ping.

Tras el tick, el servidor envía el resultado de vuelta y el paquete tarda otros 10 ms en llegarte. La ida y la vuelta suman los 20 ms del ping, que es justo lo que mide la herramienta ping. Si añades la espera del tick, desde tu clic hasta que ves el resultado pasan 25,6 ms en este ejemplo con buena conexión.

Solo durante el ping, tu pantalla pinta 1,2 imágenes sin saber si acertaste.

Mientras el paquete va y viene, tu pantalla no se detiene. Con 20 ms de ping y 16,7 ms por imagen, pasan 1,2 imágenes solo durante el ping, y 1,5 hasta que llega el resultado. Es la misma cuenta que hace la calculadora de la ficha de ping: el ping dividido entre lo que dura cada imagen.

Lo que ves del rival ya es pasado: salió del servidor hace 10 ms.

Lo mismo vale en la otra dirección: la posición del rival que ves en pantalla salió del servidor hace 10 ms. Tu disparo tarda otros 10 ms en llegar y espera 5,6 ms al tick. Cuando el servidor lo juzga, han pasado 25,6 ms desde la imagen que viste, y un rival que corre a 5 m/s se ha movido 0,13 m.

Mismo disparo con 150 ms de ping: el rival ya se movió 0,77 m y fallas.

Ahora el mismo disparo con un servidor a 9.000 km y 150 ms de ping. Solo la fibra ya exige 90 ms de ida y vuelta. Pasan 9 imágenes durante el ping y el rival se desplaza 0,77 m antes de que el servidor juzgue. Si el servidor comprobara el presente, tu mira apuntaría a un hueco: con 20 ms aciertas, con 150 ms fallas.

Por eso muchos juegos rebobinan: el servidor vuelve 153,1 ms atrás y juzga lo que viste.

Muchos juegos de disparos usan compensación de lag: el servidor guarda las posiciones recientes, vuelve atrás el tiempo que tardó tu información, aquí 153,1 ms, y comprueba el disparo contra lo que tú veías. El disparo cuenta. El precio lo paga el otro jugador: puede recibir un impacto cuando en su pantalla ya estaba a cubierto. Ese reparto lo decide el netcode de cada juego.

Límites del modelo: el ping es constante, reaccionas en el mismo instante en que ves al rival y no se cuentan el retraso del monitor, del ratón ni el búfer de interpolación que añaden muchos juegos. Por eso las cifras son un mínimo: en un juego real el retraso total es mayor.

Términos del diccionario

Fuentes

  1. Optical fiber, Wikipedia (velocidad de la señal en fibra: unos 200.000 km/s)
  2. Round Trip Time (RTT), MDN Web Docs (ida y vuelta de un paquete, medida con ping)
  3. Netcode, Wikipedia (tick y tickrate del servidor)
  4. Gabriel Gambetta, Entity Interpolation (ves a los demás jugadores en el pasado)
  5. Gabriel Gambetta, Lag Compensation (el servidor reconstruye lo que viste)