ГЛАСУВАЙза сайта и помогни за развитието ни!
ГЛАСУВАЙза QK-GAMING # Dust2 Only сървъра ни!

Настройки : cl_updaterate ,cl_cmdrate и ex_interp

Всичко свързано с Уроците за Counter-Strike 1.6
Публикувай отговор
Аватар
Gibson vTi OFF
Отдел Банове
Отдел Банове
Мнения: 15
Регистриран на: 07 Юли 2020, 23:49
Ник в Counter-Strik: GibSoN
Получена благодарност: 1 път
Bulgaria

Настройки : cl_updaterate ,cl_cmdrate и ex_interp

Мнение от Gibson vTi »

След като се свържете със сървъра,въведете net_graph 3 в конзолата,
В долния десен ъгъл ще видите динамична графика. Тази графика е много полезен инструмент, тъй като показва информация за входящи / изходящи пакети.

Loss - показва колко пакети са загубени по време на комуникация от сървъра към вас. Обикновено това показва несъответствие между скоростта на вашия входящ канал и изходящия канал на сървъра.

Choke - колко пакети вашият компютър не успява да предаде на сървъра, тъй като скоростта на връзката ви не го позволява или сървърът изисква твърде много информация.
Как можете да промените тези индикатори чрез конфигурацията на вашия клиент.

cl_updaterate - колко актуализации в секунда сървъра изпраща към вашето устройство. Този параметър влияе върху това колко бързо получавате сървърни данни, например, за действията на други играчи.Сървърите имат настройка, наречена sv_maxupdaterate, която определя максималните актуализации, които ще ви изпрати.Много често играчите задават стойност по-голяма от стойността посочена в настройките на сървъра - което е грешно.

cl_cmdrate - колко актуализации в секунда ще бъдат изпратени от вашата машина до сървъра.

При наличие на Loss - намалете стойността на cl_updaterate
При наличие на Choke - намалете стойността на cl_cmdrate

Сега ще поговорим за ex_interp - Споменатата команда определя колко ще се интерполира вашият CS , т.е. кога ще започне екстраполиране .

Или това, което виждате на екрана, не е същото като това, което сървърът „вижда“. Като се има предвид тази разлика, вашият CS прогнозира позицията на играча - тоест въз основа на последния получен пакет с данни и този преди него - CS прогнозира текущата позиция на играча.
За да може CS да отгатне къде е даден играч, е необходимо да има два пакета с данни- текущ и предишен, а между тези два пакета CS интерполира движението. Колкото по-голямо е интерполационното време (ex_interp), толкова по-стари позиции на играчите ще бъдат показани. CS ще изчака пакетите за максимума от това време, преди да започне да екстраполира. За разлика от интерполацията , екстраполацията се извършва въз основа на предишния пакет. В крайна сметка, когато изтече времето за екстраполация, играчът лъже, т.е. той се вижда в една позиция и след това скача в друга. Драстичен пример за екстраполация, която бихте могли да почувствате най-добре е когато сървърът „забие“ за секунда - движите се в определена посока, а след тов сякаш буквално ви връща обратно.

Какво всъщност се случва :

1. Вие се движите / примерно в права линия /
2. Пакетите с данни спират да пристигат,
3. Интерполацията работи толкова време , колкото е зададено ex_interp за вас.
4. След изтичане на времето ,започва екстраполацията ,но вие продължавате да се движите в същата посока,
5. Накрая пристига нов пакет (с информация, която е остаряла в сравнение с екстраполираното изображение, но информацията от сървъра е „по-стара“ от тази на вашия компютър),
6. CS ви връща в позицията, която сървърът е записал като последена.

Стойността на ex_interp е пряко свързана с cl_updatertate и се изчислява по следния начин : 1 / cl_updatertate
Ако имаме настройка cl_updaterate 100 тo ex_interp е равна на 0,01. Следователно CS очаква пакет на всеки 0,01 секунди (10 ms). Ако тези пакети пристигат редовно, CS може да изчисли връзките между пакетите (например движенията на играча)
Ако тези очаквани пакети не пристигнат или не пристигнат навреме, липсващата информация се екстраполира на базата на предишните пакети (екстраполация). След получаване на липсващия пакет, CS сравнява екстраполираните позиции с действителните и коригира всички грешки в изчислението.
Когато играя с ex_interp 0.1, CS чака 100ms за пакети с данни , преди да ми изчисли позицията. Ако сега погледна през двойните врати на Dust2 и видя противник, тази позиция на играча е на вече 100 мс (+ латентност). Сега стрелям по врага и изпращам тази информация обратно на сървъра. Докато стигне до сървъра, тази ситуация вече е "латентност + ex_interp + латентност".
Сървърът сравнява удара ми с позицията на противника и регистрира попадението. Сега той изпраща тази информация към играча и той пада повален, въпреки че отдавна не е в полезрението ни.
В най-лошия случай,когато двама играчи имат латентност 80ms и двамата играят с interp 0.1, подобна ситуация може бързо да стане странна. Тогава ще има следното време между "стоене между вратата" и "убийство":
латентност CT + латентност T + интерп T + латентност T + латентност CT + интерп CT
При това изчисление се събира над половин секунда разлика .Ако гледате демо на забавен кадър се вижда как сякаш стреляме по врага на сантиметри от главата му ,a имаме попадение.

Каква е правилната настройка на ex_interp ?

Правилната настройка винаги е 1 разделена на актуализацията ви, така че ако актуализацията ви е зададена на 100, най-добрата настройка е 0,01. Но защо някои хора го задават на 0 ?
Valve добави приятна функция, която автоматично изчислява най-добрата стойност за вас в зависимост от актуализацията ви, като го зададете на 0 и проверете конзолата си, ще ви покаже на каква стойност го е изчислил. Така че, ако имате актуализирана настройка на 100, а след това ex_interp 0, CS автоматично ще настрои interp на 0,01,ако промените актуализацията си на 30, вашата интерполация автоматично ще се промени на 0,33 и т.н. Най-добрата настройка, която можете да използвате е винаги 0

Много хора копират готови настройки за игра и мислят,че когато имат следните такива :

rate 25000
fps_max "101"
cl_updaterate “101” - не по-голяма от тази на сървъра – sv_maxupdaterate
cl_cmdrate “101” - добре е стойността 105 / по - голяма от зададеното FPS /
ex_interp “0.01” - за игра онлайн 0.1

Това са идеални настройки ,но истината не е точно такава.Ако имате загуби на пакети с данни Loss – Choke то намалете стойностите.Примерно :

cl_updaterate “80”
cl_updaterate “80”
ex_interp “0.1” и наблюдавайте промяната в net_graph 3

Най – много се дразня като някой играч напише – „Сървърa яко лагва “ Бих се съгласил ако всички играчи имат такъв лаг , но при условие ,че го има само той - нека да погледне в настройки , свързаност на интернета си и куп други неща за който можем да поговорим в бъдеще.Оставям линк към клип с ефекта от настройка на ex_interp.

Ето и снимки с разликата в графиката при ex_interp 0.1 и ex_interp 0.01 / графиката е с командата net_graph 1 /

Снимки:
► Виж съдържание

Видео клип за ефекта от настройката на ex_interp на 0.1

Урока е писан лично от мен и забранявам разпространението му без мое знание.
Изображение

Публикувай отговор

Обратно към “Уроци”