Left 4 Dead 2

Left 4 Dead 2

Ocen: 146
Лерп. Интерполяция. Гайд по настройке лерпа. (Oxford only)
Autorstwa: Smith
В данной статье мы постараемся развеять все мифы касательно лерпа и дать советы по его настройке.
Гайд является переводом данной статьи: http://www.l4dnation.com/wiki/Cl_interp
Я являюсь лишь автором перевода.
   
Przyznaj nagrodę
Ulubione
Ulubione
Usuń z ulubionych
Что такое интерполяция?
Интерполяция помогает сделать игровой процесс более плавным, даже при потере пакетов, или в ожидании обновления пакетов.

При использовании значения интерполяции в 100 мс, всё, что вы видите (другие игроки/позиции объектов), является интерполированным состоянием игры, которое получается из: последнее полученное состояние игры (последнее обновление/тик) и состояние игры 100 миллисекунд назад.

В сущности, это означает, что при cl_interp 0.1 то, что вы видите будет отставать на 100 мс от последнего состояния игры, полученного вами. Добавьте к этому пинг в 50 мс, и, по итогу, то, что вы видите, отстает от происходящего на сервере на 150 мс при каждом обновлении.
На что влияет интерполяция?
Среднестатистический игрок не будет заморачиваться над значением интерполяции, но в соревновательных играх интерполяция может сыграть большую роль:
  • Как рано/поздно вам следует дать приклад (и где будет находиться охотник или жокей, когда вы махнете прикладом)
  • Как близко или далеко вам нужно находиться к Выжившему, когда вы царапаете или бьете его (к примеру: длинные руки Танка)
  • Сколько времени у вас есть на скит/приклад до того, как Зараженный коснётся вас
  • Насколько сильно всё изменится если у вас начнется потеря пакетов
  • Насколько плавно будет выглядеть происходящее вокруг вас
О основном, лерп может исполнять много разных важных ролей в ситуациях на ближней дистанции. Большинство игроков получат преимущество от настройки значения лерпа под себя. Обратите внимание, что значение вашего лерпа не имеет ничего общего с тем, действительно ли вы теряете пакеты или нет. На потери пакетов влияет состояние сети в целом. Интерполяция – это лишь одно из решений подёргиваний, вызванных потерей пакетов и ожиданием между пакетами.

Поэтому выставив значение интерполяции на 0, вы потеряете плавность (многие люди жалуются на дёргающихся мобов и Особых Зараженных), но получите самое последнее состояние игры из возможных при вашем пинге, а также даст вам больше времени на то, чтобы дать приклад Охотнику и т.д.
Какое значение интерполяции мне следует поставить?
В целом, вам следует ставить значение интерполяции ниже 100 мс. Многие люди меняют свой лерп при смене сторон, но очень часто это осуждается остальными игроками. Текущие конфогловские конфиги отслеживают смену лерпа и сообщают о ней в общий чат, а лиги и турниры разрабатывают правила насчет смены лерпа.

При игре за Выживших лерп следует ставить как можно ниже. Максимальное используемое значение обычно не превышает 67 мс, а минимальное 0 мс. Другие популярные значения: 10 мс, 16.7 мс, 20 мс, 33 мс, 38 мс, 40 мс.

Важно упомянуть, что время между тиками в L4D2 составляет 33 мс, поэтому мы видим разделение в предпочтении < 1 тика интерполяции и > 1 тика интерполяции. Теоретически, многие из этих значений излишни, и мало влияют на то, что вы будете видеть на своем экране и как сервер высчитывает ваше положение и ваши удары.

За Зараженных будут более полезны более высокие значения лерпа, так как Выжившие чаще всего убегают в противоположную от Зараженных сторону. Обычно Выживший старается выйти из зоны поражения Танка. Но если танк использует высокое значение интерполяции, то он не увидит, что Выживший начинает двигаться на дополнительные 100+ мс. Используя очень высокие значения лерпа, такие как 400 мс или 500 мс, данная проблема значительно усугубляется. Этот же феномен возникает, когда Особые Зараженные царапают Выжившего. По этой причине Конфогл блокирует значения лерпа выше 100 мс.

