Например: Сss читы и другое
Четверг, 09.05.2024, 17:34 Регистрация Карта сайта RSS Лента
Меню сайта
Всё для css
Мини-чат
200
Календарь
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
До нового года =)
Часы =)
Форма входа

Рейты (Rates)

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

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

Rate (Рейт) - это максимальный предел байт в секунду, который сервер может послать клиенту.
rate - определяет максимальный предел байт в секунду, который клиент может послать на сервер.
cl_cmdrate - число раз в секунду которое клиент информирует сервер о своих действиях.
cl_updaterate - это сколько раз в секунду сервер говорит клиенту, что происходит на карте.

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


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

25000 /1024 = 24.4140625 кБ/с

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


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


cl_updaterate - cl_cmdrate
Далее изменяем значения команд 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). Этого должно хватить
для ваших нужд, так как вы посылаете меньше данных на сервер, чем он
посылает вам.


Помехи (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 слишком высоко.



Вот скрипт, для подбора скорости:

В файл cstrikeautoexec.cfg добавте вот эти строки:

bind "v" "net"
alias net net0
alias
net0 "rate 8000; rate 8000; cl_updaterate 10; cl_cmdrate 20; alias net
net1; echo *** UnitedNet ::net speed:: |10|*********************; speak
tutor_msg"

alias net1 "rate 10000; rate 10000; cl_updaterate 15;
cl_cmdrate 25; alias net net2; echo *** UnitedNet ::net speed::
*|15|********************; speak tutor_msg"

alias net2 "rate 13000;
rate 13000; cl_updaterate 20; cl_cmdrate 30; alias net net3; echo ***
UnitedNet ::net speed:: **|20|*******************; speak tutor_msg"

alias
net3 "rate 15000; rate 15000; cl_updaterate 22; cl_cmdrate 30; alias
net net4; echo *** UnitedNet ::net speed:: ***|22|******************;
speak tutor_msg"

alias net4 "rate 17000; rate 17000; cl_updaterate
23; cl_cmdrate 30; alias net net5; echo *** UnitedNet ::net speed::
****|23|*****************; speak tutor_msg"

alias net5 "rate 18000;
rate 18000; cl_updaterate 24; cl_cmdrate 30; alias net net6; echo ***
UnitedNet ::net speed:: *****|24|****************; speak tutor_msg"

alias
net6 "rate 20000; rate 20000; cl_updaterate 25; cl_cmdrate 35; alias
net net7; echo *** UnitedNet ::net speed:: ******|25|***************;
speak tutor_msg"

alias net7 "rate 20000; rate 20000; cl_updaterate
30; cl_cmdrate 40; alias net net8; echo *** UnitedNet ::net speed::
*******|30|**************; speak tutor_msg"

alias net8 "rate 20000;
rate 20000; cl_updaterate 35; cl_cmdrate 45; alias net net9; echo ***
UnitedNet ::net speed:: ********|35|*************; speak tutor_msg"

alias
net9 "rate 20000; rate 20000; cl_updaterate 40; cl_cmdrate 50; alias
net net10; echo *** UnitedNet ::net speed:: *********|40|************;
speak tutor_msg"

alias net10 "rate 20000; rate 20000; cl_updaterate
45; cl_cmdrate 55; alias net net11; echo *** UnitedNet ::net speed::
**********|45|***********; speak tutor_msg"

alias net11 "rate 20000;
rate 20000; cl_updaterate 50; cl_cmdrate 60; alias net net12; echo ***
UnitedNet ::net speed:: ***********|50|**********; speak tutor_msg"

alias
net12 "rate 20000; rate 20000; cl_updaterate 55; cl_cmdrate 65; alias
net net13; echo *** UnitedNet ::net speed:: ************|55|*********;
speak tutor_msg"

alias net13 "rate 20000; rate 20000; cl_updaterate
60; cl_cmdrate 70; alias net net14; echo *** UnitedNet ::net speed::
*************|60|********; speak tutor_msg"

alias net14 "rate 20000;
rate 20000; cl_updaterate 65; cl_cmdrate 75; alias net net15; echo ***
UnitedNet ::net speed:: **************|65|*******; speak tutor_msg"

alias
net15 "rate 20000; rate 20000; cl_updaterate 70; cl_cmdrate 85; alias
net net16; echo *** UnitedNet ::net speed:: ***************|70|******;
speak tutor_msg"

alias net16 "rate 20000; rate 20000; cl_updaterate
75; cl_cmdrate 85; alias net net17; echo *** UnitedNet ::net speed::
****************|75|*****; speak tutor_msg"

alias net17 "rate 20000;
rate 20000; cl_updaterate 80; cl_cmdrate 90; alias net net18; echo ***
UnitedNet ::net speed:: *****************|80|****; speak tutor_msg"

alias
net18 "rate 20000; rate 20000; cl_updaterate 90; cl_cmdrate 100; alias
net net19; echo *** UnitedNet ::net speed:: ******************|90|***;
speak tutor_msg"

alias net19 "rate 20000; rate 20000; cl_updaterate
100; cl_cmdrate 101; alias net net0; echo *** UnitedNet ::net speed::
********************|100|; speak tutor_msg"


net_graph "3"
net_scale "5"
net_graphpos "2"

Теперь во время игры, нажимая "v" подберите оптимальные настройки ориентируясь на график сетегого монитора.
© GooD_GoD
Sinelshchikov
Jan 24 2007, 14:12
Огромное спасибо!!!! Закрепите тему пожалуйста
f0rd
Jan 24 2007, 14:15
Tnx.
При 128кбит/сек. какие примерно настройки нужны?
Рамзя
Jan 24 2007, 14:21
Tybalt,
пасиб, сегодня вечерком попробую.
Wespe
Jan 24 2007, 14:22
2 Tybalt
Спасибо, очень познавательно! smile.gif

Кстати,
после истории с жалобой на вас одного товарища по этому поводу,
хотелось бы узнать допустимый диапазон значений данных параметров? Или
действительно может следовало бы установить какие-нибудь параметры
принудительно? Особенно волнуют NITRO, где нет админов, которые бы
следили за настройками некоторых шибко грамотных товарищей. smile.gif


И
ещё вопрос: в FAQ видел, что есть какие-то параметры (cl_interp... или
что-то в этом роде), позволяющие выставить коэффициент
задержки/ускорения отображения объектов, что тоже влияет на точность
выстрелов. Типа видишь, что объект около входа, а он на самом деле уже
четверть секунды как в коридоре. Или при хорошей выделенке большого
смысла копаться в этих настройках нет? (Чёрт, а хорошая ли у меня
выделенка? laugh.gif - 100Мбит вроде...)


Просветите пожалуйста, а то "меня терзают смутные сомнения"... rolleyes.gif
rea1t0n
Jan 24 2007, 14:22
очень полезная тема. может это поможет сократить кол-во людей играющих с настройками рейтов по 33
. кстати в последнее время стал проседать тикрейт на серверах корбины. с чем это связано ?
-TomCraft-
Jan 24 2007, 14:22
Цитата
При 128кбит/сек. какие примерно настройки нужны?

если это выдеденка, то абсолютно любые. если адсл.. то это я не знаю =)
Tybalt
Jan 24 2007, 14:52
Цитата(STOPER @ Jan 24 2007, 14:15) [snapback]1061978616[/snapback]

