Игры

Вопрос для вас

Защита или нападение?

Всего ответов: 5134
Поискун

lerp и его особенности



Некоторые игроки Left 4 dead меня спрашивают, что это такое лерп,
зачем его нужно менять и как настроить лерп. Надеюсь эта статья поможет сделать вам выбор.

lerp в css и left 4 dead одно и тоже.


Клиент-сервер - сетевой код игры созданый на основе обмена пакетами между сервером и клиентом. В этих пакетах информация о текущем состоянии игрового мира (расположении объектов и т.д.)
cl_updaterate - число пакетов которые клиент получает от сервера каждую секунду.
Интерполяция - получение промежуточных значений какой-либо величины, путем усреднения крайних. Интерполяция служит для сглаживания картинки, т.к. пакетов приходящих от сервера зачастую не хватает для того чтобы картинка смотрелась плавно.
Настройки клиентской части по умолчанию: cl_updaterate 20; cl_interp_ratio 2; cl_interp 0.1.
Как это работает:

cl_updaterate 20 означает, что клиент будет получать от сервера пакеты 20 раз в секунду, разница между пакетами - 50 мс. Чтобы предотвратить лагание от возможной потери пакета, интерполяция должна происходить в промежуток времени равный 2*50=100 мс. Чтобы обеспечить такую интерполяцию, необходимо задать параметр cl_interp 0.1. Множитель два означает, что мы хотим интерполировать две области между тремя пакетами пришедшими от сервера: "._._.". Если мы хотим итерполировать только одну область "._.", мы должны изменить соответствующий параметр. Этим параметром является переменная cl_interp_ratio. Она может принимать значения 2, 1, 0. Как не сложно догадаться, если эта переменная равна нулю, то интерполяция на клиенте будет отсутствовать. В общем случае формула для промежутка такова: lerp = cl_interp, но не может быть меньше cl_interp_ratio/cl_updaterate. Итак, тут мы приходим к самому определению:

lerp - промежуток времени в котором пакеты полученные клиентом будут интерполироваться.

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

От теории перейдем к практике. С самого начала кажется, что в идеале lerp должен быть равен 0, ведь при таком значении lerp нет интерполяции и клиент видит то же, что видит сервер. Вы НЕ можете себе позволить lerp = 0 по двум причинам.

1) Ваш интернет канал оставляет желать лучшего.
Предположим, что вы счастливый обладатель модема или в вашем городе широкополосный интернет пока по карману только избранным или ваш сосед по общежитию по вечерам заливает на торрент пачку свежих немецких фильмов. Это значит, что вы можете себе позволить исключительно скромные сетевые настройки. Скорее всего те, что стоят по умолчанию, а быть может ваши дела еще хуже. При cl_updaterate 20, даже если все пакеты благополучно приходят от сервера к клиенту, вы видите 20 кадров в секунду (не имеет значения, какой у вас компьютер). Человеческий глаз воспринимает эту картинку как дерганую. Если же, не дай бог, потери (choke) есть, то играть вы просто не сможете, так как будете видеть слайдшоу.

2) Настройки серверов непозволяют клиентской части выставлять необходимые значения некоторых переменных.
Главная проблема тут безусловно cl_interp_ratio, на данный момент ни один европейский серверный конфиг не позволяет играть с этой переменной равной нулю. На данный момент я не знаю ни одного паблика с такими настройками. Только несколько КВ-серверов позволяют отключать интерполяцию. Сейчас добавление sv_client_min_interp_ratio 0 (эта команда отвечает за минимальное значение cl_inerp_ratio, которое может иметь клиент находясь на этом сервере) в евроконфиге скорее всего вопрос времени, и я пологаю, ждать осталось не долго. Но факт остается фактом: значение этой серверной переменной по умолчанию равно 1, а это значит, что клиент не может сделать lerp меньше, чем 10 мс.

Если вторая причина вопрос времени, то вот с первой причиной совладать способов не очень много.
Если у вас плохой коннект и постоянно теряются пакеты, то lerp=0 не для вас. Вам нужна интерполяция cl_interp_ratio 2.
Если же интернет не проблема, то тогда рецепт очень прост. Поднимайте рэйты: cl_cmdrate 66; cl_updaterate 66; rate 20000 - это ваш минимум. В идеале на 100 тиковом сервере у вас должно быть cl_cmdrate 100; cl_updaterate 100; rate 25000. Если сервер позволяет, ставьте cl_interp_ratio 0; cl_interp 0.
66, а тем более 100, кадров в секунду - вполне достаточно, чтобы комфортно воспринимать игру без интерполяции и лагов. Если же сервер не позволяет вам играть без интерполяции (пока что, это самый распространенный случай), рецепт очень прост:

