한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Libro blanco del lag en juegos › Diseño del netcode

Ventanas de tiempo cortas que el ping consume Timing window too short for latency + reaction

ID de la causa sy-short-window · Responsable principal Desarrollo de servidor (Equipo de desarrollo) · También Desarrollo de cliente (Equipo de desarrollo), Infraestructura de servidores (Equipo de infraestructura)

Abrir la ficha interactiva con gráficos y simulaciones →

Si el tiempo para reaccionar es corto, como en las esquivas, los parries o los bloqueos, el ping consume ese margen y aparecen ataques imposibles de evitar.

Por qué Ventanas de tiempo cortas, como un aviso de ataque del jefe de 0.5 s o una ventana de parry de 0.2 s → Efecto El aviso se ve tarde (latencia servidor → cliente + interpolación) y tu input también llega tarde (latencia cliente → servidor + espera del tick) → En pantalla Esquivaste a tiempo y aun así te golpea, el parry no sale

Síntomas
Acción perdida / rollback, Input lag
Factores
Latencia
A quién afecta
Solo yo, Solo una función
Cuándo
Al hacer ciertas acciones
Responsable
Responsable principal Desarrollo de servidor (Equipo de desarrollo) · También Desarrollo de cliente (Equipo de desarrollo), Infraestructura de servidores (Equipo de infraestructura)
Tareas (Equipo de desarrollo)
Servidor: programar el aviso del ataque en hora del servidor y enviarlo por adelantado, ampliar la ventana de tiempo según el ping (compensación de lag). Cliente: reproducir el aviso recibido a la hora del servidor programada.
Tareas (Equipo de infraestructura)
Poner servidores cerca de las regiones con muchos jugadores (servidores regionales) para reducir el propio ping.
Cifras de referencia
Con 150 ms de ping y 100 ms de interpolación, el aviso tarda unos 0.18 s en aparecer en tu pantalla y tu input unos 0.1 s en llegar al servidor. Si se suman los 0.25 s de reacción humana, un aviso de 0.5 s es casi imposible.
En el gráfico
Alto solo en algunos · Tasa de fallos de esquivas y parries (por rango de ping)
Dónde mirar
Registrar en el log del servidor la hora de inicio y de fin de la ventana de tiempo, la hora de llegada del input del jugador al servidor y el RTT de ese jugador, y ver la tasa de fallos por rangos de ping (p. ej., de 50 en 50 ms)
Se confirma si
Cuanto más alto es el rango de ping, más alta es claramente la tasa de fallos, y los inputs fallidos llegan poco después de cerrarse la ventana (dentro del RTT más el tiempo de interpolación)
Se descarta si
Si la tasa de fallos es parecida en todos los rangos de ping, es la dificultad del patrón. Si el input llegó dentro de la ventana y aun así cuenta como fallo, revisar el código de registro de impactos o la validación del servidor
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego

Fuentes

  1. Factors influencing the latency of simple reaction time (Frontiers in Human Neuroscience, 2015) Frontiers
    Tiempo de reacción simple medio: unos 231 ms (213 ms corrigiendo la latencia de los dispositivos); los grandes estudios recientes dan 233–400 ms
  2. Latency and Player Actions in Online Games (Communications of the ACM, 2006) ACM
    Cuanto más precisa es una acción y más corto su plazo, más sensible es a la latencia (límites: unos 100 ms en primera persona, unos 500 ms en tercera persona, unos 1,000 ms con vista omnisciente)
  3. NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
    Método para programar eventos según la hora del servidor (ServerTime) para que todos los clientes los reproduzcan en el mismo instante

Ver también

Misma capa: Diseño del netcode

Causas de otras capas con el mismo síntoma (Acción perdida / rollback)

Ver la ficha interactiva con gráficos y simulaciones