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

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

Нет буферизации ввода умений No input/spell queue

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

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

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

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

Симптомы
Задержка ввода, Съеденные действия / роллбэк
Факторы
Задержка
У кого
Только у меня, Только одна функция
Когда
При определённом действии
Ответственные
Основной ответственный Команда разработки · Разработка клиента · Совместно Команда разработки · Разработка сервера
Команда разработки: задачи
Клиент: ввести окно буфера ввода, чтобы нажатие в течение некоторого времени до конца кулдауна (например, 0,3–0,4 с) принималось и сразу отправлялось на сервер. Сервер: принимать ввод, пришедший чуть раньше, и выполнять его в момент окончания кулдауна.
Цифры для ориентира
В связке с кулдауном 1 с при пинге 150 ms между умениями пустует 0,15 с и больше, и за то же время применяется больше чем на 13% меньше умений.
На графике
Высоко с самого начала · пустой промежуток между умениями, RTT (пинг)
Где смотреть
Писать в лог сервера для каждого персонажа время окончания кулдауна, время прихода запроса на следующее умение и время его выполнения, сравнивать пустой промежуток между ними с RTT игрока
Подтверждает
От окончания кулдауна до выполнения следующего умения всегда проходит примерно RTT, и чем выше пинг игрока, тем длиннее промежуток и тем меньше умений применено за то же время
Опровергает
Если промежуток постоянный и не зависит от пинга, это заложено в дизайне (глобальный кулдаун или длина анимации). Если промежуток лишь иногда резко растёт, смотреть джиттер и потери или превышение бюджета тика
Чем проверить
Нужны логи и метрики игрового сервера или клиента
Подробнее
Например, в World of Warcraft есть окно буфера ввода, и игрок может настроить его длину. Если окно длиннее пути туда и обратно, пинг между приёмами связки почти не заметен.

Источники

  1. Latency and Player Actions in Online Games (Communications of the ACM, 2006) ACM
    В EverQuest 2 с ростом задержки урон персонажа падает и бои затягиваются (при росте с 0 до 500 ms бой длиной около 2 минут удлиняется на 5 с)

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

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

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

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