Tnx.
При 128кбит/сек. какие примерно настройки нужны?

Если у Тебя ADSL, то начни с таких:

rate 30000
cl_cmdrate 33
cl_updaterate 33

Потом включи сетевой монитор, командой - net_graph 3

Если
помех (shoke) нет, а попадание в противника плохое, то стоит
попробовать поднять cl_cmdrate - при этом rate и cl_updaterate, пока не
трогать.


rea1t0n
Jan 24 2007, 14:58
при 128 легко можно выставлять по 66
f0rd
Jan 24 2007, 14:59
Tybalt,
Спасибо.Сейчас пойду попробую.Чуть позже - отпишу.
Tybalt
Jan 24 2007, 15:21
Цитата(Wespe @ Jan 24 2007, 14:22) [snapback]1061978635[/snapback]

2 Tybalt
Спасибо, очень познавательно! smile.gif

Кстати,
после истории с жалобой на вас одного товарища по этому поводу,
хотелось бы узнать допустимый диапазон значений данных параметров? Или
действительно может следовало бы установить какие-нибудь параметры
принудительно? Особенно волнуют NITRO, где нет админов, которые бы
следили за настройками некоторых шибко грамотных товарищей. smile.gif


По default`у -
rate 9999
cl_cmdrate 30
cl_updaterate 20

Цитата(Wespe) [snapback]1061978635[/snapback]

И
ещё вопрос: в FAQ видел, что есть какие-то параметры (cl_interp... или
что-то в этом роде), позволяющие выставить коэффициент
задержки/ускорения отображения объектов, что тоже влияет на точность
выстрелов. Типа видишь, что объект около входа, а он на самом деле уже
четверть секунды как в коридоре. Или при хорошей выделенке большого
смысла копаться в этих настройках нет? (Чёрт, а хорошая ли у меня
выделенка? laugh.gif - 100Мбит вроде...)


Просветите пожалуйста, а то "меня терзают смутные сомнения"... rolleyes.gif


Что касается cl_interp, для "выделенки", чем меньше значение этого параметра - тем лучше.
А вот для пользователей ADSL, лучше оставить по default`у - (cl_interp 0.10)
Но в последние две недели, я заметил, что на серверах Корбины этот параметр прописан - max 0.03 и выше его не поднять.
Так что на счет cl_interp, надо спросить у Бармалея...
Ramires_Ulitgo
Jan 24 2007, 15:21
а у меня глупый, наверное, вопрос:
при игре на одном и том же серваке на разных картах
бывают и loss и choke
причем не обязательно это нагруженная здоровая карта
а бывает, что и нет ничего.
это от чего зависит? о.0

