[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Про lerp
ReLoadДата: Воскресенье, 27 Июн 2010, 20:30 | Сообщение # 1
Лейтенант
Группа: Тихий пользователь
Сообщений: 43
Награды: 0
Репутация: 6
Замечания: 0%
Статус: Оффлайн

Небольшой ликбез
Клиент-сервер - сетевой код игры созданый на основе обмена пакетами между сервером и клиентом. В этих пакетах информация о текущем состоянии игрового мира (расположении объектов и т.д.)
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 минимальным и белым.

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

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-"



 
VampiroДата: Понедельник, 28 Июн 2010, 03:57 | Сообщение # 2
Главный
Группа: Администраторы
Сообщений: 12929
Награды: 39 За 100 Сообщений
Репутация: 20357
Статус: Оффлайн

Прошу поиграться с настройками как тут описано, потестить на разных серверах и дать отзывы - при каких лучше стреляется.
Для информации - на сервере ДМ-расслабуха тикрейт 66.
Чем больше вариантов серверов переберём - тем лучше.


Игра - это симулятор поведения в реале. www.rasslabyxa.ru
 
VampiroДата: Суббота, 03 Июл 2010, 22:40 | Сообщение # 3
Главный
Группа: Администраторы
Сообщений: 12929
Награды: 39 За 100 Сообщений
Репутация: 20357
Статус: Оффлайн

Quote (Jhon)
У меня показатель lerp становится белым только при cl_interp 0.034 и равняется 34 мс... - это на ДМ

Я потестил... lerp=34 мс у тебя потому, что в конфиге по-умолчанию есть такая команда:

"cl_interp_ratio" = "2" ( def. "2.0" )
client
- Sets the interpolation amount (final amount is cl_interp_ratio / cl_updaterate).

Команда клиентская. Как я понял - это сколько делать предсказаний (интерполяций) положений противника на экране у клиента.

Если поставить cl_interp_ratio" = "0", то предсказаний не будет и все будут дёргаться на экране, правда всегда будет видно реальное положение противника.

Если поставить cl_interp_ratio" = "1", то будет 1 предсказание, чуть меньше дёрганий, но менее точное попадание.

Если поставить cl_interp_ratio" = "2", то будет 2 предсказания, всё плавно, но фиг попадёшь :).

Сейчас я поставил cl_interp_ratio" = "0" и lerp у меня =0
При этом cl_interp = 0


Игра - это симулятор поведения в реале. www.rasslabyxa.ru
 
VampiroДата: Четверг, 08 Июл 2010, 02:24 | Сообщение # 4
Главный
Группа: Администраторы
Сообщений: 12929
Награды: 39 За 100 Сообщений
Репутация: 20357
Статус: Оффлайн

Вообщем.... после некоторых тестов пришёл к выводу, что самый оптимальный вариант такой:

rate "40000"
cl_cmdrate "33"
cl_lagcomp_errorcheck "0"
cl_lagcompensation "1"
cl_updaterate "33"
cl_smooth "1"
cl_smoothtime "0.01"
cl_interp_threadmodeticks "0"
cl_pred_optimize "2"
cl_interp_ratio "1"
cl_interp "0"
dsp_enhance_stereo "1"
dsp_volume "1"
dsp_slow_cpu "1"
r_3dnow "1"
r_3dsky "0"
r_sse2 "1"

При этом lerp = 30 оранжевого цвета.
Но стреляется изумительно.


Игра - это симулятор поведения в реале. www.rasslabyxa.ru
 
ReLoadДата: Суббота, 10 Июл 2010, 12:49 | Сообщение # 5
Лейтенант
Группа: Тихий пользователь
Сообщений: 43
Награды: 0
Репутация: 6
Замечания: 0%
Статус: Оффлайн

Всем привет!Вроде как у вас на сервере cl_cmdrate 66 и cl_updaterate 66 и если прописать по 33 выкидывать с сервера не будет ли? wink
P.S.
r_mmx 1
Включает поддержку процессоров MMX. Небольшое увеличение fps, нет потери качества картинки

r_sse 1
Включает поддержку процессоров SSE. Небольшое увеличение fps, нет потери качества картинки

r_sse2 1
Включает поддержку процессоров SSE2. Небольшое увеличение fps, нет потери качества картинки

r_3dnow 1
Включает поддержку технологии 3DNOW (только для AMD). Небольшое увеличение fps, нет потери качества картинки

r_3dsky 0
Убирает марево вокруг 3D объектов. Большое прибавление к FPS, небольшая потеря качества картинки

r_shadows 0
Хочу сказать одну вещь про тени в Half-life 2: они реально фиговые. Отключаем их нафиг, пока Valve не улучшит их. Большое прибавление к FPS, небольшая потеря качества картинки

net_graph 3
Команда рисует график скорости вашего соединения в нижнем право углу экрана. Отличный мониторинг за вашим соединением. Небольшое уменьшение FPS, но очень полезная тулза.

r_decal_cullsize 0
эта команда устанавливает минимальный размер отображаемых предметов в пикселях. Позволяет видеть отверстия от пуль в стенах с большего расстояния. Очень незначительное падение fps. Улучшение графических эффектов

cl_smooth 0
Не знаю, что эта команда делает, за исключением того, что она реально снижает ваш FPS (изначально включена). Среднее увеличение fps. Без ухудшения графических эффектов.

cl_phys_props_enable 0
Ооочень большая помощь! Убирает маленькие интерьерные модельки с карты, разгружая тем самым ваш процессор. Всякие листочки, бутылки, мусор... Бочки и ящики, естественно остаются. Огромный прирост FPS, небольшая потеря качества картинки.

cl_pushaway_force
Большинство серверов принудительно установят значение в 20000. Убирает "пихание" при столкновении с бочками и другими физическими объектами. Значительно улучшает движение.

fog_enable 0
Вот еще одна команда, для улучшения FPS. Выключает дальний случайный туман. Команда никак не влияет на дым от гранаты, только туман. Большая прибавка к FPS, небольшое ухудшение картинки.

cl_allowupload "0"
Команда запрещает загрузку файлов на сервер с вашего компьютера. Улучшает пинг.

cl_allowdownload "0"
Команда запрещает скачку файлов с сервера на ваш компьютер. Улучшает пинг.

r_lod 0
Ухудьшает или улучшает видимость далекой модели игрока. 0 - плохая модель, больше FPS. -5 - хорошая модель, меньше FPS. Немного ухудшается картинка.

cl_show_bloodsprays 0 Больше FPS, меньше потери крови =).

