Перейти к содержанию

Клиентские сетевые настройки


HooLIGUN

Рекомендуемые сообщения

[textblue]Клиентские сетевые настройки для игры на проекте RGMIX:

rate 30000;

cl_cmdrate 66;

cl_updaterate 66; [/textblue]

Ping— Packet Information Groper, сначала придумали сокращение, а уж затем — собственно термин. Это интервал времени, в миллисекундах или в тысячных долях секунды между посылкой пакета на сервер Вашим компьютером и получением ответа («pong»). Этот параметр наиболее зависим от вашего типа соединения, большинству модемов требуется около 150 мс просто чтобы достучаться до ISP, так что пинг редко бывает ниже 200. Пользователи ADSL, как правило, имеют пинг около 10 мс до провайдера, так что для них преградой является фундаментальные скоростные ограничения их части интернета; это игроки, на коннект которых больше всего влияет расположение сервера, если разница между 30 мс и 80 мс для Вас является существенной.

Packet Loss — это, пожалуй, самый важный и требующий оптимизации параметр, которым часто жертвуют в пользу пинга. Пакет считается потерянным, если на каком-то отрезке пути он был отброшен — или потому, что устарел, наиболее распространенный случай или потому, что ограниченная пропускная способность не позволила ему пройти. Эти надоедливые ‘‘Connection Problems’’ появляются, когда потеря пакетов достигает 100%, т.е. ничего не проходит в течение нескольких секунд единовременно или даже постоянно, из-за чего Вы спустя некоторое время уходите с сервера, если не знаете, как справится с этими ужасными проблемами.

Choke — это среднее время, в миллисекундах между моментом генерации пакета на Вашей машине и моментом отсылки его на сервер. Одной из главных задач оптимизации является получение значения choke, равного 0, или, по крайней мере, близкого к нулю настолько, насколько это возможно.

«Broadband Slowdown» — клиенты с высоким пингом не являются причиной лагов! Я не знаю, из чего вырос этот глупый миф, но это — абсурд. На самом деле, как Вы уже наверное догадались, замедляют сервер широкополосные соединения — «broadband connections». Выделенщики — «broadbanders» запрашивают большое количество обновлений в секунду с высокой точностью (‘‘accuracy’’ — packet size, размер пакета), при этом сами посылают большое количество обновлений, опять-таки с большим размером пакетов. Все, что используется широкополосным соединением, полоса пропускания сервера, используемая одним широкополосным соединением, может ‘‘прокормить’’ от 5 до 10 модемщиков, и все посылаемые пакеты съедают существенную часть ресурсов процессора и памяти сервера. Самое нечестное в этой ситуации то, что модемщики, в большей степени страдающе от падения производительности, еще и становятся козлами отпущения за грехи выделенщиков. Может быть, этот миф появился оттого, что при медленном сервере у модемщиков большой пинг, и выделенщики просто заключают, что это причина замедления, а не его последствие. Кикать модемщиков с сервера при его замедлении не только не честно, но и бесполезно, поскольку никаких заметных изменений это не даст.

Также ошибочно считать, что приведенные характеристики зависят от сетевого кода, используемого конкретным модом. Например, «CS» и в меньшей степени «DoD» сделаны так, чтобы уменьшить пинг клиентов настолько, насколько это возможно, даже не задумываясь о потере пакетов или choke. Это хорошо и замечательно для широкополосной передачи и хороших видеокарт, но на людей с нестандартными видеокартами и модемами разработчики откровенно клали с двумя проборами. К счастью, «Fireamrs» обеспечивает хорошее сочетание двух типов соединения, обеспечивая, например, регулируемую клиентом точность, что позволяет существенно снизить трафик и облегчает жизнь людям на коннекте с ограниченной пропускной способностью, т.е. модемщикам.

