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

Libro blanco del lag en juegos › Problemas que solo afectan a algunos

Pérdida del snapshot de referencia (baseline) Lost baseline for delta compression

ID de la causa pt-baseline · Responsable principal Desarrollo de servidor (Equipo de desarrollo) · También Desarrollo de cliente (Equipo de desarrollo)

Abrir la ficha interactiva con gráficos y simulaciones →

Cuando el servidor envía “solo lo que cambió desde la última vez”, si se pierde la información completa que se envía una vez al principio (la referencia), los cambios posteriores no se pueden aplicar.

Por qué El paquete con la información completa (referencia) de una entidad se pierde o se descarta antes de procesarse → Efecto El cliente no tiene sobre qué aplicar los cambios siguientes y los ignora → En pantalla Esa entidad no se ve, o aparece de repente mucho después

Síntomas
Entidades invisibles / fantasma, Teletransporte
Factores
Pérdida de paquetes
A quién afecta
Solo un cliente en tu PC, Solo yo
Cuándo
De vez en cuando, al azar
Responsable
Responsable principal Desarrollo de servidor (Equipo de desarrollo) · También Desarrollo de cliente (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Servidor: reenviar siempre la referencia hasta recibir el acuse de recibo (ACK), y generar los cambios solo respecto a referencias que el cliente confirmó haber recibido. Cliente: enviar el acuse de recibo (ACK) de la referencia solo después de aplicarla, y al recibir cambios de una entidad desconocida, volver a pedirla al servidor.
En el gráfico
Picos aleatorios · Cambios recibidos para entidades desconocidas
Dónde mirar
Cotejar las veces que el cliente descartó cambios recibidos sin referencia, y los ID de esas entidades, con la hora en que el servidor envió la referencia de esa entidad y la hora en que recibió el ACK. Reproducirlo en un entorno de desarrollo añadiendo pérdida (loss de tc netem, porcentaje de pérdida de paquetes de la emulación de red de Unreal)
Se confirma si
Para la entidad invisible, el servidor envió la referencia y, aunque no recibió el ACK, siguió enviando solo cambios, que el cliente descartó
Se descarta si
Si la referencia recibió su ACK y se aplicó en el cliente y aun así no se ve, apunta a “Pérdida del mensaje de desaparición (entidad fantasma)” o “Confusión por reutilización de IDs de entidad”
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego

Fuentes

  1. Snapshot Compression Gaffer On Games
    Los cambios solo deben generarse respecto a una referencia (baseline) que el otro lado confirmó (ack), y el estado inicial se envía aparte
  2. Quake III Arena source: code/server/sv_snapshot.c id Software
    Se comprime en delta respecto al snapshot que confirmó el cliente, y si esa referencia es demasiado antigua se envía el snapshot completo
  3. tc-netem(8) — Linux manual page iproute2
    Herramienta de pruebas que imita una red real añadiendo latencia y jitter (delay TIME JITTER) y pérdida (loss random PERCENT) a los paquetes salientes
  4. Using Network Emulation in Unreal Engine Epic Games
    Pruebas con latencia mínima y máxima y porcentaje de pérdida de paquetes en el servidor y el cliente; en la consola se configura con comandos como NetEmulation.PktLag

Ver también

Misma capa: Problemas que solo afectan a algunos

Causas de otras capas con el mismo síntoma (Entidades invisibles / fantasma)

Ver la ficha interactiva con gráficos y simulaciones