[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
"CS без лага"
TRAnEДата: Воскресенье, 28.02.2010, 16:47 | Сообщение # 1
Это имеет место быть
Группа: Администраторы
Сообщений: 1126
Репутация: 121
Статус:
Название статьи: "

CS без лага".


Взято с: http://www.pif-paf.ru


Автор:

kingpin


Отредактировал и дополнил:

Biker


Перевод:

Gh0St








Я не могу обещать наверняка, но этастатья все же лучше чем ничего. В CS есть такие специальные команды,которые определяют, сколько данных вы посылаете и сколько принимаете сHL сервера. Итак, поехали.














"Рейты (Rates)"






Многие люди часто спрашивают что такое рейты, какие значенияиспользовать и т.п Я думаю написание руководства, объясняющего что всеэто значит, поможет многим людям. Чтобы потом люди не говорили какиезначения использовать, не понимая что они означают на самом деле.









Определение.






Начнем с определений:









rate
(Рейт) - это максимальный предел байт в секунду который сервер может послать клиенту.






cl_rate
- определяет максимальный предел байт в секунду который клиент можетпослать на сервер. (Вам не нужно беспокоится об этом параметре)






cl_cmdrate
- число раз в секунду которое клиент информирует сервер о своих действиях.






cl_updaterate
- это сколько раз в секунду сервер говорит клиенту что происходит на карте.






sv_maxrate
(параметр для серверов) - если вы не администратор сервера, а клиент(игрок на сервере) то на этот параметр можете даже не обращатьвнимание. Этот параметр аналогичен с клиентским rate и определяетмаксимально-допустимый предел передачи/приёма байт в секунду междуклиентом и сервером.





Я предполагаю, что большинство людей использует ADSL или кабель издесь я буду рассматривать ADSL в качестве примера и исходя из этого япредполагаю, что скорость входящего потока у всех 512кб\с и скоростьисходящего 256кб\с, но вы можете сделать все приведенные здесь расчетыи для кабеля, и для соединений на более низких скоростях (простонеобходимо вычислить разницу). Теперь выставляйте значения rate,cl_updaterate и cl_cmdrate чем выше тем лучше, потому что это позволяетвам играть в более быструю игру и что более важно это позволяет вашимпулям попадать в противника с большей вероятностью. Сейчас я объяснювам почему.









rate



В теории соединение ADSL должно с легкостью поддерживать рейт в 25000. Это проверяется следующим образом:


берем значение рейта, которое измеряется в байтах в секунду и переводим его в килобайты в секунду.







25000 /1024 = 24.4140625кБ/с





В теории ваше соединение работает на скорости 512 килобит в секунду(в реальности оно работает на более низкой скорости). Я перевожу этозначение в килобайты в секунду:







512 / 8 = 64кБ/с





Теперь вы можете видеть что через ваше соединение могут играть 2.62 человека с рейтом в 25000

(64 / 24.414 = 2.62) . Можно использовать такое же вычисление для cl_rate, но этого делать не стоит, значения по умолчанию 9999 более чем достаточно.









cl_updaterate



Далее вы хотите изменить значения команд cl_updaterate и cl_cmdrate.updaterate определяет как много обновлений в секунду вы можете получитьот сервера. Ясно что нужно получать как можно больше обновлений, таккак это дает вам более точную картину того где кто находится и кудалетят их пули. Однако, если у вас будет высокий updaterate и низкийrate вы не сможете послать достаточное количество данных за обновлениеи любая выгода от высокого updaterate будет сведена к минимуму. Длятого чтобы стало понятно, я сейчас все объясню.





Если я ставлю cl_updaterate в 100 и мой рейт равен 25000 в теории каждое обновление может содержать до 250 байт данных

(25000 / 100 = 250).Повторюсь чем больше данных вы сможете получить за обновление, темболее четко вы будете видеть игровой мир (это не означает что игровоймир будет более четким, а означает то, что ваши пули будут более четкопопадать в цель). В версии 1.3 было вычислено, что когда у вас наэкране происходит много действий, вы можете использовать 175 байт наобновление. Таким образом если у вас высокий updaterate, вам нуженсоответствующий ему высокий рейт.





Используя данные из 1.3 если у вас updaterate равен 100, ваш рейтдолжен быть равен по крайней мере 17500, но лучше иметь небольшойзапас. Я рекомендую значение 20000 как минимум (чтобы определить какоезначение выбрать для вашего рейта возьмите ваш cl_updaterate и умножьтеего на 175, а затем прибавьте к полученному значению еще хотя бы 2000для страховки).









cl_cmdrate



cl_cmdrate работает так же как и cl_updaterate. Эта командаопределяет сколько обновлений в секунду вы посылаете на сервер. И сноваее значение нужно ставить как можно выше. Чем больше обновлений выпошлете на сервер, тем больше информации он будет иметь о вашихдействиях и о том куда летят ваши пули. На мой взгляд эта команда болееважная чем cl_updaterate.





Как и с cl_updaterate и с rate вы можете вычислить максимальноеколичество данных которое может содержать каждое обновление. Отсюда,если у вас cl_cmdrate равен 100 и ваш cl_rate равен 9999, каждоеобновление может содержать 99.99байт данных

(9999 / 100 = 99.99). Этого должно хватить для ваших нужд, так как вы посылаете меньше данных на сервер, чем он посылает вам.









sv_maxrate



Это особый параметр. Он пригодиться только администраторам КС-серверов.Если вы не администратор сервера, а клиент (тоесть игрок на сервере) тона этот параметр можете даже не обращать внимание. Этот параметраналогичен с клиентским rate и определяет максимально-допустимый пределпередачи/приёма байт в секунду между клиентом и сервером. Онпрописуеться в серверном конфиге или в консоли сервера. По умолчаниюsv_maxrate стоит на значении 0. Тоесть ограничение в траффике поотношению к каждому клиенту не задествовано.


Но в настройках для Интернет серверов я бы рекомендовал быприменять значение максимум sv_maxrate 25000. А в случае, если у вассервер начинает лагать или перегружен или перегружен весь Интернетканал, я бы рекомендовал прописывать параметр поменьше, напримерsv_maxrate 10000 , 3500 или 3000 (в зависимости от того, как он у васлагает).









Помехи (choke) и потеря (loss)



Теперь мы будем смотреть на помехи и потерю. Помехи (choke) показываютвам число обновлений которые не были посланы в оба направления из заперегрузки соединения. Потеря (loss) показывает число обновленийкоторые были посланы, но не достигли другой стороны. Помехи более важнычем потери, потому что ими вы засоряете соединение и оно не справляетсясо всеми этими данными. Это означает что вам нужно понизить значениярейтов. Потеря не так важна и если у вас большая потеря это говорит отом что у вас с сервером плохое соединение. Появление как помех (choke)так и потери (loss) является следствием того, что значения рейтовкоторые вы используете, либо слишком низкие, либо слишком высокие.





Я рекомендую попробовать использовать эти значения:







rate 20000


cl_updaterate 100


cl_cmdrate 100






Если эти значения приводят к помехам или потерям, пробуйте понижать значения. Я бы попробовал так:







rate 14000


cl_updaterate 70


cl_cmdrate 70






Вы можете проверить помехи и потери при помощи команды net_graph 3.Все сервера отличаются друг от друга и если вы сильно беспокоитесь насчет помех и потерь включите net_graph и подстройте ваши рейты, если неодин из выше перечисленных вам не подошел.





Найдите соединение которое наиболее близко к вашему и попытайтесь применить к нему одни из приведенных ниже рейтов.





для

576k и

1mb ADSL я бы использовал:







rate 20000


cl_updaterate 90


cl_cmdrate 101






для

600k и

1mb Cable я бы использовал:







rate 25000


cl_updaterate 80


cl_cmdrate 101








ПРИМЕЧАНИЕ - Ваша скоростьотправки (upload) не зависит от скорости приема (download). Вашcl_updaterate - это количество данных которое вы посылаете.Следовательно ваш cl_updaterate не должен быть таким же высоким какcl_cmdrate.





Помехи (сhoke) случаются когда сервер собирается послать данныеклиенту, но не может потому что клиент еще не готов принять эти данные(основывается это на настройках клиентского рейта (rate) илисерверовского sv_maxrate). Некоторые вещи, такие как клиентский рейтслишком низкий для данного числа игроков на сервере, само собойприводят к потере. Другие вещи не всегда, но тоже могут привести кпотере, такие как когда клиент поднимает значение cl_updaterate слишкомвысоко.





По схожей причине, админы LAN серверов могут не опасаться этого, так как для LAN серверов (

sv_lan = 1)настройки клиентского рейта а так же sv_min/maxrate абсолютноигнорируются и значение 9999 используется как рейт для всех клиентов.Оно будет увеличено до максимально разрешенного рейта в 20000, вследующем релизе, так что не стоит об этом забывать.







сообщил

Леон Хартвиг (

Leon Hartwig) -

VALVe



 
  • Страница 1 из 1
  • 1
Поиск: