Старый 14.11.2007, 13:22   #1
Unreal
Registered User
 
Аватар для Unreal
 
Регистрация: 22.06.2004
Адрес: Bendery
Сообщений: 85
Сказал(а) Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Сказал(а) Фууу!: 0
Сказали Фууу! 0 раз(а) в 0 сообщениях
Unreal is on a distinguished road
Отправить сообщение для Unreal с помощью ICQ
Сетевой код CS как бороться с лагами

С недавнего времени сижу на ИДК... раньше на Мониторинге играл в одной локалке с севером...так и проблем не было никогда с пингом и прочими делами... а теперь качество очень заботит... пинг 30 - 60 до сервера это не нормально.. вот и решил заняться вопросом оптимизации...
в связи с этим решил выложить статейку нарытую... надеюсь поможет ...

статья находилась на нескольких сайтах... так что законного владельца и не искал... ))) он не против.

Сетевой код в CS1.6
Описание и рекомендации команд, связанных непосредственно с сетевой, online игрой в Counter Strike 1.6


Общая информация:


1)cl_cmdrate: команда определяет сколько пакетов в секунду пошлете вы, клиент к серверу. Очевидно, чем выше енто значение, тем быстрее сервер реагирует на действия которые вы совершаете (поворот мышью, прыжок, бег, стрельба и прочее). Итак, если вы на выделенке и притом оочень хорошей- то смело ставьте высокое значение. Если же вы посадили на свой DSL Cable или что там у вас ишо и своего друга- вы наверняка будете наблюдать частые и высокие скачки лага. Енто все из-за высокого значения команды. Большинство высокоскоростных доступов к и-нет не обеспечивают своего пользователя высоким upload (к примеру, большинство aDSL которые предоставляют компании- енто 768download- где-то 90КБ/128upload- где-то 16КБ), который так необходим для ентой команды.

2)cl_updaterate: енто противоположность cl_cmdrate- количество пакетов/секунду которые вы получаете от сервера (То бишь ваша download скорость). Здесь, чем выше значение, тем более вы синхронизированны с сервером. Так как только сервер решает, попадают ваши выстрелы или нет, то вам нужно большое количество обновлений информации с сервера- ради эксперимента, попробуйте поставить значение cl_updaterate в 5-10- и попробуйте убить кого. Получится интересная картина- вы будете ишо стрелять (одни выстрел например) по противнику, а на его мониторе, он вас как секунду назад завалил.

3)sv_maxupdaterate: команда контролирует количество пакетов/секунду которое позволено серверу послать клиенту. Из ентого следует что если на сервере sv_maxupdaterate "60", а на клиенте cl_updaterate "101" то клиент будет обновляться со значением cl_updaterate "60"

4)sys_ticrate: команда устанавливает количество "кадров" в секунду, которые сервер может вычислить. По умолчанию значение равно 100. Почему серверные fps так важны? А ентот параметр как раз таки и отображает, как "чусвтует себя" сервер. Мы все когда нить играли на ооочень хороших серверах что складывалосьт такое впечатление что они хостуются на Tl-83 plus и мы могли бы покляться что играем мы на LAN а не на HSI-net
sys_ticrate только присваивает максимальное значение fps которые может осилить ваш server. Но на деле сервер не может дотянуть без помощи до такого sys_ticrate- енто связано и с некоторыми процессами в самой операционной среде, но в основном из-за провайдера. Имейте ввиду, что увеличение fps "загружает" и сам процессор сервера. (Кстати такое "увеличение" каким то макаром загружает процессор по qмаксимуму на таких картах как de_inferno и de_aztec). По умолчанию сервер основанный на Win32 выдает среднее fps 64, а на Linux- 50fps. "Ускорение" сервера дает возможность получить fps выше 512 в некоторых случаях. Влияние такое высокого серверного fps достаточно спорное, но я думаю вы с легкостью заметите разницу в игре уже при 200fps.
Целостность- вот главное. Скачки fps со 100 до 512 скорее всего создадут больше проблем, так что разумным будет ограничить sys_ticrate в районе 150-200, если конечно сервер позволяет стабильно работать при 150-200.
Если у вас есть rcon пароль к серверу, вы можете с легкостью проверить серверный fps- напишите rcon stats в консоли, чтобы проверить, "ускорен" ли ваш сервер, временно поставьте значение sys_ticrate "10000" и исполните команду rcon stats. Если ваш fps выше чем 1000- значит "ускорен"