cl_ejectbrass 0
Убирает показ отстрелянных гильз. Прирост к FPS.

Добавлено (10.07.2010, 06:00)
---------------------------------------------

Добавлено (10.07.2010, 12:49)
---------------------------------------------
2Vampiro.Я прописываю почти тоже самое,только без dsp_slow_cpu "1" и r_3dnow "1" .Первый параметр для слабых проциков, а второй вообще для проциков AMD, а уменя INTEL C2Quad 9450 2.66Ггцх4(но я его чуток подразогнал по шине 400х8=3200Ггц).А так вообщем респект тебе Vampiro за то что настройки выложил свои biggrin biggrin biggrin , люди почитают пропишут, может меньше лагать будут. smile smile smile




Сообщение отредактировал ReLoad - Суббота, 10 Июл 2010, 06:00
 
бр@тишк@_102RUSДата: Вторник, 05 Апр 2011, 21:59 | Сообщение # 6
ЗЛОЙ АДМИН
Группа: Ветеран Расслабуха.ру
Сообщений: 1109
Награды: 14 За 100 Сообщений
Репутация: 933
Замечания: 0%
Статус: Оффлайн

Почистил[color=green]

 
Мир_ВамДата: Среда, 14 Сен 2011, 22:56 | Сообщение # 7
Полковник
Группа: Ветеран Расслабуха.ру
Сообщений: 165
Награды: 4 За 100 Сообщений
Репутация: 200
Замечания: 0%
Статус: Оффлайн

Ну лерп это конечно хорошо, но не советую заходить на норм кнайф сервера))

P.S.
Забанят.
 
RootДата: Понедельник, 26 Дек 2011, 14:48 | Сообщение # 8
Полковник
Группа: Ветеран Расслабуха.ру
Сообщений: 193
Награды: 5 За 100 Сообщений
Репутация: 130
Замечания: 0%
Статус: Оффлайн

Практически всегда играю на лерпе максимально приближенном к 0, даже если при этом он желтого цвета, правда на некоторых серваках при таком лерпе не реально играть, приходится опытным путем подбирать играбельный лерп. А так чаще всего настройки такие:

rate 60000
cl_cmdrate 100
cl_updaterate 100
cl_interp_ratio 0
cl_interp 0


Главная задача военной подготовки всех армий мира снятие с человека психологического запрета на убийство себе подобных...
 
[RAZER]Дата: Понедельник, 26 Дек 2011, 14:58 | Сообщение # 9
КУРАТОР RASSLABYXA.ru
Группа: Ветеран Расслабуха.ру
Сообщений: 3424
Награды: 14 За 100 Сообщений
Репутация: 4333
Замечания: 0%
Статус: Оффлайн

Root, раскрываешь свои секреты ))) dry dry dry

 
RootДата: Понедельник, 26 Дек 2011, 15:55 | Сообщение # 10
Полковник
Группа: Ветеран Расслабуха.ру
Сообщений: 193
Награды: 5 За 100 Сообщений
Репутация: 130
Замечания: 0%
Статус: Оффлайн

Quote (|RAZER|)
Root, раскрываешь свои секреты )))


Типа того :)) Но самое главное в игре на мой взгляд умение пользоваться радаром и наушниками, все остальное мелочи.


Главная задача военной подготовки всех армий мира снятие с человека психологического запрета на убийство себе подобных...
 
MuMagicДата: Понедельник, 26 Дек 2011, 17:52 | Сообщение # 11
Генерал-лейтенант
Группа: Ветеран Расслабуха.ру
Сообщений: 971
Награды: 4 За 100 Сообщений
Репутация: 626
Замечания: 0%
Статус: Оффлайн

Ща радаром фиг попользуешься после обновления.
 
SpaMДата: Понедельник, 26 Дек 2011, 23:04 | Сообщение # 12
Рядовой
Группа: Тихий пользователь
Сообщений: 5
Награды: 0
Репутация: 15
Замечания: 0%
Статус: Оффлайн

Да бан в стиме ето плохо !

Простите неграмотний !

 
  • Страница 1 из 1
  • 1
Поиск: