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

Анатомия игровых лагов › Проблемы только у части игроков

Игрок с плохой связью движется на чужих экранах рывками Laggy player seen by others (bursty inputs)

ID причины pt-slow-burst · Основной ответственный Команда разработки · Разработка сервера · Совместно Внешние стороны · Внешние стороны

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

Ввод игрока с плохим подключением приходит на сервер неравномерно, пачками. Если сервер в каждом тике применяет всё, что успело прийти, другие видят, как этот персонаж замирает, а потом делает сразу несколько шагов.

Почему Команды перемещения тормозящего игрока приходят неравномерно: в одном тике 0, в другом по 2–3 → Следствие Сервер применяет их разом в тике получения, и позиция персонажа меняется ступеньками → На экране На экранах других игроков только этот персонаж замирает, а потом разом проскакивает вперёд. Остальное в порядке

Симптомы
Перемотка, Телепортация
Факторы
Джиттер, Потери
У кого
Странно выглядит один персонаж, Один регион или провайдер
Когда
Всегда, В движении и при смене локации
Ответственные
Основной ответственный Команда разработки · Разработка сервера · Совместно Внешние стороны · Внешние стороны
Команда разработки: задачи
Применять команды равномерно через буфер ввода на игрока, применять их с исходными интервалами по порядковым номерам ввода. Одного увеличения буфера интерполяции на чужих экранах мало: на сервере сама история позиций уже ступенчатая.
Внешние стороны: задачи
Посоветовать тормозящему игроку проводное подключение и проверку Wi-Fi и роутера.
Цифры для ориентира
При джиттере 80 ms на 20-тиковом сервере (тик 50 ms) число команд за тик скачет от 0 до 3.
На графике
Высоко только у некоторых · число применённых команд за тик по игрокам, джиттер по игрокам
Где смотреть
В захвате пакетов на стороне сервера отфильтровать пакеты от игрока, на которого жалуются, посчитать, сколько их приходит за каждый интервал тика (например, 50 ms), и сравнить с другими игроками. Если есть лог сервера, смотреть по игрокам число применённых команд перемещения за тик и порядковые номера ввода
Подтверждает
Только пакеты этого игрока приходят пачками, то 0, то 2–3 за тик, у него высокие джиттер и потери, а пакеты других игроков приходят равномерно. Когда этот игрок переходит на кабель, становится лучше
Опровергает
Если пачками движутся сразу несколько персонажей, причина в задержке тика сервера или в подключении того, кто смотрит. Если приход и применение равномерны, а дёргается только этот персонаж, проблема в интерполяции или отображении на стороне смотрящего
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)
Подробнее
В архитектуре с авторитетным сервером это нормальное поведение. Лаги одного тормозящего игрока другие видят только как «странное движение этого игрока», а на управление других игроков и движение монстров они не влияют. Однако всё, что напрямую связано с этим игроком (обмен, механики группы, проверки попаданий в PvP), тоже запаздывает.

Источники

  1. Peeking into VALORANT's Netcode Riot Games
    Сервер кладёт пришедший ввод в очередь перемещений каждого игрока по порядку тиков, а если очередь пуста, заполняет её предсказанием. Коррекцию видит только этот игрок, остальные видят плавное движение
  2. State Synchronization Gaffer On Games
    Даже пакеты, отправленные 60 раз в секунду, приходят пачками: 2 в одном кадре, 0 в следующем
  3. Source SDK 2013: player.cpp Valve
    Пришедшие пачкой команды распределяются по тикам сервера (meter out)

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

Тот же слой: Проблемы только у части игроков

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

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