5)ex_interp(интерполяция- это восстановление значения функции в промежуточной точке по известным ее значениям в соседних точках.)
Итак, вы не можете быть синхронизированны с сервером на все 100% в каждую секунду времени, так как вы получаете ограниченное количество обновлений в секунду с сервера. Для примера: [img-right]interp.jpg" border="0"
Данный рисунок отражает линейную интерполяцию круга. Когда увеличивается количество обновлений, интерполированная фигура становится более аккуратной. В Cs данной фигурой выступает движение игрока/в секунду времени. Сервер в данном случае будет тем самым "идеальным кругом" (ведь только сервер имеет абсолютно точную позицию игрока/в кажудую секнду времени), а вот клиенту придется интерполировать между двумя "верными" пакетами.
Вот здесь и появляется ex_interp. Данная команда отражает количество времени (в секундах) для интерполяции между каждым "удачным" обновлением с сервера.Так как интерполяция относится к клиентской части, то естественно возникают неточности и ошибки в самой игре. Так как мы не можем получить 100% точности апдейтов с сервера (особенно в и-нете) то интерполяция играет важную роль в самой игре.


Рекомендации для online игр


rate:
Я практически уверен что значение 20000 будет доступно большинству высокоскоростных и-нет соединений. А вот использование значений выше 20000 может наоборот привести к снижению производительности.
Рекомендую: rate 20000

sv_maxrate:
Значение в большинстве своем равно 0. Обьясню почему это скорее всего не оптимально для online игры. sv_maxrate "0" будет определять значение rate для каждого клиента и пытаться заполнить его заполнить. Представьте что движок HL позволяет игрокам использовать значения rate выше 20000 (например 999999999999), и сервер будет пытаться заполнить все 999999999999. Енто приведет к пустому увеличению нагрузки на канал сервера. Я советую безопасное и вместе с тем хорошее значение sv_maxrate "20000". В большинстве случаев sv_maxrate 0 и sv_maxrate 20000 будут эквивалентны, но береженного бог бережет.
Рекомендую: sv_maxrate 20000

cl_cmdrate:
В идеале значение этой команды должно быть равно серверному(!- большинство людей считают что клиентским- вкорне не верно) fps. Если вы посылаете серверу пакеты чаще чем он способен обработать- (скажем серверный fps=80, а значение cl_cmdrate 101) то некоторые пакеты будут просто "скинуты" сервером, необработаны ( 101-80=21 необработанный пакет). По сути енти 21 пакета погоды не делают, просто приведут к забиванию вашего upload ( и увеличению траффика), что тоже погоды не делает.
Рекомендую: смело ставим cl_cmdrate равное серверному fps либо выше.

ex_interp:
Cтавим в 0 без размышлений. CS автоматически поставит ее значение ex_interp= 1/cl_updaterate ( в консоли увидите “ex_interp forced up to xx msec”). При значении 0, изменение значения команды cl_updaterate будет автоматически менять и значение ex_interp. Я РЕКОМЕНДУЮ МЕНЯТЬ ЗНАЧЕНИЕ ТОЛЬКО CL_UPDATERATE, ПОЗВОЛЯЯ CS поменять значение ex_interp. Вы уже не можете поставить значение ex_interp ниже чем 1/cl_updaterate, а вот ставить его выше- енто уже просто нечестно. Ставить значение выше 1/cl_updaterate приведет к тому, что вам придется стрелять немного позади модельки противника ( получается так, что вы видите проивника немного раньше чем положено). К примеру, при использовании cl_updaterate 101, верное значение ex_interp= 1/101=0.009, но по умолчанию ex_interp= 0.1 а енто выше чем 1/101- вот тут и возникает глюк...
Рекомендую: ex_interp 0- стреляем туда, куда целимся

