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

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

Чрезмерная компенсация задержки Excessive lag compensation

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

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

Если отматывать время слишком далеко в пользу атакующего, в того, кто уже спрятался, всё равно попадают.

Почему Ради атакующего с высоким пингом сервер проверяет попадание с большой отмоткой назад → Следствие На экране того, в кого попали, он уже был в укрытии → На экране «В меня попали, когда я уже был за стеной», преимущество у игроков с высоким пингом

Симптомы
Съеденные действия / роллбэк
Факторы
Задержка
У кого
Только у меня, Один регион или провайдер
Когда
При определённом действии
Ответственные
Основной ответственный Команда разработки · Разработка сервера
Команда разработки: задачи
Ограничить глубину отмотки (например, 200–250 ms), атакующему с более высоким пингом отматывать только до лимита, а остальное он компенсирует упреждением сам.
На графике
Высоко только у некоторых · глубина отмотки для каждого попадания (по пингу атакующего)
Где смотреть
Писать в лог проверок на сервере для каждого попадания глубину отмотки, RTT атакующего и серверное время, когда цель зашла в укрытие. В development-сборке рисовать на экране отмотанные хитбоксы (в движке Source это sv_showlagcompensation)
Подтверждает
Попадания из жалоб «попали, когда я уже был за стеной» приходятся на атакующих с большой глубиной отмотки, а глубина отмотки растёт вслед за пингом атакующего без всякого лимита
Опровергает
Если попадания по игроку за стеной бывают и при малой глубине отмотки, проблема в хитбоксах или проверке столкновений. Если высокий пинг у того, в кого попали, его перемещение просто поздно дошло до сервера
Чем проверить
Нужны логи и метрики игрового сервера или клиента
Подробнее
Проверка попадания с отмоткой работает по принципу «приоритет стреляющего». Предложено и исключение «приоритет цели»: если цель на своём экране уже зашла в безопасное место, отмотка не выполняется.

Источники

  1. Peeking into VALORANT's Netcode Riot Games
    Без лимита отмотки игрок с задержкой 500 ms может попасть по цели через 0,5 с после того, как она ушла в укрытие, поэтому лимит нужен
  2. A Survey and Taxonomy of Latency Compensation Techniques for Network Computer Games (ACM Computing Surveys, 2022) ACM
    Эффект «попадание за углом» (shot around the corner), лимиты отмотки в коммерческих FPS, предложение не отматывать время, если цель уже в безопасности
  3. Source SDK 2013: player_lagcompensation.cpp Valve
    Лимит отмотки в движке Source sv_maxunlag по умолчанию 1 с (максимум 1 с), sv_showlagcompensation показывает на экране отмотанные хитбоксы

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

Тот же слой: Архитектура синхронизации

Причины с тем же симптомом (Съеденные действия / роллбэк) на других слоях

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