В общем и целом, не смотря на то, что вы можете по-прежнему выполнять свои функции в роли Зараженного с лерпом 0, рекомендуется выставлять ваш лерп таким образом, чтобы вам было удобно играть с ним за обе стороны. Также, чем выше ваш лерп, тем сложнее вам будет напрыгивать на Выжившего или пробивать его, так как позиция Выжившего, которую вы видите, будет не соответствовать его положению на сервере. Вы будете чаще замечать, что вы пролетаете насквозь выжившего и не попадаете по нему.
Как мне выставить значение своей интерполяции?
Значение вашей интерполяции (лерп) определяется по следующей формуле, основанной на ваших консольных переменных (cvars):
min(max(cl_interp, cl_interp_ratio/cl_updaterate),0.5f)

Теперь по-русски: ваше значение cl_interp ограничено до минимума значением cl_interp_ratio/cl_updaterate и до максимума в 0.5 (500 мс), и устанавливается значением консольной переменной cl_interp. Обратите внимание, что, например, cl_interp 0.04 равняется 40 мс.

При выставлении своего лерпа, будет отличной идеей выставить переменную cl_updaterate как можно выше, cl_interp_ratio как можно ниже, а cl_interp выставить по вашему желанию. Это минимизирует лимит, наложенный значением cl_interp_ratio/cl_updaterate и позволит выставить нужный вам лепр.

Например, я использую лепр 16.7, и мой autoexec выглядит следующим образом:
rate 100000 cl_cmdrate 100 cl_updaterate 100 cl_interp 0.0167 cl_interp_ratio -1 // фактическое значение опустится до минимального значения, дозволенного сервером.

Обычные сервера допускают 60 updaterate и минимальное количество точек интерполяции (cl_interp_ratio ) в 1. Конфогловские сервера позволяют выставлять значение updaterate на 100 и позволяют ставить количество точек интерполяции 0.

Обратите внимание, что исходя из представленного выше кода, обычно советуют увеличивать ваше значение rate до максимального позволенного в L4D2 равного 100000, что в свою очередь даст серверу знать, что вы способны получать до 100000 байтов, с которым может справиться любое современное соединение. Я также предпочитаю ставить равные значения для cl_cmdrate и cl_updaterate, не смотря на то, что из-за технических ограничений движка, в техническом плане нет особой разницы используете ли вы 30 или 100 cmdrate.

Если вы будете использовать приведенный выше код, то отредактируйте значение cl_interp по вашему желанию, в зависимости от того, какой лерп вы используете. Обратите внимание, что на обычных серверах, таких, как официальный, минимальный лерп, который вы сможете использовать – 16.7.
Так какой же лерп мне следует использовать?
Если после прочтения данного гайда, вы всё еще не уверены какой лерп вам следует использовать, я бы рекомендовал вам поначалу придерживаться лерпа 16.7. Если вы видите слишком много дергающихся анимаций, увеличивайте его, пока не почувствуете себя комфортно. Лерп свыше 50 гарантирует большинству пользователей плавные анимации зараженных.
Лерп на Net Graph’е
Значение вашего лерпа отображается на net graph’е примерно посередине:


Это значение, в большинстве случаев, является вашим финальным высчитанным значением, т.е. это значение будет результатом, высчитанным по приведенной выше формуле min/max. Это может быть полезным при определении того, выставлены ли ваши консольные переменные правильно или нет.
ЦВЕТА на net graph’е, по правде говоря, ничего особого не значат. Всё, что они делают, так это вводят в заблуждение и порождают слухи, подобно этим:
Początkowo opublikowane przez Рандомный Игрок:
35 на серверах Valve оранжевого цвета является нормой. Он является предупреждением о возможной потере пакетов. Желтый цвет говорит о потере пакетов. Я знаю это всё с чужих слов и решил не ознакомляться с существующей литературой на эту тему.
Желтый Лерп
Частота кадров сервера такова, что его собственный внутренний интервал обновления ниже чем ваше время интерполяции. Обычно серверы L4D2 высчитывают 30 кадров в секунду, поэтому, опять же, все значения лерпа ниже 33 мс буду отображаться желтым цветом на обычных серверах. На самом деле, ваша интерполяция, конечно же, функционирует по-прежнему и всё с ней в порядке.
Оранжевый Лерп
Początkowo opublikowane przez Рандомный Игрок:
Ваше значение интерполяции выставлено ниже чем 2/updaterate. Этот цвет может появиться только если не вызвано состояние Желтого лерпа.
Все эти сказки про Оранжевый лерп также являются бредом сивой кобылы. По сути Оранжевый лерп является предупреждением, что если у вас начнется потеря пакетов, то объекты вокруг начнут дергаться. Значение, которое они используют (2/updaterate), не является абсолютно произвольным. Если вы попробуете выставить значение вашей интерполяции 2/updaterate или выше, вы получите 2 дополнительных буферных пакета в диапазоне вашей интерполяции в случае, если пакет обновлений будет потерян. Еще раз, Оранжевый лерп является лишь предупреждением о том, что объекты вокруг вас могут начать дергаться при потере пакетов.