cl_updaterate:
Бытует мнение что значение данной команды надо подбирать следующим методом: присваиваем значение cl_updaterate 101 и снижаем его до тех пор пока параметр choke ( его можно увидеть, если набрать в консоли команду net_graph 3) не будет равен 0 или ооочень низок. По мне, так choke- енто самое последнее о чем стоит беспокоиться. Правильное значение cl_updaterate- енто более глубокий вопрос чем просто choke. Значение sv_maxupdaterate на сервере для чемпов должно иметь значение 101 ( так настроен сервер для CAL CPL)- из ентого можно сделать вывод что в идеале значение cl_updaterate=101. Однако большинство серверов в online имеют значение sv_maxupdaterate "30" или просто неспособны вычислить 101 sv_maxupdaterate. Из чего следует что сервер просто неспособен послать вам 101 пакет/секунду. Так все таки какое значение? Большинство могут сказать " Я поставлю 101, а сколько дойдет- всё моё", но тут уже играет отрицательную роль высокое значение ex_interp, что нарушит баланс между этими командами.
Для того, чтобы подобрать оптимальное значение cl_upodaterate (ex_interp "0") стави его в 101 и начинаем снижать его до тех пор пока модельки игроков не будут слегка двигаться скачками ( при ex_interp 0 и cl_updaterate 101 - они будут оочень сильно пропускать). Не надо бояться ставить значение cl_updaterate ниже 50 если енто необходимо. Большинство серверов sv_maxupdaterate "30" так что cl_updaterate 30 будет лучшим значением.
Стоит отметить что начинать подборку cl_updaterate надо " сверху вниз" а не наоборот.
Рекомендую: равно серверному fps и не выше sv_maxupdaterate

sys_ticrate:
Для нахождения оптимального значения данной переменной необходимо произвести несколько экспериментов. Прежде всего, если ваш сервер не "ускорен" то значение переменной ticrate выше 100 ни к чему не приведет. Если же сервер находится на хорошей платформе (богатый провайдер), то бишь "ускоренный", у вас появляется место для полета фантазии. Не смотря на то что "чем больше серверное fps тем лучше", эффект от увеличения sys_ticrate выше 200 (а может и еще меньше) на самом деле не окажут такого уж хорошого влияния на игру. А вот использовать sys_ticrate "200" или ниже сделает игру более стабильной даже если придется пожертвовать минимальным количеством производительности. Представьте вдобавок, что компьютер, исползуемый под игровой сервер тянет аж несколько HLDS (например CS1.6 и CZ) и для обоих sys_ticrate "10000" нагрузка на процессор возможно будет черезмерной. Такое положение вещей может привести к потери производительности самой игры. В конце можно добавить, что если вы хотите получить, скажем, 140fps то вам нужно выставить значение sys_ticrate выше предпологаемого где-то на 20-50. (Например сервер может спокойно тянуть 150fps, значит значение sys_ticrate будет 150+30= 180.)
Рекомендую: sys_ticrate 110-180- зависит от качества сервера.


Вот такая вот статейка... немного подредактировал.... ошибки афтора )))
__________________
Учитесь играть в КС....
да прибудет с вами постоянный хэдшот....
смерть читерам!
Offline:  
Старый 14.11.2007, 13:41   #2
Unreal
Registered User
 
Аватар для Unreal
 
Регистрация: 22.06.2004
Адрес: Bendery
Сообщений: 85
Сказал(а) Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Сказал(а) Фууу!: 0
Сказали Фууу! 0 раз(а) в 0 сообщениях
Unreal is on a distinguished road
Отправить сообщение для Unreal с помощью ICQ
Думаю каждый кто дочитал статью судорожно лезет в свой конфиг и пытается подправить нужные значения.... и это правильно. )))

