bem | Дата: Четверг, 03.02.2011, 17:22 | Сообщение # 1 |
Zm
| Что такое лаг? И как с ним бороться!!! Для начала скажу, что данная статья предназначена в большей степени для обладателей модемов, т.е. для игры при пинге 150 и более Итак, для начала объясним такие термины как Пинг и Лаг: Пинг (Latency) - Время задержки сервера, т.е. время отправки-получения пакета данных за секунду, соответственно, чем пинг выше, тем задержка больше и наоборот. Лаг(и) (Lags) - Попросту "зависание" на некоторое время. Происходит при переполнении канала связи, при большом пинге или плохом качестве соединения. Причина резкого роста пинга - увеличение объема принимаемой клиентом от сервера информации сверх возможностей существующего канала, проблемы со связью, ретрейн модема, перегруженный канал провайдера и прочие проблемы соединения. Проще говоря, сервер передает больше, чем может прокачать, к примеру, ваш модем, в результате чего пакеты становятся и ждут очереди, пинг легко поднимется до 1000 и более. В результате шанс оказаться в лаге возрастает. Итак, существует 2 способа оптимизации, рассмотрим их: 1) Оптимизация интернет-соединения в среде Windows. Подробная статья по настройке располагается тут. Также для этих целей можно использовать программу MTU-Speed Pro 4.10 и подобные, можно взять здесь. 2) Оптимизация клиентских настроек непосредственно в игре, остановимся на этом подробнее. Как в оригинальном Half-Life, так и в его модах, присутствует файл настройки - config.cfg Располагается он в директории, где установлен мод, например, директория VALVE или TFC Итак, найдя его, открываем с помощью обычного блокнота и приступаем к редактированию. Непосредственно к параметрам соединения относятся такие команды: cl_updaterate "xx" - число обновлений (посылок) информации от сервера клиенту, в секунду. Иначе - скорость, с которой обновляются сведения об игре. Рекомендуемые значения от 5 до 20. Чем меньше значение, тем меньше забивается канал, соответственно и скорость обновления мала (что мешает при игре), и наоборот. cl_cmdrate "xx" - число обновлений (посылок) информации от клиента серверу, в секунду. Иначе - скорость, с которой посылаются команды на сервер. Аналогично cl_updaterate, рекомендуемые значения от 10 до 25 rate и cl_rate "xxxx" (работают в паре, но cl_rate в конфиге не прописана, соответственно подключается отдельно, об этом ниже) - ограничение входящего трафика (от сервера к клиенту) в байтах в секунду, рекомендуемые значения от 1000 до 3500. cl_cmdbackup "x" - количество пакетов посланных на сервер. То есть, сколько отсылается серверу пакетов в секунду, рекомендуемые значения 1 до 2. cl_resend "x" (в конфиге не прописана, подключается отдельно) - время, через которое будет снова послан пакет, если предыдущий не дошел. Чем меньше, тем быстрее будет исправлена ошибка при передаче пакета данных, но иногда стоит ставить значение не 1, а 2 или даже 3, т.к. если на линии есть шумы и следующий пакет тоже не дойдет, будет критическая ошибка и вылет с сервера (в правом-верхнем углу сообщение Connection Problem). Ставить на своё усмотрение. cl_lw "1" or "0" - все эффекты и действия связанные с оружием просчитываются на стороне клиента . Это помогает значительно оптимизировать работу, но у вас не будет 100%-ой гарантии, что то что вы видите действительно так . Хотя сколько я играл ни разу не заметил каких либо отклонений от реально происходящего. Хотите играть без задержки ставьте значение 1. cl_lc "1" or "0" - компенсация лагов на стороне сервера. Данный параметр заставляет сервер принять во внимание ваш пинг и значительно оптимизировать работу, но эта опция может быть отключена на сервере (sv_unlag 0). Если это так, то cl_lc да, впрочем, и cl_lw игнорируются. Значение cl_lc как вы поняли нужно поставить 1. Все эти команды надо использовать в группе, в отдельности ни одна из них не принесёт результата. Поэтому полезно создать несколько подключаемых конфигов и при необходимости переключать их. Делается это очень просто - в директории мода создаётся несколько файлов - например, modem_01.cfg, modem_02.cfg, modem_03cfg, modem_04.cfg. Обычно я ограничиваюсь 3 конфигами. Затем в config.cfg прописываем такую строку: bind "xxx" "exec modem_01.cfg" (xxx - имя клавиши для активации, modem_01.cfg - имя подключаемого файла) Все изменения можно наблюдать при помощи графика непосредственно в игре, включить который можно командой net_graph, установив значение 3 (находиться в главном конфиге). Итак, что у нас получилось: 1) Содержание modem_01.cfg Такие значения можно использовать при среднем пинге 120-170. Быстрое обновление, почти полное отсутствие лагов, чему способствует малый пинг (не в этой жизни) Входящий трафик составляет примерно 1.20 - 1.80 k/s, исходящий 1.60 - 2.20 k/s cl_updaterate "20" cl_cmdrate "25" cl_rate "3500" rate "3500" cl_resend "3" cl_cmdbackup "2" 2) Содержание modem_02.cfg Такие значения можно использовать при среднем пинге 170-250. Хорошая скорость обновления, возникновение лага маловероятно, но не исключено. Входящий трафик составляет примерно 0.90 - 1.60 к/s, исходящий 1.30 - 1.90 k/s cl_updaterate "15" cl_cmdrate "20" cl_rate "3000" rate "3000" cl_resend "2" cl_cmdbackup "2" 3) Содержание modem_03.cfg Такие значения можно использовать при среднем пинге 250-400. Обычно я пользуюсь таким. Средняя скорость обновления, но вполне пригодная для нормальной игры, возникновение лагов не исключается, т.к. пинг не очень хорош. Входящий трафик составляет примерно 0.70 - 1.40 k/s, исходящий 1.00 - 1.70 k/s cl_updaterate "10" cl_cmdrate "15" cl_rate "2000" rate "2000" cl_resend "1" cl_cmdbackup "2" 4) Содержание modem_04.cfg Такие значения можно использовать при среднем пинге 400-600 и более. Минимально возможная скорость обновления, но по крайней мере, играть будет легче, чем при постоянном лаге. Входящий трафик составляет примерно 0.60 - 1.20 k/s, исходящий 0.70 - 1.30 k/s cl_updaterate "5" cl_cmdrate "10" cl_rate "1000" rate "1000" cl_resend "1" cl_cmdbackup "1" Хотя объем входящего трафика в конкретный момент времени зависит от того, что происходить вокруг игрока - чем больше игроков, различных объектов, стрельбы и т.п. вокруг, тем больше трафик. Опять же, это зависит от компоновки карты. Я лишь написал примерные значения, которые получил, находясь один на сервере. Есть ещё 3 команды, немного влияющие на пинг: cl_allowupload "1" or "0" - разрешить скачивание сервером ресурсов клиента . cl_allowdownload "1" or "0" - разрешить скачивание ресурсов с сервера к игроку. cl_download_ingame "1" or "0" - разрешить скачивание ресурсов прямо в игре, например, карты которой у вас нет. Ставьте на своё усмотрение, я обычно ставлю - cl_allowupload "1", cl_allowdownload "0", cl_download_ingame "0". И в заключении повторюсь, что статья была в большей степени написана для игры по модему, т.е. с пингом 150 и более, при пинге 100 и меньше значения команд cl_updaterate, cl_cmdrate, rate и cl_rate можно увеличить. -===- Понижаем пинг -===- Все эти команды желательно прописать в конфиге, хотя некоторые лучше менять(например, pushlatency) в зависимости от ситуации и от сервера, на котором вы играете. Начнем: cl_allowdownload, cl_allowupload - при значении "1" разрешают игроку скачивать и закачивать модели, карты и т.д. В принципе на пинг влияет незначительно, поэтому лучше оставить 1. cl_cmdbackup - количество пакетов, посылаемых на сервер в секунду. ИМХО, лучше ставьте примерно 2. cl_cmdrate - скорость посылки команд на сервер. Наиболее оптимальное значение для игры по модему - 20-30 cl_download_ingame - скачивание моделей, логосов в игре... а нам это надо?:) Значит, ставим 0. cl_lc - компенсация лагов на стороне сервера, поэтому лучше поставить 1. К сожалению, работает только при включенной команде sv_unlag на сервере. cl_lw, cl_lb - для обоих ставим значение 1, действия, связанные с оружием будут просчитываться на стороне клиента, как впрочем и эффекты крови и т.д. cl_nodelta - запрещает дельта сжатие, советую поставить "0". cl_nopred - если хотите видеть плавное передвижение игроков - поставьте "0" cl_resend - время, через которое будет послан пакет, если предыдущий не дошел. Лучше установить примерно 4-5. cl_updaterate - скорость обновления сведений об игре. "20" является оптимальным значением. fps_modem - увеличивает FPS при игре по модему. Ставьте 28. mp_decals - количество одновременно видимых эффектов. Чтобы меньше лагало - ставьте 0. pushlatency - эта команда сглаживает лаги. Должно стоять значение от 50 до 100% пинга со знаком "-". Например, -150 при пинге 250. Теперь рассмотрим другие полезные команды: r_drawviewmodel - при значении "0" уменьшается FPS, да и играть, ИМХО, лучше. r_drawviewentities - хорошая команда, только моделей видно не будет:(. Оставьте 1. hud_fastswitch - быстрая смена оружия. Я использую значение "1" max_shells - число одновременно видимых гильз. Ставим "0" fastsprites - качество дыма. Лучше установить "2" max_smokepuffs - количество одновременно видимых клубов дыма... чем меньше, тем лучше:) Вот вроде и все... остается на сервере прописать следующие команды и тогда совесм хорошо будет: sv_unlag - Компенсировать лаги клиентов т.е. разрешить cl_lc, cl_lw и cl_lb (значение = 1). sv_unlagmax - Максимальное время компенсации задержки в секундах. Оставьте значение по умолчанию - 0.5 секунды. sv_unlagsamples - Сколько предыдущих пакетов используются для вычисления задержки клиентов. Хватит одного пакета (значение = 1). На последок хотелось бы добавить, что с этими командами необходимо эксперементировать, найти оптимальные значения для себя... а может быть и добавить другие команды, которые снизят пинг/понизят FPS.
|
|
| |