Итак, небольшой экскурс в сетевую часть игры и принципы оптимизации... Вам надоели лаги на большинстве европейских серверов? Вы удивлятесь, почему несколько раз выстрелили прямо в наглую физиономию врага, а его, на практике, даже и не задело? Надеемся, что наши разъяснения хотя бы в определенной степени помогут вам.
Для контроля за работой оптимизаций в ходе игры рекомендуется включить команду net_graph 3. Ее положение на экране устанавливается командой net_graphpos (значение от 1 до 3). У меня вот так:
Теперь о самих настройках...
rate: Скорость синхронизации игры с сервером, а именно, с какой скорость (байт в секунду) вы получаете данные с сервера. Для LAN стандартной настройкой является rate 25000. В остальном зависит от реальной стабильной скорости скачивания. По большому счету, ничего интересного в этом параметре нет. Однако в качестве эксперимента можно пробовать очень высокие значения rate, вплоть до 100 000, если конечно у вас нормальный Интернет.
cl_updaterate: Количество пакетов, запрашиваемых от сервера. Вопреки распространенному мнению, эта команда выставляется не только в зависимости от толщины вашего интернет-канала, но и в зависимости от настроек сервера, а именно, его частоты обновления пакетов, и соответственно, состояния игрового мира, то есть тика (tickrate). В идеале, для сервера с тиком 100 значение cl_updaterate должно быть 100, но только если ваш канал способен пропихнуть через себя такое количество пакетов в секунду, то есть вы должны иметь канал примерно мегабит и более. С другой стороны, обладатели толстого канала и значения cl_updaterate 100 нередко получают лаги на серверах с тиком 30 (им кажется, что все там движется резковато, рывками), поскольку от сервера поступает гораздо меньше пакетов, чем используется вашим клиентом для обновления картинки в игре, из-за этой разницы и просходят лаги...
Важно!!! cl_cmdrate: Количество пакетов, отправляемых вами. Следует учитывать взаимосвязь между значением этой команды и вашим FPS во время активной игры (перестрелки). Если у вас в среднем при сражении 40 фпс, то, скажем, при значении cl_cmdrate 100 также будет иметь место потеря пакетов, ведь вы отправляете 100 пакетов в секунду, но фпс-то у вас 40, а знатоки утверждают, что каждому фпс, так же как и тику игрового мира соответствует отсылка одного пакета данных (по крайней мере в сетевых движках Source). Таким образом, в идеале, этот параметр следует ставить согласно вашему минимальному стабильному значению FPS, скажем при 45 фпс - cl_cmdrate 45. Опять же не забываем про ограничения канала, больше определенного количества пакетов через него все равно не пролезет.
Не удивляйтесь, что дефолтные значения конфига Valve имеют сильно заниженные значения всех этих рейтов (кажется 30, 40 и 10000), ведь они представляют собой минимальный средний вариант, который должен стабильно работать у всех. Мы же пытаемся выжать из них максимум и добиться комфотной игры даже в самых неиграбельных условиях. Тем более со времен выхода игры компьютера и каналы успели подрасти
cl_interpolate и cl_interp_ratio: Параметры сглаживания перемещений объектов в процессе игры. То есть, чтобы не отрисовывать модель бегущего игрока последовательно в воображаемых точках A, B, C, D, E и т.д. в каждый проход (тик), в игре используется сглаживание и вы видите игока, который бежит плавно, а не перемещается из точки в точку рывками. Зачастую это дает следующий эффект: вы можете выстрелить в него и не попасть, так как на самом деле он уже будет в другой точке, но из-за сглаживания вы этого не видите. Опять же, можно выстрелить мимо и попасть, так как невидимо для вас (опять же по причине сглаживания) игрок уже мог переместиться в то место, куда вы стреляли.
По умолчанию игрой используется значение cl_intepolate 1 (в конфиге этой команды специально нет, если что, ее приходится добавлять самостоятельно). При этом подразумевается, что все "идет плавно". Если вы отключите интерполяцию командой cl_intepolate 0, то объекты и игроки вокруг вас будут двигаться как бы рывками, но зато в каждую единицу времени вы будете видеть их реальное месторасположение. Опять же, на восприятие таких "рваных" перемещений будет влиять и ваш FPS. Чем больше фпс - тем меньше сказывается сглаживание.
Тонкость заключается в том, что интерполяция зависит также от пинга. Величина задержки (в миллисекундах) при обсчете положения моделей в игре устанавливается командой cl_interp_ratio, которая грубо рассчитывается как 100/updaterate* и может принимать целые значения (нас интересует самый распространенный диапазон от 1 до 5). Дефолтным считается значение cl_interp_ratio 1 (примерно ссоответствует задержке 10 мс). Однако при игре на сервере с пингом под 100 значение cl_interp 0.01 может привести к тому, что ваша реальная задержка составит 100 мс, а отрисовывание у вас выставлено на 10 мс, в результате лаги могут только усугубиться.
Не вдаваяся в дальнейшие рассуждения, скажем, что при современном нормальном Интернет-канале (не менее 1 мбит) рекомендуется использовать следующие значения интерполяции с учетом тика и пинга на предполагаемом сервере:
- для серверов с тиком 100 и пингом 60-80 ставим cl_interp_ratio 3, при пинге 40-50 подойдет 2, при пинге больше 80 - 4 (cl_interp_ratio равное 1 рекомендуется только при пинге не более 30)
- для сервером с тиком 66 и пингом 60-80 ставим cl_interp_ratio 4, при пинге 40-50 подойдет 3, при пинге больше 80 - 5 (cl_interp_ratio 1 смысла не имеет, cl_interp_ratio 2 подойдет для российских серверов)
Информация взята с сайта клана СФ