Как вы уже поняли чтоб получить лучшие результаты необходимо знать несколько вещей.
Померить свой пинг до сервера думаю сможет почти каждый...
но вот что делать с FPS сервера... эту инфу получить сложно...
поэтому я предлагаю Дед Мастеру помочь мне провести некоторую работу на благо сервера и всех игроков... создать так называемый анти лаговый конфиг для серверов ИДК...
например три варианта...
те у кого пинг 20-30 в КС ... один набор команд... 30-40 другой... и выше 50 третий... каждый сможет подобрать себе по качеству канала нормальный конфиг для комфортной игры.

Да и сервак должен разгрузиться заметно...уверен у многих стоят значения как для лана... отправляют на сервак сотни пакетов лишних.. поэтому и серваки грузятся...

Кто хочет присоединяйтесь... любая помощь приветствуется.
__________________
Учитесь играть в КС....
да прибудет с вами постоянный хэдшот....
смерть читерам!
Offline:  
Старый 14.11.2007, 18:40   #3
goodgame
Registered User
 
Аватар для goodgame
 
Регистрация: 11.10.2007
Сообщений: 1,898
Сказал(а) Спасибо: 1
Поблагодарили 21 раз(а) в 16 сообщениях
Сказал(а) Фууу!: 2
Сказали Фууу! 2 раз(а) в 2 сообщениях
goodgame is on a distinguished road
Unreal напиши пожалуйста что и сколько ставить.. а то я читал читал, а всё не прочитал... устал ))) так много никогда не читал!
Offline:  
Старый 14.11.2007, 19:29   #4
Unreal
Registered User
 
Аватар для Unreal
 
Регистрация: 22.06.2004
Адрес: Bendery
Сообщений: 85
Сказал(а) Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Сказал(а) Фууу!: 0
Сказали Фууу! 0 раз(а) в 0 сообщениях
Unreal is on a distinguished road
Отправить сообщение для Unreal с помощью ICQ
Цитата:
Сообщение от goodgame
Unreal напиши пожалуйста что и сколько ставить.. а то я читал читал, а всё не прочитал... устал ))) так много никогда не читал!
Что и как ставить это ты сам должен решить ... всё зависит от твоего интернета...если у тебя хороший канал...ты не жалуешься на лаги , то наверно и менять ничего не стоит...а если тебя лагает не по детски... тогда проверь парочку параметров...
какая скорость закачки с портала для начала...
затем пинг до сервера в среднем....
какой фпс у тебя на компе при игре на сервере и какой если с ботами...
напишешь мне всё это и решим что тебе сделать чтоб всё было лучше... за одно и потестируем... напишешь как работает после всех изменений...
__________________
Учитесь играть в КС....
да прибудет с вами постоянный хэдшот....
смерть читерам!
Offline:  
Старый 14.11.2007, 20:05   #5
goodgame
Registered User
 
Аватар для goodgame
 
Регистрация: 11.10.2007
Сообщений: 1,898
Сказал(а) Спасибо: 1
Поблагодарили 21 раз(а) в 16 сообщениях
Сказал(а) Фууу!: 2
Сказали Фууу! 2 раз(а) в 2 сообщениях
goodgame is on a distinguished road
вобщем :
1. с портала 200-220
2. про пинг хз.. незнаю как посмотреть..
3. фпс нестандартный, т.е. когда просто бегаю 90-101 , а когда стреляюсь или чёто ещё, то 50-60... с ботами когда гамаю то 101 напостой..
Offline:  
Старый 14.11.2007, 23:48   #6
Dead-Master
Dead-Master
 
Аватар для Dead-Master
 
Регистрация: 13.02.2003
Адрес: Internet
Сообщений: 33,952
Сказал(а) Спасибо: 40
Поблагодарили 406 раз(а) в 272 сообщениях
Сказал(а) Фууу!: 17
Сказали Фууу! 37 раз(а) в 31 сообщениях
Dead-Master is on a distinguished road
Добавлю что пинг лучше всего проверять не просто:
ping 217.19.212.11 -t

а большими пакетами
ping 217.19.212.11 -l 2000 -t
Offline:  
Старый 15.11.2007, 00:15   #7
Unreal
Registered User
 
Аватар для Unreal
 