Как найти подходящие для Вас значения? Half-Life имеет замечательную небольшую утилиту под названием netgraph. Чтобы включить её, наберите в консоли net_graph 1. Можно использовать значения от 1 до 5, каждое из которых показывает несколько различные вещи, 0 отключает netgraph. Лично я использую 3, но никто не запрещает вам выбрать вид на свой вкус. Netgraph может вызвать понижение fps, но я считаю его несущественным. Большое падение должны заметить только те, у кого графический fps значительно выше сетевого. В этом случае netgraph можно или уменьшить в размере или вообще выключить после того, как Вы оптимизируете свой сетевой код. Ниже приводится описание информации, выводимой net_graph 1:



http://www.nashalife.ru/images/upload/subjects/console/netgraph.gif


  • Счетчик FPS («FPS counter») — Ваше текущее значение fps.
  • Сетевое время запаздывания («network latency») — это ваше текущее значение времени запаздывания (пинг).
  • Ширина входящей полосы пропускания.
  • Ширина исходящей полосы пропускания.
  • График, показывающий изменение пинга. Чем выше пинг, тем тоньше становится график. Также отображает потерю пакетов —красным и несогласованные объекты («mismatched entities») — синим.
  • Текущая частота обновления сервера, входящая частота.
  • Текущая частота обновления клиента, исходящая частота.

CVar — это клиентская переменная («client variable») или серверная переменная («server variable»), величина, управляющая некоторыми операциями движка, которая может быть изменена клиентом или администратором сервера. Например, con_color может быть использована для ввода RGB — значения цвета текста в консоли. Я рассмотрю нужные cvar'ы, объясню, как их нужно использовать, и дам рекомендации по подбору оптимальны значений. Я неизбежно пропущу некоторые из них, так как их сотни, хотя большинство на самом деле не влияют на сетевую производительность. Далее буквой x будет обозначаться числа; вводятся переменные в консоли, хотя также они могут быть введены из командой строки.


Netgraph CVar'ы

net_graph x — как отмечено выше, управляет отображением netgraph. 0 — выключает, 1-5 отображает выводимую информацию в различных комбинациях. По умолчанию 0. Я предпочитаю 3.

net_graphpos x — определяет позицию netgraph на экране. 1 — внизу справа, 2 — внизу по центру, 3 — внизу слева. По умолчанию 1, что меня вполне устраивает, хотя некоторые ставят 2.

net_graphwidth x — ширина графика в пикселях. Один пиксель на графике соответствует одному отправленному пакету. По умолчанию 192. Не забывайте оставлять значение достаточным для сохранения читабельности текста.

net_graphheight x — высота графика в пикселях. По умолчанию 64. Опять-таки, не забывайте о читабельности текста.

Вам интересно, почему пинг на netgraph'e как правило меньше пинга на scoreboard'e? Хм, пинг, показываемый netgraph'ом — это чистый сетевой пинг. Пинг на scoreboard'e — это, скорее, отображение временных показателей в их действии против игрока, поскольку он включает время, необходимое для прорисовки и отображения пакета на клиентском компьютере. Каждый показатель является по-своему полезным.


CVar'ы, связанные с FPS

