1.
loss - количество потерянных пакетов из последних 100. Теряются пакеты из-за перегрузки канала (роутеров) между сервером и клиентом, либо из-за неудовлетворительного состояния линии связи между сервером и клиентом. Проблема "железная" и зачастую трудно устранимая.
choke - количество пакетов, отправка которых была задержана сервером, чтобы не превысить лимит полосы, устанавливаемый rate, sv_minrate и sv_maxrate (сервер генерирует слишком много трафика). Проблема в настройках HLDS, решается установкой высокого значения переменной sv_minrate (100000 например) и перезапуском сервера.
2.
choke - это количество пакетов из последних 100, которые были задержаны для конкретного клиента (не для всех), чтобы не превысить скорость передачи, которая у этого клиента задана в переменной rate. На клиентское значение rate сервер накладывает свои ограничения: клиентский rate не может быть больше sv_maxrate и не может быть меньше sv_minrate, именно в такой последовательности, сначала на "не больше", потом на "не меньше". На sv_minrate и sv_maxrate в свою очередь тоже накладываются ограничения: sv_maxrate не может быть больше 20000 (тут надо понимать, что в переменную вы можете поставить сколько угодно, но при расчетах значения выше 20000 будут игнорироваться), sv_minrate не может быть меньше 1000.
Значения sv_maxrate выше 20000 бессмысленны, это верно. А вот эффект от sv_minrate "100000" будет. Иначе говоря, если на сервере поставить sv_maxrate 20000 и sv_minrate "100000", то сервер будет пытаться "завернуть" трафик в канал ~100кбайт/сек для каждого клиента.
3.
Оптимальных настроек на все случаи жизни скорее всего нет. Если мы говорим о LAN'е (sv_lan "1"), то в этом режиме клиентский rate (а также sv_minrate и sv_maxrate) не учитывается вообще, вместо него для всех клиентов используется значение sv_lan_rate.
Оптимальность настройки рэйтов определяется по наличию choke. Есть choke -> повышаем sv_minrate (в случае с sv_lan "0") или sv_lan_rate (в случае с sv_lan "1").
Если смотреть на цифры, то:
20000 байт/сек должно хватать для классических серверов.
50000 байт/сек - для мяса типа ЗМ.
Можно поставить 100000 и вообще не париться насчет choke.
Про sv_minupdaterate и sv_maxupdaterate (если кто забыл - это минимальная/максимальная частота отсылки пакетов-обновлений от сервера к клиенту):
sv_minupdaterate 30-60. 30 -"разумный минимум чтобы не лагало". Больше 60 ставить не стоит, потому что некоторые играют на 60 FPS. Отсылать им лишние обновления незачем.
sv_maxupdaterate 50-101. 101 - для классических серверов, где важна стрельба. 50 - для мяса. Кстати, низкий updaterate заметно снижает нагрузку на процессор (по моим опытам, при поднятии апдейтрэйта у всех игроков с 30 до 101, загрузка ядра, на котором висел HLDS, выросла с 40% до 60%)
Лучше чтобы между значениями sv_minupdaterate и sv_maxupdaterate был интервал, чтобы дать клиенту свободу выбора. И не надо менять клиентский cl_updaterate вручную с помощью плагинов - не всем игрокам это нравится.
4.
Мое видение "нормальных рэйтов" в конфиге (при sv_lan "0"):
Для мяса:
* sv_minrate "100000"
sv_minupdaterate "30"
sv_maxupdaterate "60"
Для классики:
* sv_minrate "100000"
sv_minupdaterate "30"
sv_maxupdaterate "101"
© berq, он же Crock