Основные понятия Lag (лаг) – термин, применяется к тем, у кого соединение медленное или другимим словами «лагующее».
Ping (пинг) – величина, которая определяет время прохождения сообщения от Вашего компьютера до сервера и обратно, измеряется в миллисекундах.
Latency (задержка) – величина, которая определяет время прохождения сообщения от Вашего компьютера до сервера (она конечно же всегда меньше, чем Ваш пинг).
Запомните – ping это не latency!
Rates (коэффициент скорости) – глобальный термин, который используется в настройках скорости Counter-Strike Source
Choke (буквально - удушье) – это серверный лаг. По сути, это означает, что Ваш комп посылает позиции игроков и то, что он делает (стрельба, грены, нож) на сервер, но это всё не доходит до сервера. По умолчанию в CS:S сделано так, что все действия игроков посылаются на сервер 30 раз в секунду. Choke может быть вызван двумя причинами:
- Ваш комп посылает слишком много пакетов на сервер в секунду.
Если Вы пытаетесь послать 100 команд на сервер в секунду, а он может принять только 40, Вы получите choke 60. Согласитесь, что это фигово, так как практически ни один из Ваших выстрелов не будет зарегистрирован, и только 40% от того, что Вы пытаетесь сделать на сервере Вашим игроком, будет реально сделано (решение ниже).
- Сервер не успевает обработать всю информацию, которая ему посылается.
Причиной может быть сетевой лаг на сервере, или лаг CPU на сервере. Клиент не может это контролировать, но может подстроиться под это (решение ниже).
Loss (потери) – это лаг вне Вашего компа и как правило вне игрового сервера. Это означает, что пока Ваши команды, которые идут на сервер, проходят по определённому пути (иногда им необходимо пройти большое количество сетей), они «теряются» на просторах сети. Loss очень часто возникает при использовании беспроводного соединения. Loss также нельзя контролировать – это просто дерьмовое соединение и с этим ничего не поделать.
Tickrate (тикрейт) – во время каждого тика сервер обрабатывает входящие команды, проверяет различные внутренние правила, обновляет состояния объектов игры. Больший тикрейт позволяет добиться большей точности, но и требует более мощный сервер. По рекомендациям Valve сервера с количеством слотов >20 должны иметь тикрейт 66. Как правило, тикрейт 100 используется на CW серверах, а также на паблик серверах, которые устанавливаются в количестве одного, двух на одну машину и с небольшим количеством слотов.
net_graph 3 в CS:S
Для начала, Вам необходимо получит доступ к консоли CS:S (как правило, она автоматически открывается при запуске). Если нет, то нажмите кнопку ~ на клавиатуре. Введите команду "net_graph 3" и нажмите enter (чтобы убрать обратно, введите команду net_graph 0). Как только Вы ввернулись в игру, то в правом нижнем углу Вы должны увидеть примерно такую картинку:
Обозначения:
1) FPS – сколько фреймов в секунду выдаёт Ваша видеокарта
2) Ping – описано выше
3) Data – сколько tcp/ip пакетов Вы посылаете и получаете (не стоит заморачиватся на этом)
4) Kilobits per second – сколько реально килобит Вы посылаете и получаете (нам не нужно)
5) Сколько раз в секунду Ваш комп обновляет позицию Вашего игрока на сервере (out -- внизу)
Сколько раз в секунду сервер посылает позицию Вашего игрока (in -- сверху)
6) Loss – описано выше
7) Choke – описано выше
Убираем лаги в CS:S
Следующие шаги будут понятны всем, кто умеет читать по-русски (даже полным нубам). Они помогут Вам исправить большинство неприятных лагов в CS:S.
Нужно понимать, что на каждом сервере придётся ставить различные рейты, так все сервера настроены по-разному (смотрите выше описание tickrate). Благодаря этой инструкции Вы без труда научитесь это делать.
Для установки рейтов, просто введите в консоли нужное значение. Например: cl_cmdrate 30
cl_updaterate – сколько раз в секунду Ваш компьютер запрашивает сервер о позициях игроков (по умолчанию 20);
cl_cmdrate – сколько раз в секунду Ваш компьютер посылает позиции игроков на сервер (по умолчанию 20);
rate – максимальное количество байтов, которые Вы можете получить.
cmdrate & updaterate
Зайдите на сервер и поменяйте Ваши рейты на cl_cmdrate 80 и cl_updaterate 60. Поиграйте несколько минут. Вы должны убедится, что значения в области под номером 5 на net_graph не урезаются сервером. Если значения всё время показывают 33.3 или 66.6, это значит, что Вы должны уменьшить значения до cl_cmdrate 66 и cl_updaterate 45. Поиграйте несколько раундов, и наблюдайте за loss и choke. Если у Вас choke, Вы должны поставить рейты на более низкие значения. Придерживайтесь соотношения три к четырём, то есть updaterate должен составлять ¾ от cmdrate. В принципе это необязательно, но желательно.
К примеру, если у Вас choke 10, то и рейты следует опустить на 10 значений, до cl_updaterate 40 и cl_cmdrate 55. При игре на паблик серверах вполне нормальным считается choke 5 в середине раунда, а в начале и в конце раунда до 10-20 (choke всегода выше в начале и в конце раунда, когда сервер сбрасывает и обновляет объекты).
Внимание! Как правило на серверах с постоянным респауном игроков (типа DM или Conquest) choke выше, так как на сервер ложится большая нагрузка, чем на обычный сервер. Поэтому изменение рейтов к сожалению не всегда спасает от choke, но позволяет его уменьшить.
Установка рейтов
Настройка рейтов позволяет Вам установить максимальное количество данных, которые приходят к Вам от сервера в байтах в секунду. В принципе, принято устанавливать следующие значения:
Modem 56k - < 20000
Slow DSL/Cable – минимум 20000
Fast DSL/Cable – минимум 25000
Для установки рейтов, просто введите в консоли нужное значение. Например: rate 25000.
Данная статья не призвана полностью избавить Вас от лагов. Основное её предназначение - научить Вас подстраиваться под конкретный сервер, тем самым уменьшая возможность появления лагов. Пробуйте, экспериментируйте, но не забывайте, что очень маленькие рейты заставляют сервер значительно напрягаться, чтобы компенсировать Ваши низкие рейты.