fps_max x — устанавливает максимальный графический fps. Любое значение в промежутке от 1 до 100 является допустимым, значение по умолчанию 72. Half-Life попытается равномерно разделить каждую секунду на соответствующее количество ‘‘кусочков’’. Если прорисовка происходит быстрее, чем такой отрезок времени, то программа начинает рисовать следующий, никогда не уходя при этом дальше, чем на 1 кадр вперед; это делается для рационального использования памяти и поддержания заданной частоты. Если же прорисовка очередного кадра не укладывается в соответствующий интервал, то она продолжается в следующем. Никто не верит мне, но это самая важная переменная для оптимизации сетевого кода. Поскольку все в Half-Life завязано на кадрах, а они, в свою очередь, зависят от графических кадров, то это чрезвычайно важно. Самый распространенный совет — ставить значение 100, максимальное, так, чтобы прорисовывалось как можно больше кадров в том смысле, чтобы проходило наименьшее время между между получением пакета и его прорисовкой. Это абсолютно и полностью неверно. Как отмечалось ранее, сетевой код работает совершенно определенным образом, и самое главное здесь — регулярность, постоянство. Лучше иметь стабильные 20 fps, чем прыгающие между 20 и 30. На практике часто оказывается, что выставление более низкого значения fps_max повышает среднюю частоту кадров, поскольку их прорисовка четко укладывается во временные "кусочки", что ликвидирует неизбежные потери времени, когда кадру для прорисовки требуется больше одного временного интервала. Значение, близкое к правильному, но все же не совсем правильное, хуже резко отличного, поскольку каждый интервал больше, и потеря половины интервала вреднее. Вам следует значительно снизить эту величину, пока Вы не найдете точку, в которой ваш fps будет практически постоянным и близким к выставленному пределу. Разумеется, могут быть карты или большие перестрелки, где fps может падать, но он должен быть постоянным при нормальной игре. При приближении к нужному значению все может выглядеть очень плохо, но когда Вы найдете его, результат окажется гораздо лучше, чем Вы могли подумать, поскольку кадрирование будет постоянным, и мозгу легче будет интерполировать движущееся изображение. Именно поэтому изображение в телевизоре смотрится лучше, чем игра на 24 fps, поскольку телевизор всегда держит одну частоту. Корректный подбор этой величины может сразу снизить пинг, потерю пакетов и choke. Все еще не верите? Тогда можете прекратить читать это руководство, все, что написано дальше, бесполезно, если Вы не выполнили этот шаг. Если полученный результат слишком низний, меньше 20 fps, то попробуйте снизить детализацию для повышения скорости рендерринга. Также бесполезно ставить значение fps_max больше поддерживаемого вашим монитором, 60 Hz и 75 Hz — нормально, если только Вы не запускаете сервер, поскольку лишние кадры просто не будут отображаться.

fps_modem x — пусть Вас не вводит в заблуждение название, эта переменная одинаково применима ко всем типам соединения. Устанавливает максимальное количество графических кадров в секунду для игры по интернету. Используется это значение или fps_max — какое меньше. Допустимо любое число от 1 до 100, по умолчанию 100. Это может как-то пригодится только тем, кто играет и по LAN'у и по интернету — на LAN'е будет использоваться fps_max, а в интернете — fps_modem. Если не считаете, что fps влияет на производительность сети, то как тогда Вы можете объяснить использование разных cvar'ов в зависимости от типа соединения? Готов поспорить, что кто-то все еще не верит мне... Возможно будет полезно снизить уровень детализации и получить высокий fps на LAN'е, чтобы воспользоваться преимуществами дополнительной пропускной способности.

fps_lan x — устанавливает максимальный графический fps для игры по LAN'у. Используется это значение или fps_max — какое ниже. Допустимо любое число от 1 до 100, по умолчанию 100. Бесполезен практически для любого HL mod'a, поскольку играет роль только если mod играется и в сингле, где используется fps_max, и по LAN'у (fps_lan) и по интернету (fps_modem). Я таких модов не знаю. Единственная ситуация, которая пришла мне в голову — это если одна и та же машина используется иногда как выделенный сервер, а остальное время — на LAN'е и интернете. В этом случае fps_lan и fps_modem должны иметь нужные значения, а fps_max выставлен в 100, чтобы выделенный сервер работал настолько быстро, насколько это возможно. Что опять-таки неправдоподобно.


Дурные лагоубийственные CVar'ы

Я написал "дурные", потому что не понимаю, зачем людям может понадобится менять их; но когда лагокомпенсатор только появился, все выделенщики хотели знать их, так что...

cl_lc x — 1 или 0, по умолчанию 1. 1 означает использование Half-Life'ом лагокомпенсатора, если мод и сервер его поддерживают, 0 выключает его. Компенсация лагов — это система, с помощью которой Вы попадаете в то, что Вы целились, когда стреляли, вместо того, чтобы стрелять на опережение цели. Зачем вам может понадобиться отключить его — выше моего понимая, разве что у Вас пинг меньше 10. Может быть на быстром LAN'e, где это могло бы ограничить пропускную способность, но поскольку LAN'ы имеют тонны нерастраченной пропускной способности, в этом нет действительной необходимости. Пусть работает.

