Нормальный «пинг»
Нормальный
«пинг» - по-простому, это задержка сигнала на всех участках линии, при
его "путешествии" от пользователя до сервера плюс то же самое, но
назад. Что может быть проще? Но, есть одно "но" - это при отправке
одного пакета. А когда их посылается несколько и подряд (т.е. ответ на
первый ещё не пришел, а второй уже послан и так со следующим и т.д.),
то пинг увеличивается на 40-60% (а иногда и на 100%) от начального. В
итоге: минимальный пинг 2-10 мс, максимальный 50 и более мс. Вот,
именно, максимальный и будет в игре (или даже больше). Конечно, тут
большую роль играет качество линии.
Аномальный «пинг»
Этот
пинг - результат несоответствия физических возможностей линии и
сетевых настроек игры. Рассмотрим ситуацию: коннект 28.8 кбод, игрок
выбегает на толпу противников, его "мясят" и в итоге - фраг с пингом
4096 висит в воздухе или танцует брейк-данс. Тут имеет место всеми
любимый FlushEntityPacket - (переполнение) пакеты не могут дойти до
пользователя в указанный срок и в нужном порядке. Надо либо увеличить
пропускную способность линии, либо уменьшить число пакетов
(согласований). Тут гадать нечего: будем уменьшать количество пакетов.
Команды и результат
Для
оптимизации процесса согласования под конкретную машину и конкретное
модемное соединение, нужно знать основные команды для оптимизации
сетевой игры. Эти команды помогут всегда (или почти всегда). Но для
конкретной ситуации - конкретная конфигурация («конфиг»).
cl_updaterate
## - количество пакетов (согласований), посланных от сервера - клиенту
за единицу времени (секунду). Эта команда напрямую связана со
скоростью соединения и, имея 28.8 кбод нет смысла ставить значение
больше 15 (лучше 10). Потому что, поделив 2.5 кб/сек на 15, получим
небольшой размер "пакета" данных на одно согласование (маловато будет).
Так что для 28.8 надо ставить cl_updaterate "10" и не больше.
При игре по лану надо ставить cl_updaterate 100.
cl_cmdrate ## - количество согласований в секунду, посланных от клиента - серверу.
Опять же ставим cl_cmdrate 100
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
Кроме
перечисленных выше рекомендаций и команд на правильную конфигурацию
для нормальной игры под разными соединениями необходимо также
регулировать ряд других переменных для уменьшения нагрузки на компьютер
и само соединение, чтобы уменьшить ”пинг” и избежать так называемых
”лагов”.
Для начала надо создать в директории 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
Далее следует текст для людей со слабыми машинами,у кого чтото типа кор дуо и 8800гтх можете не читать
Так же я не согласен с автором статьи,ФПС всегда должен быть 100 и не проседать для нормальной игры.
Узнать
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_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 Мб.
Так-же если после установки fps_max 101 значение уперлось в 72 и не поднимается выше делаем следующие:
заходим
в Свойства(на рабочем столе ПКМ),выбираем вкладку Параметры,жмем
Дополнительно,находим Панель управления вашей видеокарты,и там в
параметрах 3D находим Вертикальную Синхронизацию,смело выключаем,есле
после этого опять ничего не изменилось то попробуйте выключить не только
в Глобальных настройках,но и в програмных найдя hl.exe.
Наладка микрофона
Для нормального общения игроков во время игры для слаженной командной игры очень важным является отладка микрофона.
Начинать
необходимо с проверки микрофона и его настройки программой
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 //установлено в 1 только для теста - чтобы слышать свой голос. После окончательной настройки голоса можно отключать
voice_scale "8.0000"
voice_overdrive "1.500000"
voice_overdrivefadetime "0.40000"
voice_maxgain "0.25000"
voice_fadeouttime "0.10000"