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

Libro blanco del lag en juegos › L1 Proceso del juego en el cliente

Búfer de interpolación ausente o demasiado corto Missing/short interpolation buffer

ID de la causa cg-no-buffer · Responsable principal Desarrollo de cliente (Equipo de desarrollo) · También Desarrollo de servidor (Equipo de desarrollo)

Abrir la ficha interactiva con gráficos y simulaciones →

Si el cliente dibuja los paquetes del servidor en cuanto llegan, el jitter (variación en el tiempo de llegada de los paquetes) se ve tal cual en pantalla.

Por qué La posición recibida se dibuja al instante, o el búfer es más corto que el jitter → Efecto Se detiene lo que tarda el paquete retrasado y salta cuando llegan varios juntos → En pantalla Los demás personajes se mueven a trompicones

Síntomas
Tirones
Factores
Jitter
A quién afecta
Solo yo
Cuándo
Siempre
Responsable
Responsable principal Desarrollo de cliente (Equipo de desarrollo) · También Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Cliente: usar un búfer de interpolación y ajustar su longitud automáticamente según el estado de la conexión. Servidor: aplicar compensación de lag (validación con rebobinado) para que el registro de impactos sea correcto aunque se dispare viendo la imagen del pasado que impone el búfer.
Cifras de referencia
Lo habitual es un búfer de unas dos veces el intervalo de envío del servidor (100 ms si llegan 20 actualizaciones por segundo).
En el gráfico
Siempre alto · Intervalo de llegada de paquetes, veces que el búfer de interpolación se vació
Dónde mirar
Registrar en el cliente la distribución del intervalo de llegada de los paquetes del servidor y el número de frames en que no había un siguiente snapshot que interpolar, de modo que el personaje se detuvo o se pasó a extrapolar
Se confirma si
La variación del intervalo de llegada supera a menudo la longitud del búfer de interpolación, y cada vez el búfer se vacía y los demás personajes dan un tirón. Al alargar el búfer, disminuye
Se descarta si
Si los tirones siguen con un búfer suficiente, verificar si el propio intervalo de envío del servidor es irregular (retraso del tick)
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego
Para saber más
Un búfer más largo da más fluidez, pero en la misma medida ves al rival en una posición pasada. Por eso se combina con la compensación de lag: para validar un ataque, el servidor rebobina hasta “el pasado que veía ese jugador”.

Fuentes

  1. Interpolation and extrapolation (Netcode for Entities 6.5) Unity
    Interpolación con búfer, que retrasa a propósito el dibujado para esperar a los paquetes que llegan tarde; cuanto mayor es el búfer, más precisa es, pero más latencia añade
  2. Struct ClientTickRate (Netcode for Entities 6.5) Unity
    Valor predeterminado del búfer de interpolación: InterpolationTimeNetTicks = 2 (dos envíos del servidor)
  3. Physics (Netcode for Entities 6.5) Unity
    Compensación de lag: el servidor busca el mundo de colisiones que veía el cliente en ese tick y decide si hubo impacto

Ver también

Misma capa: L1 Proceso del juego en el cliente

Causas de otras capas con el mismo síntoma (Tirones)

Ver la ficha interactiva con gráficos y simulaciones