соединение адсл, 512 к
Tybalt
Jan 24 2007, 15:48
Цитата(Ramires_Ulitgo @ Jan 24 2007, 15:21) [snapback]1061978846[/snapback]

а у меня глупый, наверное, вопрос:
при игре на одном и том же серваке на разных картах
бывают и loss и choke
причем не обязательно это нагруженная здоровая карта
а бывает, что и нет ничего.
это от чего зависит? о.0

соединение адсл, 512 к

Совсем не глупый, это из-за ADSL.

Если
это происходит при одном и том же коннекте к игровому серверу и со
сменой карты появляются помехи или потери, лучше сделать реконнект
(Retry).


А еще есть такая интересная вещь - у ADSL системы, при
каждом коннекте к инету, бывает разный айпи адрес, так вот, из личного
примера - иногда мне дает айпи адрес, под-сетка начинается с 214. и
т.д., на этом айпи у меня не потерь ни помех не бывает и процент
попадание почти 100%


Но дает этот айпи в последнее время крайне редко, в основном 83.237 и т.д., или 85.140 и т.д., а на этих полная Жо)

Так что пользователям ADSL, стоит присматриваться, на каком айпи игра идет лучше.
rea1t0n
Jan 24 2007, 16:09
Тибальт, ты играл против людей у которых рейты стоят по 33 ? ничего не смущало ? бегают лагеры.
а ты советуешь по 20 ставить. если пров нормальный то 128 кб за глаза и за уши хватать должно 66.
и так много народу играют не знаю с чего , но передвигаютс исключительно телепортами.
Wespe
Jan 24 2007, 16:12
2 Tybalt
Цитата