Регистрация: 22.06.2004
Адрес: Bendery
Сообщений: 85
Сказал(а) Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Сказал(а) Фууу!: 0
Сказали Фууу! 0 раз(а) в 0 сообщениях
Unreal is on a distinguished road
Отправить сообщение для Unreal с помощью ICQ
Цитата:
Сообщение от goodgame
вобщем :
1. с портала 200-220
2. про пинг хз.. незнаю как посмотреть..
3. фпс нестандартный, т.е. когда просто бегаю 90-101 , а когда стреляюсь или чёто ещё, то 50-60... с ботами когда гамаю то 101 напостой..

Ну вообщем для тебя думаю подойдёт такой расклад...

rate 25000
sv_maxrate 25000
cl_cmdrate 100
cl_updaterate 100
sys_ticrate 120
ex_interp 0,05

Попробуй...думаю должно нормально быть.. потом напишещь после тестов...
__________________
Учитесь играть в КС....
да прибудет с вами постоянный хэдшот....
смерть читерам!
Offline:  
Старый 15.11.2007, 01:14   #8
Dead-Master
Dead-Master
 
Аватар для Dead-Master
 
Регистрация: 13.02.2003
Адрес: Internet
Сообщений: 33,952
Сказал(а) Спасибо: 40
Поблагодарили 406 раз(а) в 272 сообщениях
Сказал(а) Фууу!: 17
Сказали Фууу! 37 раз(а) в 31 сообщениях
Dead-Master is on a distinguished road
sv_maxrate 25000 и sys_ticrate 120
это серверные команды а не клиентские.
Offline:  
Старый 15.11.2007, 21:49   #9
goodgame
Registered User
 
Аватар для goodgame
 
Регистрация: 11.10.2007
Сообщений: 1,898
Сказал(а) Спасибо: 1
Поблагодарили 21 раз(а) в 16 сообщениях
Сказал(а) Фууу!: 2
Сказали Фууу! 2 раз(а) в 2 сообщениях
goodgame is on a distinguished road
Цитата:
Сообщение от Unreal
Ну вообщем для тебя думаю подойдёт такой расклад...

rate 25000
sv_maxrate 25000
cl_cmdrate 100
cl_updaterate 100
sys_ticrate 120
ex_interp 0,05

Попробуй...думаю должно нормально быть.. потом напишещь после тестов...
вобщем нормально.. фпс стабилизировался... хорошо пошло ))
Offline:  
Старый 16.11.2007, 20:27   #10
Unreal
Registered User
 
Аватар для Unreal
 
Регистрация: 22.06.2004
Адрес: Bendery
Сообщений: 85
Сказал(а) Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Сказал(а) Фууу!: 0
Сказали Фууу! 0 раз(а) в 0 сообщениях
Unreal is on a distinguished road
Отправить сообщение для Unreal с помощью ICQ
Цитата:
Сообщение от goodgame
вобщем нормально.. фпс стабилизировался... хорошо пошло ))


Ну и отлично...пока времени мало...много работы... если что на выходных потестирую у себя несколько вариантов... может что-то найду ... у меня тоже не всё гладко дома... есть зависание на пол секунды каждые 15-20 секунд.... надо с этим ещё разобраться ...
__________________
Учитесь играть в КС....
да прибудет с вами постоянный хэдшот....
смерть читерам!
Offline:  
Старый 16.11.2007, 22:52   #11
Dead-Master
Dead-Master
 
Аватар для Dead-Master
 
Регистрация: 13.02.2003
Адрес: Internet
Сообщений: 33,952
Сказал(а) Спасибо: 40
Поблагодарили 406 раз(а) в 272 сообщениях
Сказал(а) Фууу!: 17
Сказали Фууу! 37 раз(а) в 31 сообщениях
Dead-Master is on a distinguished road
Ну кое что и я сегодня сделал со своей стороны, чтобы улучшить (стабилизировать) пинг в моменты пиковых нагрузок.
Offline:  
Старый 17.11.2007, 00:45   #12
FoolBOT
Registered User
 
Аватар для FoolBOT
 
