Пока пакеты не приходят, клиент продолжает двигать объект с последней известной скоростью, а обнаружив ошибку, возвращает его назад.
Почему Пакеты перестали приходить, и объект продолжает двигаться с последним направлением и скоростью → Следствие На самом деле противник остановился или сменил направление → На экране Персонаж противника долго идёт в одну сторону, а потом резко переносится в настоящую позицию или проходит сквозь стену. Если пакеты приходят неравномерно, он то убегает вперёд, то его тянет обратно, и движение выглядит дрожащим
Основной ответственный Команда разработки · Разработка клиента
Команда разработки: задачи
Ограничить время экстраполяции (например, 200–250 ms), при ошибке плавно сводить позицию к настоящей.
Цифры для ориентира
При скорости 6 m/s ошибка всего в 300 ms даёт расхождение 1,8 m.
На графике
Случайные всплески · время экстраполяции, расстояние коррекции позиции
Где смотреть
Записывать, сколько времени другие персонажи рисовались по экстраполяции и на какое расстояние поправлялась позиция после прихода нового пакета
Подтверждает
На каждом перерыве в пакетах время экстраполяции растёт без ограничения, а коррекция после него достигает нескольких метров
Опровергает
Если экстраполяция короткая, а телепортация всё равно есть, велики сами потери и задержка пакетов: смотреть подключение и маршрут
Чем проверить
Нужны логи и метрики игрового сервера или клиента
Источники
Interpolation and extrapolation (Netcode for Entities 6.5)Unity Если следующий снапшот не пришёл вовремя, экстраполяция продолжает движение с тем же направлением и скоростью и часто ошибается, поэтому её ограничивают (в Unity по умолчанию 20 тиков, при 60 Hz около 1/3 с)
Peeking into VALORANT's NetcodeRiot Games Если опоздавшие или потерянные данные восполняются догадкой и она неверна, картинка расходится с сервером, и персонаж при коррекции скачет или будто скользит