По default`у -
rate 9999
cl_cmdrate 30
cl_updaterate 20

Это минимальные разрешённые параметры, насколько я понял? Какие максимальные значения разрешены?

Значит, при моих 100Мбит (хотя конечно скорость то меньше dry.gif , но в тарифе так написано), настраивать по максимуму?

В
общем, что надо сделать (каков алгоритм действий), чтобы и себе
улучшить, и другим не подгадить? Запустить этот скрипт? rolleyes.gif


P.S. Извините, туплю не по-детски. biggrin.gif
Tybalt
Jan 24 2007, 16:31
rea1t0n, по 20 я еще никому не советовал ставить, сам я играю с тикрейтом по 33.

Если поднимаю до 67, то choke - ниже 20 не опускаются.

Что касается "телепортических" передвижений, видимо у Тебя ADSL и это из-за cl_interp

Цитата(Wespe @ Jan 24 2007, 16:12) [snapback]1061979118[/snapback]

2 Tybalt

Это минимальные разрешённые параметры, насколько я понял? Какие максимальные значения разрешены?

Это дефаултные настройки - разрешенный минимум, надеюсь скоро появиться в правилах.
Что касается макса, по теории, выше, чем это позволяет сервер, ставить смысла нет.

Цитата(Wespe) [snapback]1061979118[/snapback]

Значит, при моих 100Мбит (хотя конечно скорость то меньше dry.gif , но в тарифе так написано), настраивать по максимуму?

В
общем, что надо сделать (каков алгоритм действий), чтобы и себе
улучшить, и другим не подгадить? Запустить этот скрипт? rolleyes.gif


Так как у Тебя выделенка, скрипт запускать не надо, ставь -

rate 10000
cl_cmdrate 100
cl_updaterate 100
cl_interp 0.01 и пробуй...
Б@H@H
Jan 24 2007, 16:34
подправте скрипт! А то пишет
Unknown command: cl_rate
Естествено, ведь нету команды cl_rate , есть просто rate
Tybalt
Jan 24 2007, 16:44
Цитата(Б@H@H @ Jan 24 2007, 16:34) [snapback]1061979231[/snapback]

подправте скрипт! А то пишет
Unknown command: cl_rate
Естествено, ведь нету команды cl_rate , есть просто rate

Исправлено.
Gren4
Jan 24 2007, 16:45
Цитата(Б@H@H @ Jan 24 2007, 16:34) [snapback]1061979231[/snapback]

подправте скрипт! А то пишет
Unknown command: cl_rate
Естествено, ведь нету команды cl_rate , есть просто rate

Вот господа пропишите в консоли такие настройки и проблем не будет...
cl_cmdrate "100"
cl_updaterate "100"
rate "25000"
-TomCraft-
Jan 24 2007, 16:46
у кого выделенка без сомнений ставьте rate 25000 cl_cmdrate 100 cl_updaterate 100 И всё...
адсл - 20000 66 66
Tybalt
Jan 24 2007, 16:49
Цитата(Gren4 @ Jan 24 2007, 16:45) [snapback]1061979275[/snapback]

Вот господа пропишите в консоли такие настройки и проблем не будет...
cl_cmdrate "100"
cl_updaterate "100"
rate "25000"

Прописал как Вы велели)

сhoke - в раоне 25-30 - как быть? что делать? smile.gif
Gren4
Jan 24 2007, 16:52
Цитата(Tybalt @ Jan 24 2007, 16:49) [snapback]1061979293[/snapback]

сhoke - в раоне 25-30 - как быть? что делать? smile.gif

Попробуй вариант как у Toma. smile.gif

Цитата(-TomCraft- @ Jan 24 2007, 16:46) [snapback]1061979282[/snapback]

адсл - 20000 66 66

+ Ещё конечно от сервера зависит.
Tybalt
Jan 24 2007, 16:55
Цитата(Gren4 @ Jan 24 2007, 16:52) [snapback]1061979302[/snapback]

Попробуй вариант как у Toma. smile.gif
+ Ещё конечно от сервера зависит.

Цитата(Tybalt @ Jan 24 2007, 16:31) [snapback]1061979162[/snapback]

Если поднимаю до 67, то choke - ниже 20 не опускаются.

rea1t0n
Jan 24 2007, 17:02
с
инетом у мя проблем нету. телепортируются хайпингеры. просто 33 это
мало. Хотя щас все равно на серваках корбины тикрейт проседает до 33.

Wespe
Jan 24 2007, 17:15
Кстати,
о птичках... Правильный вопрос товарищ rea1t0n задал, как быть с
редисками, которые заходят по модему из Африки и губят игру своим пингом
больше 200?


И ишшо, что такое тикрейт? rolleyes.gif
А то меня во время игры спрашивали, сказал "не знаю", - засмеялись, - подозреваю, что надо мной. mad.gif
biggrin.gif
Tybalt
Jan 24 2007, 17:31
Цитата(rea1t0n @ Jan 24 2007, 17:02) [snapback]1061979365[/snapback]

с
инетом у мя проблем нету. телепортируются хайпингеры. просто 33 это
мало. Хотя щас все равно на серваках корбины тикрейт проседает до 33.


Ну тем у кого хайпинг, повышение рейтов особо то и не поможет...

А тот кто с диал-апа приконнектился, так это вообще жесть)

Цитата(Wespe @ Jan 24 2007, 17:15) [snapback]1061979430[/snapback]

Кстати,
о птичках... Правильный вопрос товарищ rea1t0n задал, как быть с
редисками, которые заходят по модему из Африки и губят игру своим пингом
больше 200?


Для них можно только ограничения ввести на пинг, все зависит от политики сервера.
Хотя по отношению к тем, у кого пинг большой, но их не лагает - будет не справедливо.
Цитата(Wespe) [snapback]1061979430[/snapback]

И ишшо, что такое тикрейт? rolleyes.gif
А то меня во время игры спрашивали, сказал "не знаю", - засмеялись, - подозреваю, что надо мной. mad.gif
biggrin.gif

я тоже не знаю laugh.gif
Wespe
Jan 25 2007, 14:47
Дабы ликвидировать безграмотность, нарыл небольшую статью:

Движок

Многопользовательский
движок игры Half-Life состоит из сервера и одного или более клиентов из
32 максимально возможных (хотя на самом деле движок может обрабатывать
до 255), которые соединены через сеть (интернет) интерактивно, в режиме
полу-реального времени.

Коммуникация между сервером и клиентами использует UDP протокол который очень подходит для такого вида соединения.
Более детально о специфике TCP/UDP сетей смотрите в соответствующей литературе.

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


Обычно, сервер
выполняется с установленными по умолчанию 100FPS (Frames Per Second -
фреймами в секунду) или со скоростью 10 милисекунд за фрейм. При помощи
всевозможных доступных мировых инновацияй, сервер может выполнятся
намного быстрее, до 1000FPS.

Ограничивающий фактором для FPS являются
ограничения аппаратного и програмного обеспечения на той платформе где
они рассматриваются.


Выполнение сервера со скоростью 500FPS или
1000FPS не имеет непосредственного влияния на FPS определенного клиента,
так как каждый клиент рендерит фреймы независимо от сервера.

FPS - частота фреймов на сервере устанавливается при помощи консольной переменной(CVAR) sys_ticrate со значениями от 0 до 1000.

Если
компьютер на котором выполняется сервер обладает избыточной мощьностью,
установка высокого значения FPS (до 1000) дает выигрышное преимущество.

Рассмотрим подробнее что здесь происходит и почему это происходит.

Сервер
выполняющий карту на которой происходит игра, кэширует ресурсы,
рендерит фреймы, принимает обновления статусов от клиентов и отправляет
обратные обновления клиентам.


Клиент выполняющий эту же карту,
рендерит свои собственные фреймы, отправляя обновления серверу и
принимая обновления от сервера (должна производится контрольная проверка
для соответствия карт на сервере и клиенте). А также клиент графически и
акустически отображает фреймы (это не делается на сервере)


При
этом всем, клиент рендерит все анимации и позиции моделей, спрайтов,
звуков, анимированных текстур (например как вода) и подвижные энтити в
поле зрения игрока. Сюда включается оружие и выстрелы на лету.


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


Итак
мы видим, что в движке имеется две разные независимые и связанные друг с
другом системы рендеринга которые соединены одна с другой через сеть.


Преположим, сервер рендерит фреймы с частотой 500FPS.
Это
означает что снимок всего происходящего из всего доступного
отправляется клиенту каждые 2 милисекунды (если будет 1000FPS - каждую
милисекунду).

Клиент взаимодействует с сервером в два раных способа.
Клиента
отправляет обновления состояния игрока (позиция, действия) 30 раз в
секунду (по умолчанию это установлено в консольной переменной
cl_cmdrate) а также оправляет зарос дял полного обновления от сервера 20
раз в секунду (устанавливается в переменной cl_updaterate).

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

Итак, cl_updaterate 20 означает что каждые 50мс или около того клиент совершает запрос и обновление от сервера.
Далее,
добавим время путешествия (1/2 пинга) от клиента к серверу а также
задержку около 2 мс на то что на сервере отрендериться обновление (при
500FPS) и будет отправлено обратно клиенту с примерно той же задеркой
1/2 пинга.


При 100FPS, максимальная задержка составит 10мс для рендера.

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


Частота с которой эти
обновления оправляются туда и обратно котроллируется CVAR-переменной
rate на стороне клиента (значения от 0 до 20000), а на стороне сервера:
sv_minrate и sv_maxrate.


Настройки на стороне сервера перекрывают все что установлено на стороне клиента. Скорость измеряется в байтах в секунду.
В среднем, игрок с скоростью 7500 отправляет серверу и получает от него максимум до 7.5Кбайт в секунду.

Сервер
выполняющийся с 100FPS в таком случае с 10мс периодом для этих запросов
аккумулирует их во время рендеринга а затем отправляет обратно
обновления всем запросам коиентов в данном периоде.

Если сервер
способен отрендерить текущий фрейм перед завершением интервала
sys_ticrate он простаивает оставшееся количество времени.


Это
означает что при большом количестве клиентов, сервер вынужден отпрвлять
большие объемы данных каждые 10 мс что может повлиять на пропускной
канал сервера (требуется расширять канал).


Если сервер
выполняется со скоростью 1000FPS, то эффективность заключается в том что
каждый клиент кторый шлет запрос на обновление, более равномерно
распределяется в моментах времени, тоесть каждый момент вермени будет
передваваться меньшее количество данных, Не смотря на то что общий объем
инофрмации в обоих случая будет одинаковым.


Данная эффективность
делает три вещи, уменьшает потребность в расширении канала (благодаря
более ровной загрузке), слегка уменьшает относительное увеличение
значение пинга которое видят пользователи клиентов (для 10ms около 1 или
2 мс) и менее важное, это сохраняет клиента максимально обновленным
насколько это возможно, что в лучшую влияет на появление "лагов".


Замечание.

Сервер
всегда может отправить текущий рендерящийся фрейм как можно скорее как
только он получит запрос от клиента и клиент не будет дожидаться
следующего фрейма.

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


Подведем итоги.

1. Сервер рендерит фреймы с частотой 100FPS , 500FPS или 1000FPS, обновляясь каждые 10, 2 или 1 мс соответствено.

2.
Клиенты рендерят фреймы по умолчанию с частотой 100FPS и отображают
фреймы обычно с частойто от 30 до 100 FPS в зависимости от того какой
процессор и графическая система в их системе и смотря что происходит в
игре на карте.


3. Клиенты отправляют обновляющую информацию (cl_updaterate) серверу 30 раз в секунду (по умолчанию).

4.
Клиенты запрашивают обновления из сервера (cl_cmdrate) и (по умолчанию)
20 раз в секунду (тоесть каждые 50мс между обновлениями).

Сервер отправляет обновленную информацию клиенту.
На
протяжении интервала 50ms (и время доставки данных), клиент рендерит
видимые фреймы, предиктует события и взаимодействует с игроком пока
принимается обновление.


5. Клиенты отправляют данные серверу и
сервер отправляет данные клиенту со скоростью установленной
CVAR-значением rate на стороне клиента и перекрываемым CVAR-значением
sv_maxrate сервера.


6. Серверы выполнющиеся с большей FPS
способны отправлять обновляющую информацию клиентам чаще и немного
снизить требования к ширине пропускной способности канала сервера.


7.
Клиенты отправляют серверу и принимают от сервера одинаковые объемы
данных в не зависимости от FPS сервера. В связи с этим есть резон
ограничивать sv_maxupdaterate.


8. Серверные CVAR-переменные
sv_maxrate и sv_maxupdaterate имеют эффективность, если видимые
визуальные задержки перед тем как были произведены изменеия (если видимы
только визуальные эффекты).


Автор: DarkLight
© RealTeam 2005
Рамзя
Jan 31 2007, 15:15
А есть команда, которая сбросит все настройки по рейтам и вообще на дефолт?
kytyz
Jan 31 2007, 16:12
Цитата(Рамзя @ Jan 31 2007, 15:15) [snapback]1062018716[/snapback]

А есть команда, которая сбросит все настройки по рейтам и вообще на дефолт?

+1 очень надо или скажите какие числа по дефолту ставяться ?
Sig Sauer
Jan 31 2007, 16:24
Цитата(Рамзя @ Jan 31 2007, 15:15) [snapback]1062018716[/snapback]

А есть команда, которая сбросит все настройки по рейтам и вообще на дефолт?

Только на наши сервера с дефолтом лучше не лазать.
Рамзя
Jan 31 2007, 23:54
Так кто-нибудь дельное подскажет насчет сброса в дефолт?
Tybalt
Feb 1 2007, 00:32
На сколько я знаю, такой команды нет.

Можно удалить конфиг, при запуске КС, конфиг создастся новый - там будет все по дефаулту.

Другой
вариант, выставлять значения вручную. При вводе команды в консоли без
значения - консоль покажет дефаултное значение. Но не на все команды.


Либо вот, оригинальный конфиг:

unbindall
bind "TAB" "+showscores"
bind "ESCAPE" "cancelselect"
bind "SPACE" "+jump"
bind "," "buyammo1"
bind "." "buyammo2"
bind "0" "slot10"
bind "1" "slot1"
bind "2" "slot2"
bind "3" "slot3"
bind "4" "slot4"
bind "5" "slot5"
bind "6" "slot6"
bind "7" "slot7"
bind "8" "slot8"
bind "9" "slot9"
bind "`" "toggleconsole"
bind "a" "+moveleft"
bind "b" "buymenu"
bind "c" "radio3"
bind "d" "+moveright"
bind "e" "+use"
bind "f" "impulse 100"
bind "g" "drop"
bind "h" "commandmenu"
bind "i" "showbriefing"
bind "j" "cheer"
bind "k" "+voicerecord"
bind "m" "chooseteam"
bind "n" "nightvision"
bind "o" "buyequip"
bind "q" "lastinv"
bind "r" "+reload"
bind "s" "+back"
bind "t" "impulse 201"
bind "u" "messagemode2"
bind "w" "+forward"
bind "x" "radio2"
bind "y" "messagemode"
bind "z" "radio1"
bind "CTRL" "+duck"
bind "SHIFT" "+speed"
bind "F1" "autobuy"
bind "F2" "rebuy"
bind "F4" "bug"
bind "F5" "jpeg"
bind "F6" "save quick"
bind "F7" "load quick"
bind "F10" "quit prompt"
bind "MWHEELDOWN" "invnext"
bind "MWHEELUP" "invprev"
bind "MOUSE1" "+attack"
bind "MOUSE2" "+attack2"
bind "PAUSE" "pause"
cl_righthand "1"
cl_rumblescale "1.0"
cl_debugrumble "0"
cl_team "default"
cl_class "default"
cl_detail_max_sway "0"
cl_detail_avoid_radius "0"
cl_detail_avoid_force "0"
cl_detail_avoid_recover_speed "0"
cc_linger_time "1.0"
cc_predisplay_time "0.25"
cc_subtitles "0"
cc_lang ""
crosshair "1"
cl_observercrosshair "1"
cam_snapto "0"
cam_idealyaw "90"
cam_idealpitch "0"
cam_idealdist "64"
c_maxpitch "90"
c_minpitch "0"
c_maxyaw "135"
c_minyaw "-135"
c_maxdistance "200"
c_mindistance "30"
c_orthowidth "100"
c_orthoheight "100"
joy_name "joystick"
joy_forwardthreshold "0.15"
joy_sidethreshold "0.15"
joy_pitchthreshold "0.15"
joy_yawthreshold "0.15"
joy_forwardsensitivity "-1"
joy_sidesensitivity "1"
joy_pitchsensitivity "1"
joy_yawsensitivity "-1"
joy_response_move "1"
joy_response_look "0"
joy_lowend "1"
joy_lowmap "1"
joy_accelscale "0.6"
joy_autoaimdampenrange "0"
joy_autoaimdampen "0"
joy_diagonalpov "0"
joy_display_input "0"
joy_wingmanwarrior_turnhack "0"
cl_upspeed "320"
cl_forwardspeed "400"
cl_backspeed "400"
lookspring "0"
lookstrafe "0"
joystick "0"
m_pitch "0.022"
m_filter "0"
sensitivity "3"
m_side "0.8"
m_yaw "0.022"
m_forward "1"
m_customaccel "0"
m_customaccel_scale "0.04"
m_customaccel_max "0"
m_customaccel_exponent "1"
m_mouseaccel1 "0"
m_mouseaccel2 "0"
m_mousespeed "1"
cl_mouselook "1"
cl_idealpitchscale "0.8"
net_graph "0"
net_scale "5"
net_graphpos "1"
net_graphsolid "1"
voice_modenable "1"
hud_fastswitch "0"
muzzleflash_light "1"
cl_buy_favorite_quiet "0"
cl_buy_favorite_nowarn "0"
cl_autowepswitch "1"
cl_autohelp "1"
cl_radartype "0"
cl_radaralpha "200"
cl_locationalpha "150"
cl_crosshaircolor "0"
cl_dynamiccrosshair "1"
cl_scalecrosshair "1"
cl_crosshairscale "0"
cl_crosshairalpha "200"
cl_crosshairusealpha "0"
cl_radar_locked "0"
overview_preferred_mode "1"
overview_preferred_view_size "600"
hud_classautokill "1"
overview_health "1"
overview_names "1"
overview_tracks "1"
overview_locked "1"
overview_alpha "1.0"
spec_scoreboard "0"
cl_spec_mode "1"
commentary_firstrun "0"
scene_showfaceto "0"
ai_report_task_timings_on_limit "0"
ai_think_limit_label "0"
npc_height_adjust "1"
sv_pvsskipanimation "1"
scene_showlook "0"
scene_showmoveto "0"
commentary "0"
xbox_throttlebias "100"
xbox_throttlespoof "200"
xbox_autothrottle "1"
func_break_max_pieces "15"
suitvolume "0.25"
sv_noclipaccelerate "5"
sv_noclipspeed "5"
sv_specaccelerate "5"
sv_specspeed "3"
sv_specnoclip "1"
sv_skyname "sky_urb01"
sv_backspeed "0.6"
joy_wingmanwarrior_centerhack "0"
joy_axisbutton_threshold "0.3"
voice_forcemicrecord "1"
voice_enable "1"
voice_scale "1"
snd_duckerthreshold "0.15"
snd_duckerreleasetime "2.5"
snd_duckerattacktime "0.5"
snd_ducktovolume "0.55"
adsp_debug "0"
dsp_dist_max "1440.0"
dsp_dist_min "0.0"
snd_mixahead "0.1"
snd_musicvolume "1.0"
volume "1.0"
snd_pitchquality "1"
snd_digital_surround "0"
vprof_warningmsec "10"
vprof_unaccounted_limit "0.3"
vprof_verbose "1"
vprof_graphheight "256"
vprof_graphwidth "512"
texture_budget_background_alpha "128"
texture_budget_panel_bottom_of_history_fraction ".25"
texture_budget_panel_height "284"
texture_budget_panel_width "512"
texture_budget_panel_y "450"
texture_budget_panel_x "0"
budget_panel_height "384"
budget_panel_width "512"
budget_panel_y "50"
budget_panel_x "0"
budget_background_alpha "128"
budget_bargraph_range_ms "16.6666666667"
budget_panel_bottom_of_history_fraction ".25"
budget_history_range_ms "66.666666667"
budget_history_numsamplesvisible "100"
budget_show_history "1"
budget_show_averages "0"
budget_show_peaks "1"
budget_averages_window "30"
budget_peaks_window "30"
budget_bargraph_background_alpha "128"
r_gamma "0.5"
sv_forcepreload "0"
sv_voiceenable "1"
sv_logbans "0"
sv_log_onefile "0"
sv_logecho "1"
sv_logflush "0"
sv_logfile "1"
sv_logsdir "logs"
dsp_enhance_stereo "0"
dsp_volume "1.0"
dsp_slow_cpu "0"
cl_allowupload "1"
mp_decals "200"
r_drawmodelstatsoverlaymax "1.5"
r_drawmodelstatsoverlaymin "0.1"
r_ambientfactor "5"
r_ambientfraction "0.1"
r_ambientmin "0.3"
r_ambientboost "1"
r_eyesize "0"
r_eyeshift_z "0"
r_eyeshift_y "0"
r_eyeshift_x "0"
r_eyemove "1"
r_eyegloss "1"
skill "1"
closecaption "0"
con_enable "0"
cl_downloadfilter "all"
cl_allowdownload "1"
cl_forcepreload "0"
cl_soundfile "sound/player/jingle.wav"
cl_logofile "materials/decals/spraylogo.vtf"
cl_timeout "30"
cl_showpluginmessages "1"
tv_nochat "0"
sv_unlockedchapters "1"
cl_updaterate "20"
cl_cmdrate "30"
bgmvolume "1"
password ""
name "?"
=============

