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