Snake 60 писал(а):Вопрос к [»Twilight«]-у
Раз писалось мне, значит что-нибудь ответить надо )
Snake 60 писал(а):Во многих статьях из интернета про рейты читал, что клиентские cl_cmdrate и cl_updaterate обязательно должны быть одинаковыми (даже есть плагины, которые кикают если у клиента это не так) Почему возникло такое мнение??? и правильное ли оно??? Ведь если у человека АДСЛ (то бишь ассимметричный канал, допустим как у меня 1024/512) то он физически не сможет отдавать пакетов столько же сколько получать? или эта скорость обеспечит нормальный прием/отдачу с клиентскими параметрами rate 30000; cl_cmdrate 100; cl_updaterate 100 (допустим рассматриваем 100 тиковый КВ-серв на 12 слотов)?
Гм, наверно 99% этих статей было о рейтах для движка GoldSource, или переписаны с них заменой имен переменных под Source, потому правдивыми быть не могут.
Мнение такое возникло скорее всего из простой логики. Ведь если клиент получает 100 пакетов, а шлет только 33, значит он получает более точную картину происходящего, а о себе шлет менее точные данные, и в него труднее попасть? Мнение это не то что правильное, а не совсем корректное, так как не учитывается, что клиент с рейтом 100/33 вместо 100/100 будет вредить себе тоже (регистрация его попаданий будет более точная, если сервер более точно будет знать где сейчас находится модель игрока клиента, то есть с какой точки начинать рассчитывать траекторию полета пули). Но внимание к асимметрии рейтов, если честно, завышено. Асимметрические рейты не дают столь ощутимой выгоды над симметрическими, пока каждый из рейтов выше 33, а более высокое число рейта всегда выгоднее меньшего. Потому главное, чтобы рейт соответствовал возможностям канала и железа.
Помимо того, бытует мнение, что рейты обязательно должны быть кратными 33 :)
Это заблуждение от того, что тикрейт сервера может быть кратным только 33.
P.S. Когда имел канал 128/32 юзал рейт (upd/cmd) 66/41. Сейчас тоже 1024/512, и юзаю 100000/100/66. Юзал бы 100/100, но стабильных 100+ FPS в КСС у меня нет, потому довольствуюсь cmd 66.
P.P.S. Параноидальным администраторам советую присмотреться к переменной sv_client_cmdrate_difference. Она отвечает за максимально возможное отклонение cmd-рейта клиента от его же update-рейта, и если разница превышена - сервер поменяет значение сmd клиенту. Напр. при sv_client_cmdrate_difference 20 на сервере и cl_updaterate 100 cl_cmdrate 66 у клиента, сервер будет форсировать клиенту cl_cmdrate 80 (что не всегда есть good).
Snake 60 писал(а):И еще такой момент. На некоторых серверах жёстко прописываются серверные рейты, то бишь в server.cfg забивают допустим вот такие параметры:
sv_minrate "25000"
sv_maxrate "25000"
sv_minupdaterate "66"
sv_maxupdaterate "66"
sv_mincmdrate "66"
sv_maxcmdrate "66"
таким образом сервер сам выставляет рейты у клиента 25000/66/66 (в этом можно убедиться если посмотреть нет_граф у подключившегося клиента, хотя команды ma_rates или zb_netinfo показывают другие параметры, те, которые были у клиента до этого или те которые забиты в файл avtoexec.cfg) Так вот, вопрос в следующем. Правильно ли так делать и оправдано ли это? И если можно так делать, то можно забить на все плагины подобного рода, которые проверяют рейты???
Я считаю, что делать так нельзя, ведь это несправедливо по отношению к клиентам со слабым каналом. Форс рейтов к более высоким сделает их игру на сервере нереальной из-за лагов. Помню когда у меня был канал 128/32кбит сам такого натерпелся, ведь у меня канал физически не мог давать требуемых 66 пакетов.
Потому я всегда советую переменные
sv_minrate 20000
sv_minupdaterate 33
sv_mincmdrate 33
sv_maxrate 100000
sv_maxupdaterate 100
sv_maxcmdrate 100
Они будут универсальны для всех клиентов с разными каналами, а реальная "скорость общения" клиента с сервером будет зависеть уже от тикрейта сервера и настроек клиента.
Далее, ma_rates показывает те значения переменных, какие выставил клиент, но не реальные, а zb_netinfo - более реальные, но с учетом корректировки рейтов сервером. Похоже, что реальной картинки не дает ни один плагин. Мне кажется что если update/cmdrate сервер может реально исправить (подтверждается net_graph'ом), то rate он поменять клиенту не способен (подтверждается zblock + лагами игрока c низким rate), хотя я могу ошибаться.
В целом, я не люблю темы о багах сетевого кода Source нового 7го протокола, за этим идите на форумы steampowered.