Ладно, как я уже говорил в этой статье поленился обьяснять значение таких команд, как rate и тд...
Поэтому я скопипастил со внешних ресурсов вполне понятное, простое обьяснение всего этого хлама D: . Приступим :Основные net-настройки:
cl_updaterate - Количество пакетов, которые клиент может получить от сервера.
cl_cmdrate - Количество пакетов, которые клиент может отослать серверу.
rate - Количество байтов, которые клиент может получить от сервера за секунду.
cl_interp_ratio - Число промежутков между "интерполированием" мира.
cl_interp - Временной промежуток, через который происходит интерполяция (0,05 = 50 мс).
1. Интерполяция - ШОЦЕТАКЕ?!
В
идеальном сферическом мире в вакууме обновление информации о игровом
мире с сервера идет бесконечно с задержкой в 1мс. В суровой реальности
такого нет и число ваших запросов на обновление мира ограничено (66
максиум, выше - большая редкость и офф. не поддерживается). Между этими
обновлениями мир стоит на месте. Чтобы этого не происходило - была
придумана интерполяция. Она позволяет _предположить_ передвижение
противника до того как мир обновится. Наша задача сводится к тому, чтобы
интерполяция происходила одновреммено с обновлением мира - тогда
информация о противнике будет самой точной.
2. Рейты - чо и как?
Число,
которое стоит в параметрах цмд- и апдейтрейт указывает на число
отправленных/принятых пакетов в секунду. Параметр rate позволяет
ограничить общий объем передаваемой инфы в этих пакетах. Я видел много
"рашн про" с rate 9999. Сжигать их на костре!
3. Как это относится друг к другу?
Мы
имеем обновление мира 66 раз в секунду, исходя из того что
cl_updaterate 66, нам нужно сделать так, чтобы интерполяция проходила в
промежуток между пакетами. Далее мы решаем - через как часто будет
происходить интерполяция - между одним или между двумя пакетами. Это
задается при помощи cl_interp_ratio:
значение 1 - между двумя пакетами, один промежуток. |_|
значение 2 - между тремя, 2 промежутка. |_|_|
Теперь
нам нужно узнать сколько мс длится промежуток. Для этого секунду делим
на число обновлений: 1/66 = 0.0(15), округляем до 0.0152. Теперь если
один промежуток (cl_interp_ratio 1), то ставим cl_interp 0.0152, если
промежутков 2 (cl_interp_ratio 2)
, то ставим cl_interp 0.0152*2=0,0304
Выводим формулу:
1/cl_updaterate = cl_interp/cl_interp_ratio, отсюда получаем:
cl_interp = (1/cl_updaterate)*cl_interp_ratio
Получается, что интерполяция зависит от рейтов. Зная как высчитать интерполяцию составляем конфиг:
cl_updaterate 66;
cl_cmdrate 66; (цмд должен соответствовать апдрейту, для синхронности)
rate 40000; (можно 30000, меньше - хуже)
cl_interp_ratio 1 (лучше 1 промежуток - точнее инфа о противнике)
cl_interp 0.0152 (находим по формуле)
Это практически идеальный конфиг. +10 к пингу -100 к лагучести.
Можно делать вариации для слабого инета:
cl_updaterate 60;
cl_cmdrate 60;
rate 30000;
cl_interp_ratio 2
cl_interp 0.0333
Теперь немного о пингерах.
cl_updaterate 66
cl_interp 0.100
Самый распространенный "ping-pro" конфиг. Из 66 пакетов игнорируется 46. Противник уходит за стену - а вы его убиваете.
rate 9999 - а вот фиг вам я скажу как и где я двигаюсь! Сам не попаду и вам не дам!
cl_cmdrate 20 - А зачем противнику знать обо мне? (а на деле вы больше бегаете по прямой, стрейфы работают хуже)
Кстати,
наши возможности по изменению этих net-настроeк ограниченны античитом
(или там антипингом) , который стоит на наших серверах. Так, что
экспереминтируйте и создавайте свой уникальный net-конфиг или же
скопипастите с этого поста, дело ваше :D .