Регистрация: 07.06.2007
Адрес: Counter-Strike,de_dust2
Сообщений: 490
Сказал(а) Спасибо: 1
Поблагодарили 7 раз(а) в 6 сообщениях
Сказал(а) Фууу!: 13
Сказали Фууу! 1 раз в 1 сообщении
FoolBOT is on a distinguished road
Отправить сообщение для FoolBOT с помощью ICQ
Цитата:
Сообщение от Dead-Master
Ну кое что и я сегодня сделал со своей стороны, чтобы улучшить (стабилизировать) пинг в моменты пиковых нагрузок.
Кстати, реально это было заметно (снизился до 38-45) !!! Спасибо ))
__________________
Offline:  
Старый 17.11.2007, 12:57   #13
Unreal
Registered User
 
Аватар для Unreal
 
Регистрация: 22.06.2004
Адрес: Bendery
Сообщений: 85
Сказал(а) Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Сказал(а) Фууу!: 0
Сказали Фууу! 0 раз(а) в 0 сообщениях
Unreal is on a distinguished road
Отправить сообщение для Unreal с помощью ICQ
Цитата:
Сообщение от Dead-Master
Ну кое что и я сегодня сделал со своей стороны, чтобы улучшить (стабилизировать) пинг в моменты пиковых нагрузок.
Вот видишь...
Общими усилиями можно сделать многое...
осталось завершить начатое до конца и после тестирования дать 3 набора команд для разного качества интернета и думаю все будут довольны...

надо бы добровольцев ))) у кого сильно лагает и почти не лагает... чтоб сесть и в аське попробовать найти лучшие варианты...

добровольцы!! в Воскресение вечером думаю уже заняться тестами...
__________________
Учитесь играть в КС....
да прибудет с вами постоянный хэдшот....
смерть читерам!
Offline:  
Старый 17.11.2007, 13:08   #14
goodgame
Registered User
 
Аватар для goodgame
 
Регистрация: 11.10.2007
Сообщений: 1,898
Сказал(а) Спасибо: 1
Поблагодарили 21 раз(а) в 16 сообщениях
Сказал(а) Фууу!: 2
Сказали Фууу! 2 раз(а) в 2 сообщениях
goodgame is on a distinguished road
такой вопрос..
я прописал все команды, сохранил cfg, и когда я захожу заново в игру у меня как по стандарту sv_maxrate 0 , ex_interp 0.1 , sys_ticrate 100... хотя прописываю конфиг и должны ведь поставиться все полностью настройки, а они не ставяться...
или нужно в самом конфиге (т.е. в блокноте) прописать все эти команды?
Offline:  
Старый 17.11.2007, 13:16   #15
Unreal
Registered User
 
Аватар для Unreal
 
Регистрация: 22.06.2004
Адрес: Bendery
Сообщений: 85
Сказал(а) Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Сказал(а) Фууу!: 0
Сказали Фууу! 0 раз(а) в 0 сообщениях
Unreal is on a distinguished road
Отправить сообщение для Unreal с помощью ICQ
Цитата:
Сообщение от goodgame
такой вопрос..
я прописал все команды, сохранил cfg, и когда я захожу заново в игру у меня как по стандарту sv_maxrate 0 , ex_interp 0.1 , sys_ticrate 100... хотя прописываю конфиг и должны ведь поставиться все полностью настройки, а они не ставяться...
или нужно в самом конфиге (т.е. в блокноте) прописать все эти команды?
Каждый раз при входе в игру тебе придётся загружать тот конфиг в который ты это сохранил...
Если это для тебя сложно (я например давно привык перед входом на сервер ... палицы сами печатают exec Un.cfg ))) ) . Тогда найди в папке config.cfg и добавь эти строчки туда... соответственно смотри чтоб значения не были в конфиге дважды... а то применится только последнее ...
__________________
Учитесь играть в КС....
да прибудет с вами постоянный хэдшот....
смерть читерам!
Offline:  
Закрытая тема

Опции темы
Опции просмотра Оценка этой теме
Оценка этой теме:

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 15:27.


Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
2004-2011 GameCenter