Главная » Статьи » Мастерская |
Сетевой код Counter - Strike 1.6
Команды с префиксом 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 5) ex_interp: интерполяция - это
восстановление значения функции в промежуточной точке по известным ее
значениям в соседних точках. Рекомендации для online игр
rate: я практически уверен что значение 20000 будет доступно
большинству высокоскоростных Интернет соединений. А вот использование
значений выше 20000 может наоборот привести к снижению
производительности. sv_maxrate:
значение в большинстве своем равно 0. Объясню почему это скорее всего
не оптимально для online игры. sv_maxrate "0" будет определять значение
rate для каждого клиента и пытаться заполнить его заполнить.
Представьте что движок HL позволяет игрокам использовать значения rate
выше 20000 (например 999999999999), и сервер будет пытаться заполнить
все 999999999999. Это приведет к пустому увеличению нагрузки на канал
сервера. Я советую безопасное и вместе с тем хорошее значение
sv_maxrate "20000". В большинстве случаев sv_maxrate 0 и sv_maxrate
20000 будут эквивалентны, но береженного бог бережет.
cl_cmdrate: в идеале значение этой команды должно быть равно серверному
(!- большинство людей считают что клиентским – в корне не верно) fps.
Если вы посылаете серверу пакеты чаще чем он способен обработать -
(скажем серверный fps=80, а значение cl_cmdrate 101) то некоторые
пакеты будут просто "скинуты" сервером, необработанны ( 101-80=21
необработанный пакет). По сути эти 21 пакета погоды не делают, просто
приведут к забиванию вашего upload (и увеличению трафика), что тоже
погоды не делает.
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- вот
тут и возникает глюк...
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, что нарушит баланс между этими командами.
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.) Слово о LAN Повод, по которому большинство известных турниров, таких как CPL, WCG используют cl_updaterate 101 - зависит от качества сервера. На таких чемпионатах все сервера обычно "ускорены" что делает реальным такое высокое значение cl_updaterate. Для того чтобы быстро узнать "ускорен" ли сервер, достаточно просто обратить внимание на пинг - у простого сервера, fps которого 50-60, все игроки имеют средний пинг 15ms, а вот на "ускоренном" - 5 ms. | |
Просмотров: 400 | Комментарии: 1 | |
Всего комментариев: 0 | |