Начиная с версии патча 1.0.0.1, Half-Life
содержит заново переписанный сетевой код и
множество изменений в движке игры, принесших с
собой кучу возможнстей по дополнительной
настройке.
При запуске Half-Life с командной строки
можно указать несколько полезных ключиков. Проще
всего это можно сделать, воспользовавшись
свойствами ярлыка: кликнув на нем правой кнопкой
мыши и выбрав в контекстном (выпадающем) меню
пункт "свойства", вы вызовете такое окошко:
-console Этот
ключик должен быть прописан у всех. Помимо
отключения никому не нужной заставки, он
позволит вам вызывать консоль из главного меню и
непосредственно при игре с помощью кнопки ~.
-32bpp Этот ключик
разрешает использовать в игре 32-х битный цвет.
Если у вас четкая видеокарта (и при этом вы
используете для игры высокие разрешения), то это
должно зарузить ее по самые помидоры. Помните,
что 32-х битный цвет активно хавает мощности
вашего компьютера, намного больше чем 16-ти
битный, поэтому если вы не хотите в конечном
счете получить на экране тормозню, то лучше не
прописывайте его. Мораль такая - в разрешениях
выше 1024х768 играйте только в 16 битах. К
владельцам Geforce3 это не относится.
-numericping Этот
ключик позволит вам увидеть реальный пинг (в
цифрах) к каждому серверу из списка, вместо этих
идиотских точечек в соответсвующем меню
"Internet games" или "Lan games".
-nojoy Отрубает
джойстик, ясен пень. Не все только знают, что
поддержка джойстика тоже жрет оперативную
памать, так что если с джойстик в игре вам не
нужен, а памяти не очень много - смело
прописывайте этот ключ.
-noipx Отрубает
поддержку протокола IPX и, тем самым,
освобождает еще немного памяти.
-heapsize
XXXXX Вместо XXXXX нужно указать
колличество памяти (в килобайтах), которое вы
отведете для Half-Life. В то время как многие
рекомендуют указывать эти размеры примерно от 75
до 100% от всего объема оперативки, я заметил,
что Half-Life лучше рапоряжается памятью по
собственному усмотрению. Короче,
поэкспериментируйте, но если не врубаетесь - не
трогайте.
-game XXXXX Этот
ключик служит для запуска вместо обычного
Half-Life какого-либо его мода. XXXXX - это имя
дериктории, где лежит мод. Например, для запуска
Counter-Strike вместо XXXXX напишите
cstrike.
+XXXXX Этот ключик
позволяет запускать консольные команды сразу
после загрузки игры. Четкая тема, сами
представьте сколько можно туда запихать
полезностей. Например, прописав +connect
212.122.1.7, игра начнет сразу долбиться на
приморский сервак. Подобным образом можно
накатать несколько ярлыков, указав в них разные
ip-адреса ваших любимых серверов. Еще удобно
прописывать использование вашего внешнего
индивидуального конфига: +exec myconfig.cfg.
Весьма полезный ключик, как видите…
Одним из самых важных и приятных изменений в
новом сетевом коде является независимоть
скорости игры (читай FPS'ов, отрендеренных
кадров в секунду) от скорости связи. Раньше
машина-клиент должна была подтверждать каждый
новый прорисованный кадр у сервера. Получалось,
что игра по модему тормозила даже на сильных
компьютерах. Даже людям сидящим на толстых
каналах приходилось туго, ибо не получалось
зачастую достичь хорошего качества связи вкупе с
хорошими 72 FPS'ами. Видать, пограммерам из
Valve здорово пропердолили на работе и те
быстренько (хм…) сваяли новый патч. Отныне
кол-во FPS'ов и скорость связи полностью не
зависят друг от друга! Фанфары. Теперь даже если
вы "модемщик", то 100 FPS'ов вам запросто
доступно, тянул бы комп.
Хе-хе, это еще не все! В Valve так же
поработали и над "компенсацией лагов" при
стрельбе, сделав игру по модему почти такой же
гладкой, как игру на LAN'е. Эффект очень похож
на то, как если бы все действия игроков
обсчитывались на стороне клиента с подачи
сервера, однако их обсчет полностью берет на
себя сервер, что означает полную безопасность!
(Сделаю некоторые пояснения от себя: обсчет
стрельбы и прочего на стороне клиента дает
большой простор для читеров, т.к. взломать
сетевой код становится очень просто. Помните
несколько лет назад ситуацию с Diablo - сколько
было читов? Никто честно не играл на
batttle.net, потому что все герои и их
передвижения обсчитывались на компах игроков. С
выходом старкрафта и Diablo2 ситуация
поменялась. - прим. перев.)
Плюс ко всему Valve значительно снизила
траффик при сетевой игре, сделав код значительно
эффективней. Словом, модемщики теперь могут
расчехлить свои кольты с калашами и играть в
замесах с меньшим чем раньше лагами. А самое
главное - теперь к сетевому коду доступно
огромное множество настроек.
Предвижу вопросы - как это тамошним
программерам удалось компенсировать лаги, почти
уравняв ЛАНщиков и модемщиков? Решение, как все
гениальное, просто и элегантно: представьте себе
палящего в противника "модемщика" с пингом 200.
Сервер отслеживает выстрел и засекает пинг
стреляющего игрока (допустим, 200 миллисекунд),
затем сервер проверяет где был его противник 200
миллисекунд назад и если он в то время
действительно подпал под пулю, то выстрел
засчитывается как попадание, иначе - мимо.
Есть, однако, и свои недостатки. Первый и
наиболее заметный - это эффект облетающих углы
пуль. Понятно, что существует некоторая задержка
пока сервер обработает сответсвующие пакеты и
поймет что на самом деле вас уже подстрелили,
прежде чем вы скрылись за углом. Так что
правосудие вас все равно настигнет ;) Иногда это
раздражает, но это лучше, чем было раньше.
Другой недостаток заключается в том, что когда
вы стреляте по кому либо, то реальные попадания
проявляются немного позже чем если бы вы играли
по локальной сетке. Если враг убил вас прежде
чем сервер успел обсчитать ваши выстрелы, то вы
проигрываете в любом случае, независимо от того
попали вы по врагу или нет (т.е. фактически
независимо от того, убили бы вы его до того, как
он успел убить вас). В этом смысле люди имеющие
меньший пинг все еще обладают некоторыми
преимуществами. Стоят ли эти недостатки
указанных выше достоинств - решать вам.
sv_unlag X Эта
переменная отвечает за включение/выключение
технологии компенсации лагов. Оставьте ее
включенной, это поможет нормально играть
большинству людей. (см. ниже про клиентские
настройки). 1 - включить компенсацию лага (по
умолчанию), 0 - выключить.
sv_maxunlag
X.XX Эта переменная отвечает за
максимальное время, в течение которого игра
пытается скомпенсировать чей-либо пинг. Если
поставить значение 1, то это равнозначно 1000
миллисекундам или одной полной секунде. Если
поставть 0.4, то это будет соответствовать 400
миллисекундам. Не стоит выставлять значение
больше чем 0.55, потому что когда какое-нибудь
чудо с большим пингом станет попадать по
кому-нибудь, то проявляться это будет настолько
позже, что динамика игры спадет на нет. Однако,
я не рекомендую задавать значения меньше чем
0.35. По умочанию ставится 0.5, т.е. 500
миллисекунд.
sv_unlagsamples
X Эта пременная определяет, сколько из
посланных клиентом пакетов будут обработаны,
чтобы найти среднее значение пинга игрока,
которое будет скомпенсировано. Значение по
улочанию - единица, т.е. для определения пинга
игрока обрабатывается только один, самый свежий
пакет. При значении 2 пинг усредняется исходя из
значений двух последних принятых сервером
пакетов и т.д. Лучше всего ставить 1 или 2. По
умочанию выставляется 1.
(раздел посвящен
настройке вашего конфига config.cfg, хотя
значения переменных могут быть изменены и в
консоли)
Что ж, сейчас, когда вы уже знаете, как
работает сервер компенсируя ваш пинг, можете для
себя решить - включать или выключать эту фичу.
Благо Valve дает зеленый свет любителям
покопаться в настройках конфига.
cl_lc X - эта строчка
говорит серверу, желаете вы или нет использовать
компенсацию лага. Если компенсация откровенно
достала вас своими глюками, можете вырубить ее,
поставив вместо икса - ноль. Тогда играйте в
соответствии с вашим реальным пингом. По
умолчанию значение 1, т.е. включено.
cl_lw X - эта
переменная отвечает за возможность проигрывания
звуков и анимации со стороны клиента. Если она
включена (cl_lw 1), то все звуки и анимация
будут проигрываться непосредственно на вашей
машине, например, в момент активной пальбы, не
дожидаясь соответствующего подтверждения от
сервера. В таком подходе есть свои плюсы и
минусы.
Если опция выключена (cl_lw 0), то момент,
когда вы увидете стреляющий ствол, зависит от
вашего пинга, что так же означает что вы увидите
палящее орудие одновременно с попаданиями
вылетающими из него пуль (и никаких
"обруливающих углы" снарядов). Проблема в том,
что если включена компенсация лага, то вы не
увидите характерных "фонтанчиков" от пуль, часто
помогающих подкорректировать прицел. Это может
обернуться против вас, особенно с автоматом,
имеющем сильный разброс при стрельбе, например,
AK-47.
В случае, когда cl_lw включена (cl_lw 1),
ваша машина должна сама генерировать случайный
разброс и неточность при стрельбе. В результате
места попадания пуль, которые вы будете видеть,
могут не совпадать с теми, что происходят на
сервере, который случайным образом генерирует
свою неточность для вашего оружия. Короче, ваша
тачка и сервер будут генерировать траектории
пуль немного по-разному. В результате вы увидите
то, что насчитал ваш компьютер, а на самом деле
бдет происходить то, что насчитал сервер. Когда
идет сильный разброс пуль(например, долгая
очередь из калаша), то вероятность таких
несовпадений повышается.
Вобщем совет: если вы пользуетесь
компенсацией лага, то включайте (cl_lw 1), а
если не пользуетесь - выключайте (cl_lw 0). По
умолчанию включено.
cl_lb X - опция,
включающая упрежденный показ крови (если на
сервере это не запрещено). Когда вы бегаете с
оружием, имеющем маленький разброс при стрельбе,
можете попробовать включить эту опцию (cl_lb 1).
Однако я настоятельно рекомендую оставлять ее
отключенной (cl_lb 0) всегда. Отключение
позволяет вам точно увидеть попали ли вы в
проивника по-настоящему. По умочанию выключено
(cl_lb 0).
cl_updaterate XX -
эта переменная контролирует число обновлений,
запрашиваемых у сервера в течение секунды. Во
многом она является аналогом "snaps" в Quake3,
только отличается тем, что не обязательно должна
быть кратной сорока для оптимальности. По
умочанию значение 20.
Сидя на выделенке значение можно ставить
30-40, однако, когда сервер полный, лучше
установить cl_updaterate 25 и меньше. Модемщикам
показано значение 20, однако на скорости 33600
на полном серваке лучше снизить cl_updaterate до
15. При игре по локалке смело ставьте
cl_updaterate 50.
Интересно вот что. "Рывки" при движении
игрока трудно заметить, если его cl_updaterate
выше 13. Единственная ситуация, когда низкие
значения cl_updaterate становятся ощутимыми,
когда все вокруг движется очень быстро.
Например, ракета летящая вам в дыню…
cl_cmdrate XX - эта
штучка подобна предыдущей cl_updaterate, за тем
лишь исключением, что она контролирует число
обновлений отсылаемых на сервер в течение
секунды. Таким образом разделение потоков
позволяет вам контролировать их независимо друг
от дурга, в зависимости от того, какой у вас
канал связи в каждую сторону. (Исходящий и
входящий траффик может проходить с разной
скоростью, например, на модемах с протоколом
V.90 входящий трафик прокачивается бытсрее, со
скоростями до 56 кбит/сек, а исходящий ограничен
скоростью соединения 33.6 кбит/сек. Это не
единственный пример, подобная ассиметричность
распространена весьма широко. - прим. перев.).
По умолчанию имеет значение 30.
В связи с тем, что объем исходящего от вас
траффика сильно не меняется, в отличие от объема
входящего (особенно на полных серверах), то
модемщики могут оставить cl_cmdrate равным 30.
Пользователи с более "толстым" каналом, могут
установить ее значение в 40-50. Для игры по
локалке подойдет 50.
fps_max XXX - это
новый универсальный ограничитель FPS для вашего
HL. Действует для игр по локалке, интернету и
синглу. В свзяи с тем, что теперь большое число
FPS'ов не создает лага, я бы советовал всем
ставить это значение на максимум, равным
100.
Значение можно ставить ниже, если вам хочется
уменьшить загрузку процессора вашего компьютера.
Например, если вы на одной машине запускаете
выделенный сервер (dedicated server) и клиента
одновременно.
rate XXXXX - это
очень важная настройка. Она контролирует какой
объем информации вы сможете прокачать через ваше
соединение с сервером за любое наперед заданое
время. Мы рекомендуем:
Тип соединения |
Значение |
Модем 14.4 |
Купи-ка, дружок, новый модем |
Модем 28.8 |
От 2500 до 3000 |
Модем 33.6 |
От 2900 до 3900 |
Модем 56k/Одноканальный ISDN |
От 3600 до 5300 |
Двухканальный ISDN |
От 5000 до 7000 |
Кабельный модем |
От 5600 до 10000 |
xDSL, T1+ |
От 7500 до 20000 |
LAN (10MBps or 100MBps) |
20000 | | К
сожалению, редко какое соединение стабильно
настолько, что имеет одинаковый объем прокачки
за одинаковое время. А это означает то, что для
нирваны вам придется регулировать значения rate
прямо в игре :) С помощью этой настройки вы
получите хорошее представление о характере ваших
соединений. Не бойтесь поэкспериментировать,
если качетсво вашей связи не вписывается в
границы, приведенные в таблице.
Чтобы отыскать нужные вам значения, пользуйте
в игре NetGraph (см. ниже). Если значения rate у
вас слишком задрано, то возникнут характерные
скачки пинга и ошибки потери пакетов. Если
слишком низкое, то пакеты тоже могут потеряться
- просто не дойдут все из-за rate-ограничений.
Но вообще-то лучше ошибиться, слегка занизив
rate, чем слишком его задрав. Так что будьте
внимательны.
cl_allowupload X -
поставив ноль (cl_allowupload 0), вы тем самым
прекратите закачку со своей стороны на сервер
всякого мусора, типа логосов, таким образом
избавив других игроков от сомнительного
удовольствия созерцать вашу мазню. По умолчанию
стоит 1, т.е. разрешать закачку подобных
нифелей.
cl_allowdownload X -
позволяет или запрещает скачивание с сервера
логосов и новых карт (если карты, крутящейся на
серваке, у вас нет, то вас просто выкинет с
него). 1 - позволяет (по умолчанию), 0 -
запрещает. (Модемщикам я бы посоветовал
отрубить, т.е. проставить cl_allowdownload 0.
Скачивание логосов затягивает загрузку, а новую
карту быстрее слить через web в заархивированном
виде и потом самому распаковать - прим.
перев.).
cl_download_ingame X
- значение 0 запрещает скачивание вами новых
логосов игроков, которые подсоединились на
сервер в момент игры. Для модемщиков
настоятельно рекомендую запретить
(cl_download_ingame 1), иначе попрут лаги.
Причем, во включенном состоянии эта хрень
продолжит скачивание всякого мусора даже в
промежтках между загрузками серваком карт. По
умолчанию включено (cl_download_ingame 1).
В этой части мы рассмотрим возвращение
блудного сына - утилитки NetGraph (у квакеров -
"lagometr"), призванной служить вам верой и
правдой. NetGraph по ходу игры будет снабжать
вас информацией о входящем/исходящем траффике,
пинге, колличестве утерянных пакетов, FPS'ах,
стабильности подключения и пр. Чтобы запустить
NetGraph, напишите в консоли: net_graph 1. В
правом нижнем углу появится небольшой экранчик,
расказывающий вам что происходит со связью во
время подключения.
На рисунке цифрами обозначены
следующие рулезы: 1. Счетчик FPS - кол-во
кадров в секунду. 2. Задержка (latency) - в
отличие от пинга, который показывается на
игровом табло вызываемом по клавише Tab, при
вычислении этого значения не учитывается время
затраченное на прорисовку и компенсацию
лага. 3. Входящий траффик. 4.
Исходящий. 5. Этот "текущий" график
показывает изменения пинга по времени. Чем выше
пинг, тем выше рисуется график. Красным будут
отображаться потерянные пакеты. 6. Число
обновлений, запрашиваемых у сервера в течение
секунды (cl_updaterate). 7. Число обновлений,
отсылаемых на сервер в течение секунды
(cl_cmdrate).
Позицию NetGraph'a можно менять с помощью
переменной net_graphpos. Установив ее значение
равным 1, 2 или 3, NetGraph, соответственно
будет прорисовываться в нижней правой,
центральной или левой части экрана. За ширину и
высоту NetGraph'a отвечают переменные
net_graphwidth (192 по умолчанию) и graphheight
(64 пикселя по умолчанию).
Обратите внимание: во включенном состоянии
NetGraph неслабо хавает FPS'ы, так что если вы
не занимаетесь наладкой вашего конфига по части
оптимизации связи, то лучше таки выключать
NetGraph. Если вы извращенец и вам нравится
всегда глазеть на сие чудо природы, то
уменьшением размера табло можно снизить нагрузку
на видеоакселератор и процессор.
Custom.hpk
В вашей игровой директории (например,
half-life/valve, half-life/cstrike,
half-life/firearms и т.п.) есть такой
замечательный файлик - custom.hpk. Его
особенность состоит в том, что в нем хранятся
всякие цветные логотипы, которые распыляют при
игре ваши товарищи по команде или враги. К
несчастью, этот файл никогда автоматически не
очищается, зато грузится каждый раз, отнимая у
вас время и память. Если вы ведете распутную
жизнь, часто меняя сервера и соперников, то
размер custom.hpk запросто может раздуться до
нескольких десятков мегабайт. Сами понимаете,
тормозить начнет ощутимо… Так что в качестве
профилактики стирайте custom.hpk раз в пару
недель. Не волнуйтесь, Half-Life создаст новый
:).
Собственно кроме настроек сетевого кода, о
которой мы все это время говорили, есть еще
множество интересных настроек графики и,
собственно, самой игры. Большинство из них
способны лишь самую малость увеличить скорость
игры (FPS), так что остановимся на самых
значимых, плюс упомянем переменные, отвечающие
за качество изображения.
max_shells X - число
стреляных гильз, которые могут одновременно
прорисовываться в игре. По достижении этого
ограничения лишние будут исчезать.
max_smokepuffs X - по
смыслу похоже на max_shells, только речь идет о
дыме :)
gl_texturemode -
отвечает за выбор фильтрации при прорисовке
(билинейная или трилинейная). Большинство
видеокарт без труда потянет трилинейную без
ощутимых потерь в произодительности. Поверьте,
это того стоит.
GL_NEAREST_MIPMAP_LINEAR (качество по
умочанию) GL_LINEAR_MIPMAP_LINEAR (высокое
качество)
Вобщем-то доступны и другие значения, но
смотрятся они по-настоящему уродски, а прирост
производительности при этом незначителен…
gl_ztrick X -
полезность для владельцев видеокарт класса ниже
TNT1. Эта опция выставляет точность z-буфера
вашего ускорителя, которая, кстати, тоже кушает
его ресурсы (точнее - пропускную способность
видеопамяти). Допустимые значения 1 и 0 (по
умочнию - ноль). Смысл заключается в качестве
отображении отдаленных объектов.
cl_himodels X -
включает(1)/выключает(0) улучшенную прорисовку
моделей игроков. Ест, как обычно, ресурсы
процессора, за счет использования большего числа
полигонов. (Что касается Counter-Strike, то
поддержка этой опции, насколько я помню, введена
только начиная с версии 1.1 - прим. перев.) По
умочанию - 0.
gl_polyoffset XX - по
умолчнию стоит значение 4. Настройка, полезная
для тех видеокарт, на которых наблюдается
мерцание текстур. Поставьте gl_polyoffset 20 -
авось пройдет. Типа намек :) Остальным лучше не
трогать во избежание обратного эффекта.
con_color RRR GGG BBB
- эта вещь отвечает за цвет текста, выводимого
на кран. Схема работы - стандартный RGB (Red
Green Blue) - сочетаниями этих цветов можно
создать любой другой. Например, con_color 0 102
255 будет выглядеть так, con_color 255 0 0 -
это красный.
hud_fastswitch X -
быстрое переключение оружия. Очччень полезная
штучка - когда нажимаете кнопку с номером
оружия, оно сразу ложится к вам в руку, уже
готовое к стрельбе. Особенно полезно в
Counter-Strike, т.к. на клавишах "1", "2" и "3"
по умолчанию забиндены соответсвенно автомат,
пистолет и нож, а эти слоты могут вмещать всего
один ствол, поэтому не нужно, если у вас в руке
пистолет, а вы хотите нож, лишний раз щелкать
мышкой, подтверждая свой выбор. С теми слотами,
где вмещается больше одного предмета (и если там
действительно больше одного предмета) все
остается по-старому, например, с гранатами.
Хотя, если у вы купили одну, скажем, флэшку, то
нажав "4", она сразу прыгнет вам в руку. По
умолчанию в Counter-Strike эта фича выключена
(hud_fastswitch 0)! Поэтому включайте смело
(hud_fastswitch 1).
hud_saytext_time XX -
время задержки текста на экране. По умочанию -
6. Лучше поставить побольше, скажем, 20. Это
избавит вас от необходимости лезть в консоль,
чтобы прочитать что же передали вам через say
или team_say.
hud_deathnotice_time
XX - штучка, похожая на предыдущую
hud_saytext_time, только относится не к тексту,
а к сообщениям об убийствах, обычно появляющихся
в правом верхнем углу. По умочанию тоже шесть,
что маловато…
fastsprites X -
особенно полезная вещь для Counter-Strike.
Значение 1 уменьшает качество отрисовки дыма от
дымовых гранат. Может уменьшить тормозню. 2
использует принципиально другой метод
прорисовки, который может быть еще быстрее
(зависит от вашей машины). По умолчанию - 0,
т.е. рисуем по
полной. |