cl_lw x — 1 или 0, по умолчанию 1. 1 означает, что точность стрельбы и отдачу Half-Life оставит для обработки клиенту. Если отключить, то при нажатии fire Вы увидите стрельбу оружия после паузы, равной вашему пингу, потому что придется ждать ответа сервера о том, какая была отдача, и куда полетели пули. Это может иметь некоторый смысл в модах, где стрельба просчитывается на сервере, «CS» как самый очевидный и жуткий пример, но, например, в «Firearms», который в любом случае использует клиентские подсчеты, а сервер подравнивает то, что говорят клиенты, в этом нет смысла, и это делает игру сложнее из-за необходимости учитывать отдачу. Нет разницы в используемой пропускной способности: 1 посылает информацию на сервер, 0 посылает те же данные в другом направлении.

cl_lb x — 1 или 0, по умолчанию 1, раньше по дефолту стоял 0, что отражено в некоторых руководствах. При 1 игра будет помещать спрайты крови, если Ваш клиент считает, что Вы попали в цель, при 0 она еще подождет подтверждения от сервера. Это может показаться странным, и служит только для индикации попадания с высококорявых оружий в модах вроде «CS», где оружие просчитывается сервером. Бесполезно в «Firearms». Оставьте включенным.


Собственно CVar'ы сетевого кода

Эти cvar'ы непосредственно влияют на сетевые пакеты и могут, таким образом, существенно изменить работу сети. Неправильная их установка делает игру неиграбельной или даже приводит к постоянным проблемам соединения при заходе на сервер. Не забудьте сохранить предыдущие значения, прежде чем что-то менять, для этого введите в консоли cvar без числа после него. Half-Life выведет текущее значение.

cl_updaterate x — любое целое значение от 1 до 200. По умолчанию 20. Это количество обновлений, которое клиент хотел бы получать от сервера в секунду. Клиент сам не отправляет такое количество запросов, просто когда Вы присоединяетесь к серверу или изменяете значение, он шлет серверу пакет с просьбой «Прошу посылать мне столько-то обновлений в секунду». Сервер будет честно стараться посылать столько, сколько запрошено. Лучшее значение равняется fps_max; не превышайте 30 обновлений в секунду, даже 25 не очень хорошо. Если Ваше значение fps_max выше, то подберите в качестве cl_updaterate множитель значения fps_max. Например, если fps_max равняется 42, то используйте cl_updaterate, равный 21. Игра начинает дергаться около 13, так что не бойтесь пробовать значения вплоть до 15. Такие значения дают себя знать только когда в игре объекты перемещаются очень быстро, вроде гранат из ‘‘m79’’, ‘‘gp25’’ или ‘‘m203’’. Так как вам просто сообщается то, что уже произошло на сервере, нет необходимости выставлять высокие значения; они только добавят ненужную нагрузку на сервер, вызывая «broadband slowdown» (смотри выше). Ах, да, для LAN'a ставьте 50.

cl_cmdrate x — любое целое значение от 1 до 100. По умолчанию 30. Величина, противоположная cl_updaterate — устанавливает число исходящих пакетов в секунду. Нет никакой причины ставить значение выше fps_max, потому что в этом случае будет происходить отсылка одних и тех данных дважды в течение некоторых кадров. Так как исходящая полоса пропускания меняется меньше, чем входящая, в общем случае верхней границей значений является 40, 30 для модемов. Установите его равным fps_max или делителю fps_max, например, половине, если Ваш fps_max выше указанных пределов.