1) Напишите в консоли cl_updaterate и запомните значение этой переменной
2) Напишите в консоли cl_interp_ratio 1
3) Разделите 1 на значение cl_updaterate
4) Напишите в консоли cl_interp и присвойте ему то что получили в пункте 3

Например:
Я играю с cl_updaterate 66, это значит что в 3 пункте я получу 0.0152, следовательно мне нужно написать cl_interp 0.0152. Это даст мне lerp = 15. Что уже довольно неплохо. Так как интерполяция таких временных промежутков не слишком сильно добавляет неточности вашим действиям.
Если вы пишите значение cl_interp меньшее, чем cl_interp_ratio/cl_updaterate, то на net_graph lerp будет отображаться оранжевым цветом. Если же lerp окрашен в желтый, то значит значение lerp больше промежутка времени между отсылаемыми пакетами на этом сервере. В обоих случаях lerp (а значит cl_interp) нужно увеличивать пока тот не станет белым. Если вы будете пытаться играть с НЕ БЕЛЫМ lerp, то вы обрекаете часть своих выстрелов застревать в промежутке клиент-сервер.

Вывод:
Добивайтесь минимального значения lerp, оставляя его белым на каждом сервере, на котором играете. Это позволит вам снизить к минимуму все проблемы, связанные с вашим соединением с интернетом.

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

Чтобы не париться с математикой, можно забиндить клавиши так:

alias lerpa+ "incrementvar cl_interp 0.01 0.09 +0.0001"// cl_interp +0.0001
alias lerpa- "incrementvar cl_interp 0.01 0.09 -0.0001"// cl_interp -0.0001
alias lerpb+ "incrementvar cl_interp 0.01 0.09 +0.001" // cl_interp +0.001
alias lerpb- "incrementvar cl_interp 0.01 0.09 -0.001"// cl_interp -0.001
alias lerpc+ "incrementvar cl_interp 0.01 0.09 +0.01"// cl_interp +0.01
alias lerpc- "incrementvar cl_interp 0.01 0.09 -0.01"// cl_interp +0.01

bind "INS" "lerpa+"
bind "DEL" "lerpa-"
bind "HOME" "lerpb+"
bind "END" "lerpb-"
bind "PGUP" "lerpc+"
bind "PGDN" "lerpc-"

Знаете то чего не написано тут? Делитесь своим опытом настройки лерпа в комментах.

Запомните, лерп не самое важное в этой игре, порой правильные тренировки в Left 4 dead дадут больший эффект чем все вместе вязтые настройки.



07.11.2010 · Просмотров: 31499
Комментировать
31. Гость · 11.02.2012 12:52 Материал
Спасибо за статью. Играю с друзьями по LAN. Выделенного сервака нет, просто один из игроков хостит на своей машине (map XXX versus). Какие настройки (lerp, ratio, rate и пр.) будут актуальны?

30. Гость · 11.02.2012 12:51 Материал
Спасибо за статью. Играю с друзьями на LANе, выделенного сервера нет, просто один из игроков хостит на своей машине (map %MAPNAME% versus). Подскажите какие настройки актуальны для такой игры? (cmdrate, interp, ratio и пр.)

