Команды с префиксом sv_ sys_ являются серверными командами и предназначенными
только для сервера. Если вы хотите узнать их значение или изменить, их следует
исполнять непосредственно на самом сервере, либо с использованием rcon пароля...
Также эта статья предназначена в основном для обладателей выделенных,
высокоскоростных линий Интернета и для LAN.
Общая
информация
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 "загружает" и сам процессор сервера. (Кстати такое "увеличение" каким-то
образом загружает процессор по максимуму на таких картах как 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% в
каждую секунду времени, так как вы получаете ограниченное количество обновлений
в секунду с сервера. Когда увеличивается количество обновлений,
интерполированная фигура становится более аккуратной. В 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: ставим в 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 - зависит от качества сервера.
Слово о LAN
Повод, по которому большинство известных
турниров, таких как CPL, WCG используют cl_updaterate 101 - зависит от качества
сервера. На таких чемпионатах все сервера обычно "ускорены" что делает реальным
такое высокое значение cl_updaterate. Для того чтобы быстро узнать "ускорен" ли
сервер, достаточно просто обратить внимание на пинг - у простого сервера, fps
которого 50-60, все игроки имеют средний пинг 15ms, а вот на "ускоренном" - 5
ms.