Tu cliente mueve a tu personaje antes de tener respuesta del servidor; si el servidor lo calcula de otra forma, tu personaje es arrastrado hacia atrás.
Por qué El cliente mueve al personaje antes de la confirmación del servidor (predicción) → Efecto El servidor calcula de otra forma las colisiones, la velocidad de movimiento o los buffs, o no recibe los comandos → En pantalla Cuando llega la confirmación, tu personaje es arrastrado hacia atrás
Al moverse o cambiar de zona, De vez en cuando, al azar
Responsable
Responsable principal Desarrollo de cliente (Equipo de desarrollo) · También Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Cliente: usar el mismo código de movimiento que el servidor, enviar los inputs por duplicado, aplicar las correcciones con suavidad. Servidor: usar el mismo código de movimiento que el cliente, filtrar por número de input los inputs duplicados y procesarlos una sola vez.
Cifras de referencia
La distancia que retrocede tu personaje es “tiempo de desfase × velocidad de movimiento”. Basta con que se pierdan unos pocos comandos para que sea de 1–3 m.
En el gráfico
Picos aleatorios · Correcciones del servidor (errores de predicción)
Dónde mirar
Registrar cuántas correcciones de posición envía el servidor y de qué distancia. En Unreal, las correcciones ClientAdjustPosition del servidor; en Unity Netcode for Entities, contar cuántas veces se revirtió y se recalculó por error de predicción
Se confirma si
Las correcciones se concentran en los momentos de los reportes de rubber banding, y la distancia de corrección es grande una y otra vez con ciertos buffs, terrenos o habilidades de movimiento
Se descarta si
Si las correcciones solo se concentran cuando hay mucha pérdida, apunta a pérdida de los paquetes de input (la conexión). Si no hay correcciones y solo los demás personajes parecen arrastrados: “Extrapolación excesiva (dead reckoning)”
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego
Fuentes
Introduction to prediction (Netcode for Entities 6.5)Unity El cliente y el servidor predicen con el mismo código de simulación; si el resultado difiere del estado del servidor (error de predicción), se revierte y se recalcula, y la corrección se ve