зы: За отдельную плату, могу рассказать как покупать Дигл в ножевом раунде biggrin.gif
Рамзя
Feb 1 2007, 09:36
Tybalt,
пасиб! Насчет дигла отдельный вопрос, всегда хотел знать - КАК???? biggrin.gif
-dp_vor-
Feb 1 2007, 12:17
Цитата(Gren4 @ Jan 24 2007, 16:45) [snapback]1061979275[/snapback]

Вот господа пропишите в консоли такие настройки и проблем не будет...
cl_cmdrate "100"
cl_updaterate "100"
rate "25000"

выставил))))) пинг вырос в 2 раза начались лаги....
Gren4
Feb 1 2007, 12:39
Цитата(-dp_vor- @ Feb 1 2007, 12:17) [snapback]1062022857[/snapback]

выставил))))) пинг вырос в 2 раза начались лаги....

Я сам играю с такими настройками и проблем нет.
Wespe
Feb 1 2007, 14:19
Цитата(Tybalt @ Feb 1 2007, 00:32) [snapback]1062021837[/snapback]

зы: За отдельную плату, могу рассказать как покупать Дигл в ножевом раунде biggrin.gif

Жулик... blink.gif
biggrin.gif

Кстати, путём несложных экспериментов выяснил, что ставить при игре на серверах NITRO настройки выше, чем
cl_updaterate "66"
cl_cmdrate "66"

