Если сервер немного накапливает ввод каждого игрока и берёт по одной команде за тик, на чужих экранах движение плавное, но момент, когда действие самого игрока подтверждается сервером, сдвигается на столько же.
Почему Сервер накапливает ввод тормозящего игрока в буфере и применяет по одной команде за тик → Следствие Маленький буфер часто пустеет, и персонаж встаёт на месте или сервер двигает его, угадывая по последнему вводу, а большой буфер задерживает подтверждение ввода самого игрока → На экране С маленьким буфером другие видят замирания, с большим результат умений самого игрока появляется поздно (задержка ввода)
Основной ответственный Команда разработки · Разработка сервера · Совместно Команда разработки · Разработка клиента
Команда разработки: задачи
Сервер: автоматически подстраивать размер буфера под состояние подключения каждого игрока, при отставании брать по две команды и догонять, клиентам игроков, у которых буфер часто пустеет, давать команду отправлять ввод раньше. Клиент: по команде сервера отправлять ввод немного раньше (подстройка времени клиента).
Цифры для ориентира
Зависит от игры, но обычно 1–3 тика. VALORANT на 128-тиковом сервере держит серверный буфер ещё короче, в среднем полкадра (около 4 ms). Часто используют адаптивный буфер, который увеличивается только у игроков с большим джиттером.
На графике
Высоко только у некоторых · длина буфера ввода и число опустошений по игрокам
Где смотреть
Писать на сервере для каждого игрока число команд в буфере ввода на каждом тике, число случаев, когда буфер опустел и был заполнен догадкой по последнему вводу, и время от прихода ввода до его применения
Подтверждает
У игроков с маленьким буфером много опустошений, и в эти моменты на чужих экранах они ненадолго замирают, а у игроков с большим буфером время от ввода до применения выросло на длину буфера
Опровергает
Если буфер почти не пустеет, а на чужих экранах видны микрофризы, проблема в интерполяции на стороне смотрящего. Если буфер короткий, а задержка ввода большая, причина в самом RTT или в двойном ожидании тика
Чем проверить
Нужны логи и метрики игрового сервера или клиента
Источники
Peeking into VALORANT's NetcodeRiot Games Сервер сдвигает отсчёт времени клиента так, чтобы очередь ввода давала минимальную задержку, но успевала поглотить неравномерный приход. Цель серверной буферизации: в среднем полкадра