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

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

Двойное ожидание тика Double tick quantization

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

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

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

Почему Полученный запрос обрабатывается в следующем тике → Следствие Результат тоже копится и уходит в следующем тике отправки → На экране Сетевой пинг низкий, а отклик стабильно запаздывает примерно на 1,5 интервала тика. На 10-тиковом сервере в среднем 0,15 с, в худшем случае 0,2 с

Симптомы
Задержка ввода
Факторы
Задержка
У кого
Весь сервер
Когда
Всегда
Ответственные
Основной ответственный Команда разработки · Разработка сервера
Команда разработки: задачи
Отправлять ответ сразу в тике обработки, поднять тикрейт, важные ответы отправлять немедленно.
Цифры для ориентира
На 10-тиковом сервере один тик длится 100 ms, поэтому одно только ожидание тиков добавляет в среднем 150 ms, в худшем случае 200 ms. При одном ожидании в среднем 50 ms.
На графике
Высоко с самого начала · время от прихода запроса до отправки ответа
Где смотреть
В захвате пакетов на стороне сервера измерить интервал между приходом пакета запроса и уходом пакета ответа, когда тестовый аккаунт несколько раз выполняет одно и то же действие (например, использует предмет). Если есть лог сервера, смотреть время прихода запроса, номер тика обработки и время отправки ответа
Подтверждает
Время внутри сервера в среднем около 1,5 интервала тика, максимум около 2 интервалов, и от RTT оно не зависит
Опровергает
Если время внутри сервера около половины интервала тика, ожидание тика только одно. Если оно скачет и бывает дольше интервала тика, смотреть превышение бюджета тика
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)

Источники

  1. Peeking into VALORANT's Netcode Riot Games
    Пришедший ввод ждёт границы тика до одного тика, и ещё один кадр уходит на применение и отправку. Чем выше тикрейт, тем меньше задержка
  2. VALORANT's 128-Tick Servers Riot Games
    Часть задержки приходится на сеть, часть на тикрейт сервера
  3. NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
    Изменения NetworkVariable копятся и уходят пачкой в каждом сетевом тике

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

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

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

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