Здравствуйте, счастливые обладатели модемов. Эта статья написана специально для вас и речь в ней идет о такой замечательной и всеми любимой вещи как пинг(ping) в CS 1.6/Source. Вообще, мастерство игрока не самое важное при игре в Counter-Strike. Тем более, если он играет по модему. На "качество" модемной игры влияют следующие (основные) факторы: 1. Пинг (ping) 2. Скорость соединения 3. Индивидуальное мастерство игрока 4. Мощность "тачки" 5. Качество привода ("мышь", и пр. манипуляторы) 6. и другие...От автора: Хотя предыдущий список может сильно изменяться, но на данный момент пинг для меня - единственный камень преткновения. Мастерство накапливается с годами, а ping с годами может не меняться вообще. Пинг на случайно занимает первое место, поскольку именно при большом пинге игра невозможна вообще. Для играющего в CS по модему пинг он как святой... на него молятся, ставят свечи, пытаютсяпонизить любыми способами. Но эти способы не всегда работают (непонятно почему). На самом же деле пинг (ping) - время между отправкой пакета и приемом ответного (если такой есть:) И даже козе понятно: чем ниже - тем лучше! Но на деле не все так просто. Пинг по своей природе делится на нормальный и анормальный. Рассмотрим каждый из них подробно. НОРМАЛЬНЫЙ ПИНГ Нормальный пинг - по-простому, это задержка сигнала на всех участках линии, при его "путешествии" от пользователя до сервера плюс то же самое, но назад. Что может быть проще? Но, есть одно "но" - это при отправке одного пакета. А когда их посылается несколько и подряд (т.е. ответ на первый ещё не пришел, а второй уже послан и так со следующим и т.д.), то пинг увеличивается на 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" и не больше. При соединении 28.8 Кб, cl_updaterate (1/сек) от 10* до 15 При соединении 33.6 Кб, cl_updaterate (1/сек) от 15* до 20 При соединении 48.8 Кб и более, cl_updaterate (1/сек) от 20* и более * - Оптимальное значение

cl_cmdrate ## - количество согласований в секунду, посланных от клиента - серверу. Тут дело такое: если Ты хочешь общаться по микрофону и хочешь, чтобы другие игроки слышали твой голос, а не "дизельный выхлоп" или хуже, то ставь значение 30. Но как известно единовременно исходящий и входящий потоки они:как два медведя в одной берлоге, взаимоуменьшают друг друга. Так что если общаться голосом не предвидится, то ставь от 10 до 20. В принципе для 28.8 cl_updaterate "10" и cl_cmdrate "30" вполне приемлемо. На каждые три согласования со стороны клиента - одно со стороны сервера. Сойдет! rate #### - Поток (в байтах) со стороны сервера. Вообще эта величина должна быть ниже скорости модемного соединения примерно на 20-30% (потому что исходящий поток тоже существует и, заняв все 100% пропускной способности линии, Вы себя обречете). При соединении 28.8 Кб, rate (бит/сек) от 2000 до 2500 При соединении 28.8 Кб, rate (бит/сек) от 2000 до 2500 При соединении 33.6 Кб, rate (бит/сек) от 2500 до 3000 При соединении 48.8 Кб и более, rate (бит/сек) от 3000 и выше Если задать значение больше допустимого - лови FlushEntityPacket, сервер закидает тебя "пакетами" по твоему же требованию в удобный для него момент. Учтите, что для большого числа игроков (16-20) скорость соединения играет большую роль. Не рекомендуется ставить максимальное значение, если пакеты часто не доходят: на их "пере посылку" надо иметь "резерв". cl_latency -### - Компенсация лагов. Величина, необходимая для хоть какого-то скрашивания серых будней "модемного" игрока. Задаётся как 50% или 75% от текущего пинга с противоположным знаком (100% имеет эффект, но не стОит столько задавать). Например для пинга 200 подойдет cl_latency "-150". Эта величина ОЧЕНЬ важна. Но в CS 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. Представляете "дурдом" в 20 FPS? Я из принципа fps_max "100" и fps_modem "100" поставлю. К тому же без высокого значения fps_modem нельзя проделать кое-какие "грязные" трюки. Но у этих переменных есть и МИНУСЫ. "Лагает" сильнее, т.е. чаще при высоком fps_modem, чем при низком. Так что ставьте от 60 до 100. В принципе - это всё, что нужно для оптимизации игры по модему. Добавлю, что при сетевой игре происходит непрерывное согласование сервера и клиента. Их пакеты взаимосвязаны и если пакеты сервера не дошли до клиента, то и пакеты клиента не будут восприниматься сервером немедленно, а встанут в очередь. Ведь пропустить ничего нельзя. Напоследок приведу стандартный "конфиг/config" для скорости соединения 33.6 кбит/сек. cl_updaterate "15" cl_cmdrate "30" rate "2500" fps_max "60" fps_modem "60" А в autoexec.cfg неплохо бы добавить: //При latency или пинге в 200мс cl_latency "-150" //Использование MMX. Не известно правда, что дает :) r_mmx "1" //Для того, чтобы голос свой слышать наряду с другими игроками. |