cl_rate x или просто rate x — любое целое от 0 до 9999. Значение по умолчанию определяется выбранным при установке типом соединения. Это объем данных, разрешенных к пересылке каждую секунду в байтах и входящих, и исходящих. Чем выше значение, тем больше данных пересылается каждую секунду, и тем лучше клиент может отслеживать происходящее на сервере. В то же время, требуется большая полоса пропускания, как на сервере, так и на клиенте. Как клиент, Вы захотите установить эту величину настолько большой, насколько это возможно, для оптимальной плавности. Слишком большое значение приведет к потере пакетов, так как просто физически окажется невозможным посылать некоторые пакеты. Начните со значений, несколько больших, чем приведенные ниже, и постепенно сбрасывайте их до тех пор, пока потеря пакетов не прекратится или станет минимальной, ведь она зависит еще и от сервера. При изменении настроек следует понимать, что это создает разницу в надежности соединения, так что следует по тестировать каждое значение 5-10 минут, прежде чем принимать решение.

Здесь приводятся приблизительные величины, для вашего конкретного соединения они могут быть совершенно другими.
от 64 кб/с до 128 кб/с — cl_cmdrate 33; cl_updaterate 33; rate 20000
от 256 кб/с до 1мбит/с — cl_cmdrate 66; cl_updaterate 66; rate 25000
от 2 мбит/с до 10мбит/с — cl_cmdrate 100; cl_updaterate 100; rate 30000

cl_resend x — любое целое значение от 0 до 16. По умолчанию 6. Устанавливает максимальное число попыток переслать потерянные пакеты. Если Вы выполнили предыдущие твики, Вы должны получить много пп, установка cl_resend в 1 снизит пп, не влияя на производительность и flush слишком сильно.

cl_timeout x — любое целое значение от 0 до 1000. По умолчанию 30. Устанавливает время в секундах, после которого соединение считается потерянным, если не было получено никаких пакетов. Часто эта ситуация восстановима, особенно когда Вы видите ‘‘живые’’ значения in и out. У меня поставлено 90.


Загрузочные CVar'ы

cl_allowupload x — 0 или 1, по умолчанию 1. При 1 разрешена закачка на сервер своих лого. Так как вряд ли это может вызвать лаги, если только первые 20-30 секунд, и позволяет другим игрокам видеть ваше лого, лучше оставить включенным.

cl_allowdownload x — 0 или 1, по умолчанию 1. При 1 HL может по необходимости загружать звуки или карты с сервера. Для звуков лучше оставить, а вот карты так загружать нельзя ни в коем случае! Во-первых, карты закачиваются в неупакованном виде, во-вторых, HL-соединение медленнее ftp, так что Вы потеряете времени больше, чем необходимо для нормальной закачки карты. Загляните лучше в соответствующий раздел на сайте и возьмите нужную карту оттуда.

cl_download_ingame x — 0 или 1, по умолчанию 1. При 1 разрешена закачка на ваш компьютер лого других игроков во время игры. По выше описанным причинам лучше оставить включенным. Скачанные изображения хранятся в файле custom.hpk в папке соответствующего мода; я рекомендую удалять его периодически, каждые две недели — вполне нормально, поскольку он может достаточно сильно разрастись, съедая много памяти и времени при запуске. Все равно HL при необходимости автоматически создаст новый файл.

Ссылка на комментарий
Поделиться на другие сайты

  • 9 месяцев спустя...

Благодарь, новые настойки узнал

[textred]RGMIX.EU Лучшее MIX Community Ru-Source![/textred]

Ссылка на комментарий
Поделиться на другие сайты

Благодарь

Есть спец. кнопка для таких целей http://www.rgmix.eu/public/style_images/rgmix/rep+.png:)
Ссылка на комментарий
Поделиться на другие сайты

Поставил)

[textred]RGMIX.EU Лучшее MIX Community Ru-Source![/textred]

Ссылка на комментарий
Поделиться на другие сайты

  • 6 лет спустя...
Сделайте что бы люди при заходе на сервер жирным шрифтом на весь экран видели какие должны быть клиентские настройки а то пол проекта играет как хочет кто с 20 рейтом кто с миллионным лерпом, вообще можно же сделать наверно что бы не пускало на сервера с другими настройками или опять переживания за актив ? Регламент не просто так же написан .
Ссылка на комментарий
Поделиться на другие сайты

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
Наверх
×
×
  • Создать...