Вместе с официальными компиляторами ZHLT от «Зонера» есть их
подвинутая версия, носящая название Custom Build. Эту улучшенную версию
разработал «Merl». Версия компиляторов от Мерла имеет ряд преимуществ, о
которых мы раскажем в данном материале. Параметры, описанные в данном
материале, могут использоваться только вместе с ZHLT Custom Build и не применимы к обычным утилитам Зонера 2.5.3.
Содержание этой публикации:
Что нового в версии ZHLT Custom Build 1.7- Поддерживаются переключаемые светящиеся текстуры
- Поддерживаются полупрозрачные и цветные тени для энтити-объектов
- Возможное значение параметра «-subdivide» увеличено до 512
- Обновлена информация об объекте «info_compile_parmeters»
Специальная текстура Null
Null-текстура наносится на те стороны объектов, которые игрок в игре
не видит. Это нужно для того, чтобы движок Half-Life отрисовывал как
можно меньшее количество полигонов, тем самым повышая количество кадров в
секунду и снижая параметр r_speeds.
Во время компиляции null-текстуры просто удаляются. Наносить
null-текстуру можно как на обычные браши, так и на брашевые
энтити-объекты.
Приведём пример. Допустим, на нашем уровне мы построили ящик и сделали
его брашевым энтити-объектом — func_wall. Такой объект расходует шесть
epoly — по количеству сторон ящика. Дно ящика игрок не видит. Окрасив
дно текстурой NULL, мы удалим нижнюю текстуру, снизив показатель epoly
на один полигон. А если ящик стоит у стены (как на картинке), то также
можно затекстурировать null-текстурой и прислонённую сторону.
Другой пример. У нас есть оконный проем с разбиваемым стеклом
(func_breakable) или неразбиваемым из func_wall. В игре стекло даёт
шесть epoly, однако, игрок видит только две стороны стекла — оставшиеся
четыре мы можем раскрасить null-текстурой, и, таким образом, сбережём
четыре epoly.
Это были примеры, сберегающие epoly, хотя нас больше интересует
сбережение wpoly. Чтобы снизить wpoly, наносите текстуру на крыши домов,
верхние стороны заборов и т.п. — туда, куда никогда не будет направлен
взгляд игрока. Кстати говоря, вместо текстуры NULL с тем же успехом
можно использовать специальную текстур SKY. Эффект будет один и тот же —
снижение r_speeds гарантировано.
Если Вы будете использовать текстуру NULL, не забудьте скопировать zhlt.wad
(поставляется вместе с компиляторами Зонера) в какую-нибудь директорию и
подключить к редактору Hammer через меню «Tools\Options\Textures».
Авто определение wad-файлов
При помощи данной функции мы можем подключать к редактору Hammer любое
число текстурных WAD-файлов, но при этом только действительно
используемые текстурные библиотеки будут включены в итоговый BSP-файл
уровня.
Чтобы использовать данную функцию, нужно в строку запуска компилятора HLCSG.EXE добавить параметр -wadautodetect.
Режим экономии clipnode
Этот режим по умолчанию работает в программе-компиляторе HLCSG.EXE, поэтому подключать его нет необходимости.
Clipnode — поверхности, через которые игрок не может пройти. Любой
браш на карте: земля, стены, ящики «покрываются» clipnode-поверхностями.
Благодаря клипноудам игрок не проваливается сквозь карту и не проходит
сквозь стены.
Количество clipnode-плоскостей, как и многое другое в Counter-Strike,
ограничено. Когда количество данных плоскостей превысит максимально
допустимый уровень, то во время компиляции возникнет ошибка.
Помните, что режим экономии clipnode-поверхностей не гарантирует
отсутствие ошибки MAX_MAP_CLIPNODES, а просто уменьшает вероятность её
появления при компиляции.
Подробно об ошибке MAX_MAP_CLIPNODES мы рассказываем в материале: «Ошибки компиляции».
Рассеянный свет
Этот параметр создаёт более реалистичное освещение от объекта
light_environment. При этом программа-компилятор HLRAD.EXE берёт
информацию о цвете света и его яркости не из стандартного параметра
«_light», а из параметра «_diffuse_light» То есть мы записываем цвет и
яркость в параметр «_diffuse_light». В данном случае свет будет исходить
не от солнца, а со всего неба, что приведёт к более реалистичному
освещению.
Изменение теней объектов
Это новая функция в утилитах Зонера (Custom Build 1.7), которая
позволяет создателю карт управлять прозрачностью и цветом тени,
отбрасываемой брашевыми (brush-based) энтити.
Чтобы использовать данную функцию нужно выставить флажок «Opaque» в свойствах брашевого энтити, в параметре «zhlt_lightflags».
Далее отжимаем кнопку «Smart Edit» и добавляем новый параметр по имени zhlt_customshadow.
Эта опция определяет прозрачность брашевого энтити: от 1.0 до 0.0, где
1.0 — полностью непрозрачный объект, нормальная тень, а 0.0 — абсолютно
прозрачный объект, тени нет.
Для изменения цвета отбрасываемой тени, нужно прописать не один, а
сразу три параметра, которые определят цвет тени в формате RGB (Red
Green Blue — Красный, Зеленый, Синий). К примеру, чтобы придать тени
красноватый оттенок, необходимо прописать в параметрах 0.5 0.0 0.0. При значениях больше 1.0, компилятор HLRAD.EXE создаст что-то наподобие люминисцентной тени.
Для того, чтобы всё это заработало вместе с отраженным (bounce)
светом, а по умолчанию с ним данные эффекты не работают, нужно в строчку
запуска программы-компилятора HLRAD.EXE вписать параметр: -customshadowwithbounce.
- Если вместе с этим параметром используется параметр -sparse, то компиляция может серьёзно затянуться. Мы советуем вместе с параметром -customshadowwithbounce использовать ещё и параметр -nomatrix;
- Помните, что параметр -customshadowwithbounce работает только с обычными серыми (greyscale) тенями, то есть с цветными тенями он не работает.
Конфигурационный WAD-файл
Это значимое нововведение по сравнению с простыми утилитам ZHLT — конфигурационный WAD-файл.
Данный файл мы будем использовать для записи различных конфигураций
текстурных библиотек. К примеру, в данном файле можно создать 2
конфигурации текстурных файлов для 2 разных ваших карт. И когда нужно,
вы сможете вызывать ту или иную конфигурацию.
Конфигурационный WAD-файл по имени WAD.CFG обязательно должен находиться в одном каталоге с утилитами ZHLT Custom Build.
Если бы не было конфигурационного WAD-файла, то когда, к примеру, мы
создавали бы две карты одновременно, то мы вынуждены были бы с свойствах
редактора Хаммер постоянно подключать или отключать текстурные файлы,
которые нужны для той или иной карты.
Решить эту проблему помогает конфигурационный WAD-файл. Ниже вы можете видеть синтаксис данного файла.
название_конфигурации { d:\путь\wad1.wad d:\путь\wad2.wad ... include d:\путь\wad3.wad } где:
Название_конфигурации — произвольное имя (удобно называть конфигурацию по названию карты). c:\путь\wad1.wad — полный путь к первому WAD-файлу c:\путь\wad2.wad — полный путь ко второму WAD-файлу include c:\путь\wad3.wad — параметр «include» означает, что текстуры
из данного WAD-файла будут вшиты в готовый BSP-файл уровня.
Мы можем использовать любое число конфигураций и записей о текстурных WAD-файлах.
Приведём маленький примерчик:
Предположим, что на нашей карте CS_MAP используются 2 стандартных
Half-Life WAD-файла: halflife.wad и liquids.wad и один нестандартный
(MAP.WAD), который мы сделали сами. Тогда наша запись в файле WAD.CFG
будет выглядеть следующим образом:
CS_MAP { d:\Games\Half-Life\valve\halflife.wad d:\Games\Half-Life\valve\liquids.wad include d:\Wads\map.wad } Перед процессом компиляции нужно прописать следующий параметр в строку запуска компилятора HLCSG.EXE: -wadconfig CS_MAP. Таким образом, получается, что во время компиляционного процесса
HLCSG.EXE будет использовать конфигурацию по имени CS_MAP, из неё он
поймёт, что надо использовать 2 стандарных WAD-файла и что надо вшить
текстуры в карту из файла MAP.WAD.
Путь к конфигурационному файлу wad.cfg
Параметр -wadcfgfile позволяет указывать путь к файлу WAD.CFG,
если он не находится в папке с компиляторами или в директории с
Half-Life. Если WAD.CFG лежим в какой-то другой папке, то нужно вручную
добавить параметр -wadcfgfile здесь_путь_к_файлу в строчку запуска компилятора HLCSG.EXE.
Поддержка объекта info_compile_parameters
Версия утилит Custom Build 1.7 поддерживает использование в уровне
объекта info_compile_parameters, в котором можно указать некоторые
параметры компиляции карты, вместо того, что использовать их в командной
строке. Если в вашем FGD нет этого энтити-объекта, то информацию о нём
нужно дописать в ваш FGD-файл. Как это сделать, мы рассказываем в
разделе нашего сайта: «Энтити».
Поддержка объекта info_texlights
Версия утилит Custom Build 1.7 поддерживает использование в уровне
объекта info_texlights. Этот энтити-объект используется вместо
RAD-файла, в котором записывается инфа о светящихся текстурах, то есть
текстурах, испускающих свет. Подробно об этом мы рассказываем в разделе
нашего сайта: «Энтити».
Переключаемые светящиеся текстуры
Хорошее нововведение в версии утилит Зонера Custom Build 1.7 —
переключаемые светящиеся текстуры. Теперь светящиеся текстуры могут
мигать или просто быть включены или выключены, как обыкновенная лампочка
(объект light).
Чтобы это стало возможныи, нужно в FGD-файл, в параметры брашевых
(brush-based) энтити-объектов (к примеру, func_wall) добавить следующий
код:
style(choices) : "Texlight style" : 0 =
[
0 : "Normal"
-3: "Grouped"
10: "Fluorescent flicker"
2 : "Slow, strong pulse"
11: "Slow pulse, noblack"
5 : "Gentle pulse"
1 : "Flicker A"
6 : "Flicker B"
3 : "Candle A"
7 : "Candle B"
8 : "Candle C"
4 : "Fast strobe"
9 : "Slow strobe"
12: "Underwater"
]
Когда мы добавим этот код, то в редакторе станет возможным выбор стиля для данного объекта (func_wall). Стиль Grouped создан для того, чтобы включать или выключать светящуюся текстуру, как обычную лампочку.
Давайте рассмотрим небольшой пример. Создадим брашевую энтити
func_wall, окрасим её светящейся текстурой (текстура будет светящейся
только тогда, когда она прописана в спец-ом RAD-файле, который
подключается компиляции), дадим нашей func_wall имя, к примеру, WALL-1,
поставим стиль «Grouped» и (ВНИМАНИЕ!) создаем около func_wall обычный
источник света — light с таким же именем: WALL-1. Ставим яркость
лампочки в 0.01.
Теперь компилятор HLRAD.EXE, который просчитывает освещение карты,
будет думать, что свет излучает лампочка (light), хотя на самом деле —
светящаяся текстура. Чтобы включить или выключить освещение от
светящейся текстуры необходимо активировать лампочку — light. Можно было
бы так не исхищряться, если бы Counter-Strike поддерживал переключаемые
светящиеся текстуры, как например, в Spirit of HL.
Параметр -subdivide
Этот параметр программы-компилятора HLBSP.EXE позволяет изменить
шаг в пикселях, с которым поверхность уровня делится на полигоны. По
умолчанию каждые 240 пикселей текстуры делается разрез. Для того чтобы
уменьшить количество полигонов создатели карт делают текстуры со
сторонами 240х240 пикселей. Так сделано, например, на de_dust. Если мы
применим текстуру 256х256 пикселей, то поверхность будет разбита на
четыре полигона (один большой размером 240х240 пикселей и три мелких),
что в итоге приведёт к существенному увеличению общего количества
отрисовываемых движком полигонов.
Установив параметр -subdivide 256, мы в значительной степени уменьшим количество рисуемых полигонов в уровне, при условии, что мы используем текстуры 256 на 256 пикселей.
Если у нас текстуры со сторонами более 256 пикселей, то стоит ещё увеличить параметр «-subdivide».
Кстати сказать, если мы будем использовать данный параметр, то в режиме
Software, возможно, возникновение проблем. Однако, так как данный режим
не используется игроками, то ничего страшного в этом нет :-)
Но тут есть одно большое «НО» — данный параметр не работает :-) Вернее
сказать, иногда уровень компилируется нормально, а иногда компиляция
прерывается на стадии просчёта освещения компилятором HLRAD.EXE, и
выдается сообщение об ошибке. По крайней мере, такое наблюдалось с
утилитами Custom Build 1.7. Подождём исправления.
Максимальное vis-расстояние
Максимальное визуальное расстояние (Maximum Distance Visibility — MDV)
новый параметр, предназначенный бороться с проблемой отрисовки объектов
на дальних расстояниях на вашем уровне. Некоторые дальние объекты могут
скрываться игровым движком. Когда же вы используете эту функцию, то
будете уверены, что уровень будет точно отрисован в пределах Maximum
Distance Visibility.
Чтобы использовать этот параметр, нужно вписать слово -maxdistance # в строчку запуска HLVIS.EXE, где # — макс. дистанция в юнитах.
Но! Есть 1 побочный эффект при использовании Maximum Distance
Visibility. Работа программы-компилятора HLRAD.EXE по оптимизации
освещения в значительной степени зависит от размера visibility matrix
(визуальной матрицы). Как следствие обычный RAD-компилятор может
«обрезать» свет. Но волноваться нечего, ведь данную проблему решает
использование вместо стандартной программы-компилятора RAD, компилятора
HLRAD.EXE — специальной версии от Адама Фостера. В состав компиляторов
Зонера (Custom Build) как раз включён этот улучшенный компилятор
HLRAD.EXE.
Когда параметр -maxdistance # у программы-компилятора
HLVIS.EXE установлен, то при компиляции создастся некий файл *.VDT, в
котором хранится информация о размере реальной визуальной матрицы (без
использования Maximum Distance Visibility). Потом файл *.VDT
используется программой-компилятором HLRAD.EXE для создания грамотного
:) освещения карты.
Новые параметры компиляторов ZHLT Custom Build
Эти параметры можно использовать только с улучшенной версией
компиляторов Зонера — Custom Build. Они не будут работать с официальными
утилитами ZHLT 2.5.3. Конечно же, все параметры, которые используются
официальными компиляторами ZHLT 2.5.3, могут использоваться и с
компиляторами Custom Build. О данных парметрах мы подробно рассказываем в
соответствующем материале этой главы.
HLCSG
- -nonulltex
Запрещает использование NULL-текстур;
- -noclipeconomy
Отключает режим экономии clipnode-плоскостей;
- -wadconfig имя_конфигурации
Указывает имя конфигурации текстурных файлов в конфигурационном файле wad.cfg;
- -wadautodetect
Включает режим автообнаружения wad-файлов;
- -wadcfgfile путь_к_файлу_wad.cfg
Позволяет указать любой (нужный) путь к файлу wad.cfg. По умолчанию
программы-компиляторы ищут этот файл в папке с ZHLT или в папке с HL;
HLBSP
- -nonulltex
Запрещает использование NULL-текстур;
- -subdivide х, где х — значение от 240 до 512;
Изменяет шаг, с которым карта разрезается на полигоны (по умолчанию 240);
HLVIS
- -maxdistance #, где # — расстояние в юнитах;
Устанавливает максимальное vis-расстояние (Maximum Distance Visibility);
HLRAD
- -colourgamma r g b
Устанавливает значение гаммы (gamma) в формате r, g, b (красный, зеленый, синий);
- -colourscale r g b
Устанавливает значение lightscale в формате r, g, b (красный, зеленый, синий);
- -colourjitter r g b
Добавляет шум (помехи) различных цветов, используется для размытия (dithering);
- -jitter r g b
Добавляет шум (помехи) монохромного (одного) цвета, используется для размытия (dithering);
- -nodiffuse
Выключает diffuse hack для объекта light_environment;
- -nospotpoints
Выключает точечный режим отображения объекта light_spot;
- -softlight r g b d
Устанавливает значения для backwards-light hack (хака для отраженного света);
- -customshadowwithbounce
Позволяет использовать полупрозрачные тени для энтити-объектов при отраженном свете;
NETVIS
|