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



Нужно понимать, что для оптимального результата на каждом сервере придётся ставить различные рейты, так все сервера настроены по-разному (параметр "tickrate" - на протяжении каждого тика, сервер обрабатывает принятые команды, контролирует gamerules. После каждого такого тика сервер обвноляет информацию о игровой зоне, позиции игроков и т.д и посылает эту информацию клиенту. Большой тикрейт несомненно принесет больше удовольствия от игры, но не каждый сервер потянет такую нагрузку да и не каждый клиент сможет полностью насладится им.

Параметры клиентской части:


cl_updaterate – сколько раз в секунду Ваш компьютер запрашивает сервер о позициях игроков (по умолчанию 20);
cl_cmdrate – сколько раз в секунду Ваш компьютер посылает позиции игроков на сервер (информация о Вас) (по умолчанию 20);
rate – максимальное количество байтов, которые Вы можете получить в секунду.

 Следует знать, что клиентский rate ограничивается серверным sv_maxrate, клиентский cl_updaterate ограничивается серверным sv_maxupdaterate, клиентский cl_cmdrate ограничивается серверным sv_maxcmdrate.

Подбор оптимальных значений


Зайдите на сервер и поменяйте Ваши рейты на cl_cmdrate 80 и cl_updaterate 60. Поиграйте несколько минут. Вы должны убедится, что значения в области под номером 5 на net_graph не урезаются сервером. Если значения всё время показывают 33.3 или 66.6, это значит, что Вы должны уменьшить значения до cl_cmdrate 66 и cl_updaterate 45. Поиграйте несколько раундов, и наблюдайте за loss и choke. Если у Вас choke, Вы должны поставить рейты на более низкие значения. Придерживайтесь соотношения три к четырём, то есть updaterate должен составлять ¾ от cmdrate. В принципе это необязательно, но желательно.

К примеру, если у Вас choke 10, то и рейты следует опустить на 10 значений, до cl_updaterate 40 и cl_cmdrate 55. При игре на паблик серверах вполне нормальным считается choke 5 в середине раунда, а в начале и в конце раунда до 10-20 (choke всегода выше в начале и в конце раунда, когда сервер сбрасывает и обновляет объекты).

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

Параметр rate в наше время быстрого интернета лучше выставить в значение из диапазона 25-30 тысяч, в зависимости от скорости соединения.


Приложение


Сетевые консольные команды #1:


cl_allowdownload - Разрешить скачивание ресурсов с сервера к игроку. Влияет только на время и шанс подключения. Т.е, если неактивно (стоит в 0), а на сервере модель, которой у вас нет вам не удастся завершить процесс подключения. Рекомендую активизировать (значение = 1).

cl_allowupload - Разрешить скачивание сервером ресурсов клиента. Та же ситуация, если у вас модель есть, а на сервере ее нет, то вашу модель никто не увидит. Рекомендую активизировать (значение = 1).

cl_resend - Время через которое будет снова послан пакет, если предыдущий не дошел. Чем меньше тем быстрее будет исправлена ошибка при передаче пакета данных, но иногда стоит ставить значение не 1, а 2 или даже 3 т.к. если на линии есть шумы и следующий пакет тоже не дойдет, будет критическая ошибка и вылет с сервера (в правом-верхнем углу сообщение Connection Problem). Для начала поставьте значение 1.

net_graph - График скорости соединения. Значения: 1- статистика соединения, 2 - статистика и график соединения, 3 - расширенная статистика соединения

net_graphwidth - Ширина графика скорости соединения. Следует оставить значение по умолчанию - 192.

net_graphpos - Расположение графика скорости соединения. Т.е. слева, по центру или справа. Оставьте по умолчанию слева (значение = 1).

Сетевые консольные команды #2:

rate [0-99999] – Устанавливает максимальное количество байтов информации в секунду, которое может принять хост при загрузке (Download, или входящий траффик). Я прочел тонны статей по этому проказателю за много лет, и каждая из этих статей делает различные выводы относительно того, какое значение этого показателя должно быть. Поэтому я зашел на сервер и провел испытания с различными значениями, чтобы понять, какое из них наилучшее для меня. Я использовал значения rate в 1000, 5000, 10000, 15000, 20000 и 25000 и не заметил никаких существенных различий в значениях таких показателей, как ping, loss или choke. Сервер, на котором я проводил испытания, имел максимальное значение rate, установленное для клиентов, и я, было, подумал, что моё значение в 1000 будет слишком низким, но это оказалось не так.
(Рекомендация: - Все, что я могу сказать по этому поводу, – пробуйте разные значения, пока Вы не почуствуете, что достигли наилучшего из возможных соединений. Большинство статей говорит, что для кабельного интернет-соединения налучшими являются значения rate между 10000 и 20000).

cl_rate [0-99999] - Устанавливает максимальное количество байтов информации в секунду, которое может отправить хост (Upload, или исходящий траффик). И опять, Я прочел тонны статей по этому проказателю за много лет, и каждая из этих статей делает различные выводы относительно того, какое значение этого показателя должно быть. Поэтому я зашел на сервер и провел испытания с различными значениями, чтобы понять, какое из них наилучшее для меня. Я использовал значения cl_rate в 1000, 2500, 5000, 75000, 10000 и 20000 и не заметил никаких существенных различий в значениях таких показателей, как ping, loss или choke. И опять, Сервер, на котором я проводил испытания, имел максимальное значение cl_rate, установленное для клиентов, и я, было, подумал, что моё значение в 1000 будет слишком низким, но это оказалось не так.
(Рекомендация: - Пробуйте разные значения, пока Вы не почуствуете, что достигли наилучшего из возможных соединений. Большинство статей говорит, что для кабельного интернет-соединения налучшими являются значения cl_rate между 7500 - 10000).

cl_updaterate [0-999] – Максимальное количество пакетов обновлений (updates) в секунду, которые Вы запрашиваете у сервера (Download или входящий траффик). Это еще один из тех таинственных показателей, по которому каждого есть своя теория, но все эти теории немного отличаются друг от друга. Эта команда определяет количество пакетов в секунду, которые Вы запрашиваете у сервера. Сервер может поставить ограничение на это значение. Когда я в последний раз проверял настройки сервера, то по умолчанию стояло значение "60". Поэтому Вы можете менять значения около этого уровня, но никакое значение свыше "60" не покажет никакого улучшения.
(Рекомендация: - Пробуйте разные значения, пока Вы не почуствуете, что достигли наилучшего из возможных соединений. Большинство статей говорит, что для кабельного интернет-соединения налучшими являются значения 50 - 100. Я использую значение 85, которое отлично работает на сервере с ограничением этого показателя на уровне 60.)

cl_cmdrate [0-999] - Максимальное количество командных пакетов в секунду, отправляемое на сервер (Upload или исходящий траффик). Этот показатель должен устанавливаться пропорционально показателю cl_updaterate. Обычно Ваш входящий траффик составляет от ?-ой до1/8-ой Вашего исходящего траффика, но опять Вы прочтете в многочисленных статьях, что эти 2 показателя должны быть одинаковыми или очень близкими по значению
(Рекомендация: - Пробуйте разные значения, пока Вы не почуствуете, что достигли наилучшего из возможных соединений. Большинство статей говорит, что для кабельного интернет-соединения налучшими являются значения 30 - 100. Я использую значение 45, которое отлично у меня работает.)

cl_interp [0-0.1] – Регулирует будут ли вычисляться (интерполироваться) позиции объекта, начиная с такого-то количества секунд в прошлом.
Это очень ценная настройка, если у Вас есть проблемы с лагами при выключенной команде cl_smooth. Значения этого показателя находятся в связи с Вашим пингом. Поэтому, если у Вас пинг 100 , то Ваш cl_interp должен быть 0.1, а при пинге 50 значение cl_interp должно быть 0.05.
(Рекомендация: - Оставьте значение по умолчанию, только если у Вас нет проблем с попаданиями в хитбоксы (hitbox), и постарайтесь соотнести значение этого показателя с Вашим пингом.)

cl_interpolate [0/1] – Обсчитывает объекты на стороне клиента. Изменение этой настройки приведет к чему-то похожему на прыгающий экран, поэтому Вы может быть захотите испытать ее при значении "1" (по умолчанию), а потом выставить на "0".
(Рекомендация: - Оставьте значение по умолчанию, только если у Вас нет чрезвычайных проблем с попаданиями в хитбоксы (hitbox),.)

cl_lagcomp_errorcheck [0/1] – Включает для игрока указатели других игроков для проверки ошибок в позиционировании. При включенном на "1" поможет Вам с точностью Вашей стрельбы путем проверки ошибок в позиционировании. Правда, это помогает, если Вы успеваете прицелиться первым.
(Рекомендация: - Оставьте значение по умолчанию или измените на "1")

net_channels – Показывает информацию о сетевом канале, отличный способ определить Ваши оптимальные сетевые настройки

net_maxfragments – Максимальное число фрагментированных байтов на пакет. У меня по умолчанию 1280 байтов.
(Рекомендация: - Оставьте значение по умолчанию, если Вы не испытываете серьезных проблем с choke или плохим пингом.)

 

Примечание: описание этих команд дано для 1.6, но эти команды работают и в сорс

 

Статья подверглась серьезной переработке с моей стороны (SeReGa).

Автор: неизвестен, несколько



Добавить комментарий


Защитный код
Обновить