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

Анатомия игровых лагов › L1 Процесс игрового клиента

Чрезмерная экстраполяция (dead reckoning) Over-extrapolation / dead reckoning

ID причины cg-extrap · Основной ответственный Команда разработки · Разработка клиента

Открыть карточку в основной версии с иллюстрациями и экспериментами →

Пока пакеты не приходят, клиент продолжает двигать объект с последней известной скоростью, а обнаружив ошибку, возвращает его назад.

Почему Пакеты перестали приходить, и объект продолжает двигаться с последним направлением и скоростью → Следствие На самом деле противник остановился или сменил направление → На экране Персонаж противника долго идёт в одну сторону, а потом резко переносится в настоящую позицию или проходит сквозь стену. Если пакеты приходят неравномерно, он то убегает вперёд, то его тянет обратно, и движение выглядит дрожащим

Симптомы
Телепортация, Микрофризы
Факторы
Потери, Джиттер
У кого
Только у меня
Когда
Изредка, случайно
Ответственные
Основной ответственный Команда разработки · Разработка клиента
Команда разработки: задачи
Ограничить время экстраполяции (например, 200–250 ms), при ошибке плавно сводить позицию к настоящей.
Цифры для ориентира
При скорости 6 m/s ошибка всего в 300 ms даёт расхождение 1,8 m.
На графике
Случайные всплески · время экстраполяции, расстояние коррекции позиции
Где смотреть
Записывать, сколько времени другие персонажи рисовались по экстраполяции и на какое расстояние поправлялась позиция после прихода нового пакета
Подтверждает
На каждом перерыве в пакетах время экстраполяции растёт без ограничения, а коррекция после него достигает нескольких метров
Опровергает
Если экстраполяция короткая, а телепортация всё равно есть, велики сами потери и задержка пакетов: смотреть подключение и маршрут
Чем проверить
Нужны логи и метрики игрового сервера или клиента

Источники

  1. Interpolation and extrapolation (Netcode for Entities 6.5) Unity
    Если следующий снапшот не пришёл вовремя, экстраполяция продолжает движение с тем же направлением и скоростью и часто ошибается, поэтому её ограничивают (в Unity по умолчанию 20 тиков, при 60 Hz около 1/3 с)
  2. Peeking into VALORANT's Netcode Riot Games
    Если опоздавшие или потерянные данные восполняются догадкой и она неверна, картинка расходится с сервером, и персонаж при коррекции скачет или будто скользит

Смотрите также

Тот же слой: L1 Процесс игрового клиента

Причины с тем же симптомом (Телепортация) на других слоях

Карточка в основной версии с иллюстрациями и экспериментами