29. Twist · 27.05.2011 08:16 Материал
А у меня скорость интернет канала урезали( до 3 мб/с
Играл с такими рейтами: cl_updaterate 30
cl_cmdrate 30
cl_interp 0.045
cl_interp_ratio 1
А щас стало лагать пздц, мобы дергаются жуть, я вот хз с какими сейчас играть :(

28. SPectre · 11.02.2011 22:12 Материал
alias lerpa+ "incrementvar cl_interp 0.01 0.09 +0.0001"// cl_interp +0.0001
alias lerpa- "incrementvar cl_interp 0.01 0.09 -0.0001"// cl_interp -0.0001
alias lerpb+ "incrementvar cl_interp 0.01 0.09 +0.001" // cl_interp +0.001
alias lerpb- "incrementvar cl_interp 0.01 0.09 -0.001"// cl_interp -0.001
alias lerpc+ "incrementvar cl_interp 0.01 0.09 +0.01"// cl_interp +0.01
alias lerpc- "incrementvar cl_interp 0.01 0.09 -0.01"// cl_interp +0.01

bind "INS" "lerpa+"
bind "DEL" "lerpa-"
bind "HOME" "lerpb+"
bind "END" "lerpb-"
bind "PGUP" "lerpc+"
bind "PGDN" "lerpc-"


27. gta144 · 11.02.2011 22:00 Материал
а скажите скрипт на лерп

26. Guest · 03.11.2010 09:49 Материал
Странное мнение.

25. hs++ · 03.11.2010 02:12 Материал
Л4Д - другая игра. Апдейтрейт и интерп тут вообще не зависят друг от друга, а вот, например, кс или ДоД...это уже другое дело.

24. Guest · 03.11.2010 00:42 Материал
Было бы хорошо ограничить лерп в л4д как и в кс - минимальный лерп - ратио 1. и ниже нельзя. никаких там нулей,10, и тд.

23. guest · 01.11.2010 13:45 Материал
Справка у спектре не стандарт

19. lekan · 29.10.2010 02:31 Материал
дайте лерп 100 и пинг 0 я бы вам показал как надо играть

21. икс · 29.10.2010 03:16 Материал
бомжыть на лево и направо biggrin

18. Sv1sh · 29.10.2010 01:40 Материал
главное не лерп, главное это руки :D

14. ch0s · 28.10.2010 12:20 Материал
рас-борщ

12. R45 · 27.10.2010 16:45 Материал
не поверишь, но лагает на самом деле крайне редко. можешь даже пинг заценить

13. m4DFest · 27.10.2010 23:17 Материал
омг ссаный гей с лерпом 0,кстати так вот кого чост называл норм троллем D

15. икс · 28.10.2010 15:43 Материал
не спращивайте лерп у лекана народ как сказал мадфест..... biggrin

16. lekan · 28.10.2010 15:46 Материал
у меня лерп 10 в первой части и 0 во второй, мне так комфортнее играть, я считаю что играю лучше вас, и мне похуй на ваше тупое мнение tongue

17. m4DFest · 29.10.2010 00:01 Материал
ХАХХАХАХАХАХААХААХАХАХАХАХХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХХАХАХАХАХАХАХАХАХАХАХА ХАХААААААААААААААААААХАХАХАХАХАХАХАХАХАХАААА

20. lekan · 29.10.2010 02:34 Материал
нуб посмеялся, крута biggrin

22. m4DFest · 29.10.2010 11:17 Материал
бомжан сагрился biggrin

10. икс · 27.10.2010 14:21 Материал
если лерп ниже 40 это уже логадром как так люди играют пзц happy и все ради того чтобы убить ханта......

8. R45 · 27.10.2010 12:25 Материал
а х-рей спалил мои настройки =(
http://www.xraygaming.com/xac....521.jpg

7. SPectre · 27.10.2010 10:14 Материал
ежу понятно

6. lekan · 27.10.2010 01:10 Материал
- слышал про Spawn'a , команду Fnatic, Virtus pro, думал, мечтал узнать какие настройки стоят и них - это было неправильно. Держи мышку как тебе удобно, ложи клавиатуру как тебе нравится, ставь те настройки на которых тебе комфортно играть, бинди клавиши на которые тебе удобно нажимать, играй в свою, честную игру и у тебя всё получится.
Ответить
Нихрена ниче не получится biggrin до уровня спауна вырастают единицы happy

5. SPectre · 26.10.2010 20:10 Материал
и вообще все эти вопросы про настройки это не совсем правильно, такое моё мнение. я вспоминаю себя года 3 назад, когда я первые месяцы играл в CS 1.6, слышал про Spawn'a , команду Fnatic, Virtus pro, думал, мечтал узнать какие настройки стоят и них - это было неправильно. Держи мышку как тебе удобно, ложи клавиатуру как тебе нравится, ставь те настройки на которых тебе комфортно играть, бинди клавиши на которые тебе удобно нажимать, играй в свою, честную игру и у тебя всё получится.

4. SPectre · 26.10.2010 18:07 Материал
стандарт.

9. икс · 27.10.2010 14:19 Материал
ну я почти поверил что стандар,ну почти wink

11. SPectre · 27.10.2010 15:17 Материал
эммм) не понял твоего сообщения, ты думаешь что у меня что то поменяно? статью не я ведь писал, я скопировал с сайта gпо игре day of defeat source.

3. hellknight · 26.10.2010 16:35 Материал
Эту статейку читал буквально на днях ;D
Вопрос к Спектру: какие у тебя значения этих переменных? (lerp, cl_updaterate и т.д.)

2. asdfgg · 26.10.2010 10:52 Материал
У меня вот нельзя выставить апдейт рейт выше 60 с чем это связано?

1. икс · 25.10.2010 19:15 Материал
добавлю малость все сервера в л4д 30 тиковые такчто больше чем 30 пакетов хер получишь smile апдейт завышаеться только для понижения лерпа и не более....

Имя *:
Email *:
Код *:
купить steam игры дешево для PC
Профиль

Гость


После регистрации вы попадете в рай :).
Логин
Пароль
Климат контроль

Купить steam ключи

N= 1
Гостей: 1
Pro users: 0
Последние комменты

Good post. I learn something totally new and challenging on blogs I stumbleupon

Thanks designed for sharing such a good idea, paragraph is pleasant, thats why i

Hi, after reading this amazing article i am too delighted to share my experience

My developer is trying to persuade me to move to .net from PHP. I have always di

Men dating men participation out of, consistency, and the dream of relationships