Lerp

Тема в разделе "Полезные советы", создана пользователем SKIF, 20 янв 2011.

  1. SKIF

    SKIF Дух

    Сообщения:
    2.470
    Симпатии:
    0
    Баллы:
    0
    Доброго времени суток. Поискав и скомпановав материал, хочу рассказать (объяснить), что же такое LERP и за что данный параметр отвечает. Данный параметр вы можете увидеть при помощи команды net_graph 3.
    Как ранее говорили разработчики, значение lerp должно помочь игрокам, правильно определить параметры подключения.
    Если все нормально, то он должен быть белым,
    если значечение отображается желтым, то клинет получает меньше обновлений, попросту лагает,
    если оранжевым, то это говорит о потерях пакетов из-за плохого соединения или слишком больших размеров пакетов обновлений.

    Итак, lerp - промежуток времени в котором пакеты полученные клиентом будут интерполироваться.
    Интерполяция - получение промежуточных значений какой-либо величины, путем усреднения крайних. Интерполяция служит для сглаживания картинки, т.к. пакетов приходящих от сервера зачастую не хватает для того чтобы картинка смотрелась плавно.

    По сути, значение lerp определяет пропорцию между пакетами, пришедшими от сервера, и пакетами, сгенерированными на клиенте. Чем меньше значение lerp, тем меньше пакетов будет "придумано" на клиентской стороне, тем точнее то, что вы видите, будет соответствовать тому, что происходит на сервере. Чем больше значение lerp, тем большую долю в вашей картинке будет играть интерполяция

    То есть дорисовывать на клиенте действия игроков на сервере, данные которые реально были недополучены, как сказано выше "придумывать". Проще говоря, человек выбегает из-за угла, ты его не видишь, по причине потери пакета или большого пинга, то клиент тебе его дорисует. Интерполяция зависит также от пинга. Величина задержки (в миллисекундах) при обсчете положения моделей в игре устанавливается командой cl_interp_ratio, которая грубо рассчитывается как 100/updaterate* и может принимать целые значения (нас интересует самый распространенный диапазон от 1 до 5). Дефолтным считается значение cl_interp_ratio 1 (примерно ссоответствует задержке 10 мс). Однако при игре на сервере с пингом под 100 значение cl_interp 0.01 может привести к тому, что ваша реальная задержка составит 100 мс, а отрисовывание у вас выставлено на 10 мс, в результате лаги могут только усугубиться.

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

    lerp = 1000/cl_updaterate * cl_interp_ratio (оптимальное значение 2).

    В CS:S lerp регулируется командами:
    cl_interp_ratio (Если не 0, то 2)
    cl_interp (Если не 0, то cl_interp_ratio / cl_updaterate)

    Значение cl_interp расчитывается: cl_interp = cl_interp_ratio / cl_updaterate
    Если грубо, то:
    Пинг 5-10 - cl_interp 0.01 cl_interp_ratio 1
    Пинг 20-30 - cl_interp 0.02 cl_interp_ratio 2
    Пинг 40-50 - cl_interp 0.03 cl_interp_ratio 3
    и дальше по аналогии.

    Источник: ПРОЕКТ Т44