большого смысла нет, - начинаются потери пакетов.

Сервер по всей видимости тянет все три NITRO и имеет sys_ticrate = 66 FPS, что и объясняет тормоза и лаги.
D.o.c.t.o.r
Feb 1 2007, 20:52
Зачем
вам rate 25000? В случае, если пакеты прийти по каким-либо причинам
прийти не смогут, то канал заступорится и будут потери... rate 20000
хватает более чем


Я бы рекомендовал такие настройки:

rate 20000
cl_cmdrate 66
cl_updaterate 66

Кстати чем выше значения cl_updaterate & cl_cmdrate, тем выше пинг.
ЛЕХА 81
Feb 24 2007, 21:11
во блина все перерыл а этого ненашол LOL

Я про стандартный конфиг очь долго мучился с ним ((( чтоб все востоновить как изначяльно было а тута фсе есть )))
2D_rush
Feb 24 2007, 23:10
-autoconfig прописать и все
-dp_vor-
Feb 28 2007, 20:54
а можно повысить ейты на серваке????
ihts
Feb 28 2007, 21:37
Цитата
а можно повысить ейты на серваке????


О каких рейтах речь?
-dp_vor-
Feb 28 2007, 21:40
Цитата(daz loh @ Feb 28 2007, 21:37) [snapback]1062177169[/snapback]