Ни желтый, ни оранжевый лерп на net graph’е не является показателем потери пакетов или каких-то проблем с сетью.

Если у вас желтый лерп, то будет неплохой идей попросить администратора сервера повысить частоту кадров на сервере. На практике цвет лерпа не имеет никакого значения.
Вопросы и Мифы о лерпе
Początkowo opublikowane przez Рандомный Игрок:
Правда ли, что нужно выставлять свой лерп в значение близкое к пингу?
Нет, не нужно. Лерп никаким образом не взаимодействует с пингом. Лерп лишь делает анимации более плавными. Сервер в курсе вашего текущего пинга и всегда автоматически корректирует хитбоксы, когда высчитывает попадания на стороне сервера.
Początkowo opublikowane przez Рандомный Игрок:
Правда ли, что чем выше лерп, тем более неточными будут хитбоксы? Я джае могу увидеть различия, когда включаю отображение хитбоксов!
Нет. Хитбкосы, которые вы видите с командой sv_showhitboxes, являются хитбоксами на стороне сервера. Когда сервер высчитывает попали вы выстрелом или нет, он берет во внимание не только ваш текущий пинг, но и ваш текущий лерп и на свой стороне сдвигает хитбоксы другого игрока назад во времени, чтобы скорректировать это смещение.
Początkowo opublikowane przez Рандомный Игрок:
Правда ли, что нужно наносить удар прикладом в разное время в зависимости от пинга или лерпа вражеского охотника? Правда ли, что охотники с более высоким лерпом нагнут меня?
Нет. Установление сервером факта напрыгивания Охотника или Жокея, также, как и атаки Громилы, отличается от установления факта царапания или удара Танка. Неважно, какой пинг/лерп использует Охотник, Жокей или Громила, вы всегда должны скитить/бить прикладом/уворачиваться в один и тот же момент. Ваши тайминги зависят только вашего собственного пинга и лерпа.
Początkowo opublikowane przez Рандомный Игрок:
Мой лерп стал цветным! Я теряю пакеты!
Нет. Лерп не может вызвать потерю пактов. См. секцию цветов выше.
Komentarzy: 24
heroin weekend 5 marca o 12:48 
как выключить лерп
WellDare 17 grudnia 2022 o 13:02 
Ебать минус мозг
Vojd 26 marca 2021 o 12:13 
на виселицах висели и годами будучи скелетами
Smith  [autor] 23 marca 2021 o 12:20 
Если хотя бы у одного человека сгорела жoпa с этого туториала, значит он был создан не зря, а следовательно, он будет продолжать висеть :B1:
black(pink) metal 23 marca 2021 o 11:27 
ты бы ещё рассказал как графику настраивать,если ты совсем придурок,то не считай остальных игроков такими. Будь добр удали эту бесполезные каракули безногого павлина под видом "Руководства".
kapkan 11 września 2016 o 5:12 
я так понял, попадание танка по сурву расчитывается на стороне клиента?
Vojd 22 maja 2016 o 8:14 
гайд херня. важны лишь два бинда: на лерп 0 (спец сервера) и на лерп 100 (обычные)
Smith  [autor] 22 maja 2016 o 7:47 
net_graph 4
Grybok 22 maja 2016 o 7:40 
Вопрос как ты открыл Лерп на Net Graph’е,эти колонки?
Vojd 8 kwietnia 2016 o 10:28 
Дак что мне писать блядь в конфиг? команда какая? что за хрень?