Этот раздел посвящен такому важному показателю, влияющему на весь процесс игры в CS, как «пинг».
«пинг» - это время между отправкой пакета и приемом ответного между
Вашим компьютером (клиентом) и сервером. И, вроде бы понятно, что чем
это время меньше, т.е. «пинг» - ниже, тем лучше. Но на деле не все так просто. «Пинг» по своей природе делится на нормальный и аномальный. Рассмотрим каждый из них подробно Нормальный «пинг»
Нормальный «пинг» - по-простому, это задержка сигнала на всех участках
линии, при его "путешествии" от пользователя до сервера плюс то же
самое, но назад. Что может быть проще? Но, есть одно "но" - это при
отправке одного пакета. А когда их посылается несколько и подряд (т.е.
ответ на первый ещё не пришел, а второй уже послан и так со следующим и
т.д.), то пинг увеличивается на 40-60% (а иногда и на 100%) от
начального. В итоге: минимальный пинг 150 мс, максимальный 250 мс. Вот,
именно, максимальный и будет в игре (или даже больше). Конечно, тут
большую роль играет качество телефонной линии. Аномальный «пинг» Этот пинг - результат несоответствия физических возможностей линии и сетевых настроек игры.
Рассмотрим ситуацию: коннект 28.8 кбод, игрок выбегает на толпу
противников, его "мясят" и в итоге - фраг с пингом 4096 висит в воздухе
или танцует брейк-данс. Тут имеет место всеми любимый FlushEntityPacket
- (переполнение) пакеты не могут дойти до пользователя в указанный срок
и в нужном порядке. Надо либо увеличить пропускную способность линии,
либо уменьшить число пакетов (согласований). Тут гадать нечего: будем
уменьшать количество пакетов (т.к. иногда больше 33,6 из модема выжать
просто невозможно). Команды и результат Для оптимизации
процесса согласования под конкретную машину и конкретное модемное
соединение, нужно знать основные команды для оптимизации сетевой игры.
Эти команды помогут всегда (или почти всегда). Но для конкретной
ситуации - конкретная конфигурация («конфиг»). cl_updaterate
## - количество пакетов (согласований), посланных от сервера - клиенту
за единицу времени (секунду). Эта команда напрямую связана со скоростью
соединения и, имея 28.8 кбод нет смысла ставить значение больше 15
(лучше 10). Потому что, поделив 2.5 кб/сек на 15, получим небольшой
размер "пакета" данных на одно согласование (маловато будет). Так что
для 28.8 надо ставить cl_updaterate "10" и не больше. Значения "cl_updaterate" в соответствии с качеством соединения: Модем : Скорость соединения (Кбод) cl_updaterate (1/сек) 28.8 от 10* до 15 33.6 от 15* до 20 от 48.8 от 20* и более • - *Оптимальное значение ISDN и выше - 30 cl_cmdrate ## - количество согласований в секунду, посланных от клиента - серверу. Значения "cl_cmdrate" в соответствии с качеством соединения: Модем - 20-30
Примечание: Если ты хочешь общаться по микрофону и хочешь, чтобы другие
игроки слышали твой голос, то ставь значение 30. Но как известно
единовременно исходящий и входящий потоки они, как два медведя в одной
берлоге, взаимоуменьшают друг друга. Так что если общаться голосом не
предвидится, то ставь от 10 до 20. ISDN и выше - 40 rate
#### - Поток (в байтах) со стороны сервера. Вообще эта величина должна
быть ниже скорости модемного соединения примерно на 20-30% (потому что
исходящий поток тоже существует и, заняв все 100% пропускной
способности линии, Вы себя обречете. Если задать значение больше
допустимого – то произойдет FlushEntityPacket, сервер «закидает»
пользователя "пакетами" по его же требованию в удобный для него момент.
Нужно учесть, что для большого числа игроков (16-20) скорость
соединения играет большую роль. Не рекомендуется ставить максимальное
значение, если пакеты часто не доходят: на их "перепосылку" надо иметь
"резерв". Значения "rate" в соответствии с качеством соединения: • Модем 14400 или ниже - уже ничто не поможет. • Модем 28800 - 2500-3000 • Модем 33600 - 2900-3900 • Модем 56000/одноканальный ISDN - 3600-5300 • Двухканальный ISDN - 5000-7000 • Кабельное соединение - 5600-10000 • xDSL/T1 и выше - 7500-20000 • LAN (10MBps или 100MBps) – 20000-25000
cl_latency -### (или pushlatency )- Компенсация лагов. Величина,
необходимая для хоть какого-то скрашивания серых будней "модемного"
игрока. Задаётся как 50% или 75% от текущего «пинга» с противоположным
знаком (100% имеет эффект, но не стоит столько задавать). Например, для
«пинга» 200 подойдет cl_latency "-150". Эта величина ОЧЕНЬ важна. Но в
КС 1.6 она не используется. cl_rate #### - Тоже, что и rate,
но со стороны клиента. Величина не столь важная, т.к. клиент никогда не
сможет использовать её на 100% (только когда происходит закачка "лого"
на сервер). По умолчанию стоит cl_rate "9999", так и оставим.
fps_max ### - Как уже видно из названия - максимальный FPS в игре.
Обычно ставят 100. Это зависит от "мощности" машины. В принципе от 60
до 100 - вполне приемлемое качество. НО, без следующей переменной вы не
увидите эти FPS вообще. fps_modem ###- А вот это то, что надо.
Приравниваем fps_modem к fps_max и всё. Ходит мнение, что fps_modem
должна ровняться cl_updaterate. Но это не так. Обычно ставится fps_max
"100" и fps_modem "100". Но у этих переменных есть и МИНУСЫ. "Лагает"
сильнее, т.е. чаще при высоком fps_modem, чем при низком. Так что
ставьте от 60 до 100. В принципе - это основное, что нужно для
оптимизации игры по модему. Необходимо добавить, что при сетевой игре
происходит непрерывное согласование сервера и клиента. Их пакеты
взаимосвязаны и если пакеты сервера не дошли до клиента, то и пакеты
клиента не будут восприниматься сервером немедленно, а встанут в
очередь. Ведь пропустить ничего нельзя. Можно привести стандартный "конфиг" для скорости соединения 33.6 кбит/сек. cl_updaterate"15" cl_cmdrate"30" rate"2500" fps_max"60" fps_modem "60" А в autoexec.cfg неплохо бы добавить: //При latency или пинге в 200мс cl_latency"-150"
Кроме перечисленных выше рекомендаций и команд на правильную
конфигурацию для нормальной игры под разными соединениями необходимо
также регулировать ряд других переменных для уменьшения нагрузки на
компьютер и само соединение, чтобы уменьшить “пинг” и избежать так
называемых “лагов”. Для начала надо создать в директории
counter-strike (например, C:\Sierrra\Half-Life\cstrike\) файл с именем,
например, nolag.cfg . Открываем его блокнотом или Wordpad и пишем
следующее: cl_allowdownload– Если напишешь цифру 1, то разрешишь
скачивание файлов с сервера к себе на компьютер (например, на сервере
все играют на карте, которой у тебя нет, и если параметр активизирован,
то эта карта должна скачаться к тебе на компьютер.
cl_allowupload – Тоже самое, только наоборот. Если у тебя в компьютере
стоит модель какого-либо оружия, а на сервере её нет, то при значении
«1» она туда закачается. cl_download_ingame – разрешает («1»)
или запрещает («0») загрузку чужих моделей оружия, скинов и т.п. во
время игры. Для уменьшения «пинга» надо ставить 0 cl_cmdbackup
– Сколько пакетов будет послано на сервер за секунду. Чем меньше
значение, тем «пинг» будет меньше. Но не следует ставит слишком мало.
Обычно надо ставит значение 2 или 3. cl_lw – При значении «1»
все эффекты и действия связанные с оружием просчитываются у тебя на
компьютере, т.е. на стороне клиента, а не на сервере. Всё значительно
быстрее, но у тебя может не получиться сделать то, что ты хотел. Но
никаких отклонений незаметно от реально происходящего. Если ставишь 1,
то «лаги» будут меньше. cl_lb – При значении «1» видны дыры на стенах, пятна крови и т.п.
cl_lc – при значении «1» основная команда активизирующая cl_lw and
cl_lb. При большом «пинге», сервер может значительно оптимизировать
работу. Но на самом сервере может быть отключён этот параметр. cl_nodelta - Запретить сжатие. По умолчанию 0, менять не надо, а то только уменьшится скорость соединения. cl_nopred – Чтобы движения игроков были плавными, то ставь 0
cl_resend - Через сколько будет послан пакет, если предыдущий не дошел.
Чем меньше, тем лучше. Но лучше поставь 2, а то если у тебя плохая
линия, то пакет снова не дойдёт и будет ошибка cl_showfps – Показать график FPS. Очень полезная вещь, но многих раздражает.
max_shells– Сколько гильз одновременно покажется на экране. Ставь 0. От
много отказываться приходится из спецэффектов, если уж хочется
нормальной игры max_smokepuffs- Аналогично предыдущему
параметру, но это про дым. В зависимости от значения от 1 до 3 будет
меняться изображения дыма , плотности клубов дыма. Самое лучшее
изображение, но замедляющее игру, при значении 3. mp_footsteps - Звук шагов. Какой бы «пинг» не был, это отключать нельзя, т.к. необходимо слышать противника. То есть «1»
net_graph - График скорости соединения. Показывает скорость отправки,
получения информации в kb/s, показывает график соединения и FPS.
Значения от 1 до 3 в зависимости от желания получать полную или
неполную информацию. При значении «3» видно все. Посмотри на значения
loss и choke. если есть loss - плохой канал (не должен превышать 1),
если choke - меняй настройки rate/cl_rate/cmdrate/updaterate. Если ни
того, ни другого нет – «лагает» сервер. net_graphwidth – Ширина графика. Стандартное значение – 192. net_graphpos - Расположение графика скорости соединения. Понижая «пинг», мы также должны повысить такой показатель, как FPS («Frames per second», или «количество кадров в секунду») Повышение fps
Узнать fps можно следующим образом: в консоли пишите "cl_showfps 1" и в
левом верхнем углу появится цифра, показывающая ваш текущий fps. Также
можно узнать свой fps, прописав "net_graph 1 (\2 или 3)" или
"timerefresh". Итак, если ваш fps в среднем выше 50 - не беспокойтесь -
этого вам должно хватить для игр в клубе или тренировок дома. Если
ниже, то вот советы, как его fps - аббривиатура к "frames per second"
или "кадры в секунду". повысить: 1. Поменяйте разрешение на 640x480. 2. Поставьте драйвер с OpenGL на Direct3D. 3. Уберите рисунок с рабочего стола, если компьютер совсем слабый. 4. Поставьте цветовую палитру на 16 бит. 5. Вот консольные команды, которые вам должны помочь: "r_drawviewmodels 0" - убрать оружие с экрана. Дает выигрыш до 30% в скорости. "r_picmip (1\2\3\4\5)" - коэффициент, определяющий максимальный размер текстур. Чем больше - тем быстрее. "gl_max_size 32" - максимальный размер текстур при OpenGL. 256 - по умолчанию. "r_dynamic 0" - убирает динамическое освещение.
Когда все необходимые команды запишете, сохраните файл. После запуска
CS и подсоединения к игровому серверу надо написать в консоли: exec
nolag.cfg , чтобы активизировать команды этой конфигурации. Вот вроде и все... остается на сервере прописать следующие команды и тогда совесм хорошо будет: • sv_unlag - Компенсировать лаги клиентов т.е. разрешить cl_lc, cl_lw и cl_lb (значение = 1). • sv_unlagmax - Максимальное время компенсации задержки в секундах. Оставьте значение по умолчанию - 0.5 секунды.
• sv_unlagsamples - Сколько предыдущих пакетов используются для
вычисления задержки клиентов. Хватит одного пакета (значение = 1).
Напоследок хотелось бы добавить, что с этими командами необходимо
экспериментировать, найти оптимальные значения для себя... а может быть
и добавить другие команды, которые снизят пинг/повысят FPS. Смысл
приведенных выше команд в том, чтобы убрать все лишние процессы,
работающие в компьютере, которые и приводят к сильным «лагам». Кроме
того, надо следить за тем, чтобы было достаточно места на системном
диске, чтобы не было проблем со SWAP-файлом. Свободно должно быть
минимум 500 Мб. Пример Конфига : cl_cmdrate 15 cl_updaterate 15 rate 2000 cl_lw 1 cl_lc 1 cl_cmdbackup 4 cl_download_ingame 0 cl_allowdownload 0 cl_allowupload 0 cl_resend 5 fps_modem 100 fps_max 100 net_graph 1 cl_bob 0 cl_bobup 0 Наладка микрофона Для нормального общения игроков во время игры для слаженной командной игры очень важным является отладка микрофона.
Начинать необходимо с проверки микрофона и его настройки программой
voice_tweak.exe, которую можно найти в папке Sierra/Half-Life. При этом
процедуру настройки микрофона надо регулярно проводить и в последующем
до захода на игровой сервер. Следующий этап заключается в
правильной установке консольных команд. Часть из них находится в
начальном конфиге (config.cfg), например: voice_scale "1.000000" voice_enable "1" voice_forcemicrecord "1.000000" Другие же команды необходимо вводить в консоли непосредственно при подключении к игровому серверу.
voice_loopback 1 - При вводе этой команды надо сказать что-нибудь в
микрофон. То, что услышите в наушниках и есть то, как вас слышат
другие. Теперь необходимо подобрать оптимальную громкость своего голоса
и расстояние от рта до микрофона. voice_scale Х - Эта команда
устанавливает громкость голоса всех людей, в том числе и вашего.
Рекомендуется устанавливать 1 или 2, однако, например , некоторые
ставят 8 и вполне довольны. Надо пробовать . voice_overdrive N - Ослабляет все звуки (выстрелы и т.д.) в N раз, когда кто-то говорит. Оптимально - от 1 до 2.
voice_overdrivefadetime Х.ХХХ - Определяет время в секундах, в течение
которого будет действовать эффект ослабления окружающих звуков (см.
предыдущую команду). Оптимально 0.4. voice_maxgain Х -Сглаживает
голос говорящих. Рекомендуется ставить от 1 до 5 , однако,
например,некоторые ставят 0.25 и доволтны. Надо поэкспериментировать в
онлайне voice_avggain x - Усреднение голосовой волны (удаление шума). Рекомендуется - 0.5 - 0.1.. voice_fadeouttime Х.ХХХ - Влияет на время затухания Вашего голоса. Рекомендуется - около 0.1.
Чтобы каждый раз при подключении к серверу не набирать эти несколько
команд, рекомендуется ввести их сразу в файл, скажем, config2.cfg, или,
при использовании специальной конфигурации, понижающей пинг, в файл
nolag.cfg, которые при подключении к серверу запускаются в консоли
командой EXEC. Помимо указанных выше команд на качество звука во
многом влияет качество связи, пинг и сам микрофон. Поэтому можно и
нужно экспериментировать с собственными настройками, чтобы добиться
нормального звучания. Вот, например, настройки : //voice settings hisound "1.000000" voice_loopback 1 voice_overdrive "1.500000" voice_overdrivefadetime "0.40000" voice_maxgain "0.25000" voice_fadeouttime "0.10000"
Существует неплохая программа для настройки голосового общения в КС.
Она называется voice_tweak и пришла к нам еще из первой Half-Life и
версии CS
|