О каких рейтах речь?

Server Tick Rate
ihts
Feb 28 2007, 22:03
Данная команда прописывается в батнике запуска сервера .
"-tickrate" и ставим нужное вам значение , по умолчанию стоит 33 тик .
-dp_vor-
Feb 28 2007, 22:21
Цитата(daz loh @ Feb 28 2007, 22:03) [snapback]1062177394[/snapback]

Данная команда прописывается в батнике запуска сервера .
"-tickrate" и ставим нужное вам значение , по умолчанию стоит 33 тик .

а как на скаченом с соурс???? там смотрел в файле конфиг так и не понял куда прописать...
kolyagroop
Mar 5 2007, 10:28
играть надо с настройками
rate 20000-25000
cl_cmdrate=cl_updaterate =100


Каждая из приведенных выше команд набирается в консоле ( НЕ В ЧАТЕ) отдельно !!!

Хотелось бы так же напомнить тем, кто не умеет пользоваться консолью или просто не знает как ее активировать:
Цитата


Как вызвать консоль в игре? нажимаю "~" но ничего не происходит!
Есть
2 пути: либо зайти в свойства ярлыка на запуск CS: Source и в строке
path (путь) после hl2.exe через пробел добавить следующее: -console

либо

в
настройках игры (уже в самом CS: Source а не в Steam) в разделе
Keyboard (Клавиатура) нажать Advanced (Дополнительно) и поставить
галочку у "Enable developer console (Включить консоль разработки)".







Что бы игра была комфортной, игроки, умеющие пользоваться биндами, могут воспользоваться биндами предоставленными DyaDya:
Цитата
DyaDya писал:
rate 20000 (просто rate, и значение без пробелов)

bind "кнопка" "rate 15000; cl_cmdrate 33; cl_updaterate 33" (минимум 10000) - мясо
bind "кнопка" "rate 20000; cl_cmdrate 66; cl_updaterate 66" - про
bind "кнопка" "rate 25000; cl_cmdrate 100; cl_updaterate 100" - турнамент


Часто при просьбе админа сменить значение одного из параметров задаются вопросы: "Что это?", "Зачем?", "На что это влияет?".

Раз

Лучший игровой портал!