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)
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
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
Snapshot CompressionGaffer 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
Quake III Arena source: code/server/sv_snapshot.cid 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
tc-netem(8) — Linux manual pageiproute2 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
Using Network Emulation in Unreal EngineEpic 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