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

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

Слишком строгая серверная проверка Over-strict server validation

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

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

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

Почему Жёсткие критерии вроде «расстояние, доступное за один тик» или «допуск по кулдауну 0 ms» → Следствие Если из-за джиттера две команды приходят в одном тике, это засчитывается как нарушение правил → На экране Откидывание назад, умение отклоняется, хотя кулдаун прошёл

Симптомы
Откидывание назад, Съеденные действия / роллбэк
Факторы
Джиттер
У кого
Только у меня
Когда
Изредка, случайно, В движении и при смене локации
Ответственные
Основной ответственный Команда разработки · Разработка сервера
Команда разработки: задачи
Проверять по накопленному лимиту (token bucket), давать запас на пинг и джиттер.
На графике
Случайные всплески · число отказов серверной проверки и коррекций позиции
Где смотреть
Писать в лог сервера для каждого отказа проверки и коррекции позиции причину, число команд этого игрока, пришедших в том тике, и интервал прихода после предыдущей команды
Подтверждает
Отказы и коррекции приходятся на моменты, когда в одном тике пришли 2 команды и больше, а суммарное перемещение и число применений за несколько секунд укладываются в правила
Опровергает
Если и в сумме за несколько секунд правила превышены, возможно, это реальное превышение скорости или чит. Если отказы приходятся на одного провайдера и вечернее время, смотреть причину «Ложные срабатывания проверок у абонентов одного провайдера»
Чем проверить
Нужны логи и метрики игрового сервера или клиента

Источники

  1. Source SDK 2013: player.cpp Valve
    Бюджет обработки команд, который копится каждый тик (максимум sv_maxusrcmdprocessticks, 24 тика), позволяет принять команды, пришедшие пачкой. В комментарии разработчиков сказано, что при более строгом ограничении микрофризы получали и обычные игроки
  2. RFC 2697: A Single Rate Three Color Marker IETF
    Token bucket: решение принимается по средней скорости (CIR) и допустимому размеру всплеска (CBS)

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

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

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

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