Школа Counter-Strike - Часть 3.3 Улучшенная версия ZHLT Custom Build

Мир Counter-Strike

Приветствую Вас Гость | RSSГлавная | Часть 3.3 Улучшенная версия ZHLT Custom Build | Регистрация | Вход
Главное меню
Теория CS
Видео школа CS 1.6
Скачать
Магазин
Мастерская
Арт-Cs
Новые видео уроки CS 1.6Новые материалы и файлы


Учебник по созданию карт
Часть 3. Компиляция (ZHLT).

Часть 3.3 Улучшенная версия ZHLT Custom Build

Вместе с официальными компиляторами 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-текстурой и прислонённую сторону.

Пример использования специальной текстуры NULL


Другой пример. У нас есть оконный проем с разбиваемым стеклом (func_breakable) или неразбиваемым из func_wall. В игре стекло даёт шесть epoly, однако, игрок видит только две стороны стекла — оставшиеся четыре мы можем раскрасить null-текстурой, и, таким образом, сбережём четыре epoly.

Пример использования специальной текстуры NULL


Это были примеры, сберегающие 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 мы рассказываем в материале: "Ошибки компиляции" (Часть 3.6).

Рассеянный свет

Этот параметр создаёт более реалистичное освещение от объекта 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

  • Без изменений


Часть 3.2 Компиляторы ZHLT
Часть 3.3 Улучшенная версия ZHLT Custom Build
Часть 3.4 Параметры компиляторов
Часть 3.5 Как компилировать?
Часть 3.6 Ошибки компиляции
Часть 3.7 Разбор компиляционного LOG-файла
Часть 3.8 Изменение карты без компиляции.
Часть 3.9 О декомпиляции карт.
Часть 3.10 Узнай устройство карты без декомпиляции.
Часть 3.11 Как ускорить компиляцию?
   
Форма входа
Гость

Здравствуйте Гость! Пожалуйста зарегестрируйтель или зайдите под своим ником.biggrin
Поиск по сайту
Облако тегов
Тактика в CS 1.6
Опрос
Сколько Вам лет?
Всего ответов: 1375
Материалы
Comments: 49
Forum: 12/45
News: 6
Downloads: 250
Guestbook: 57
Кто онлайн

Онлайн всего: 1
Гостей: 1
Пользователей: 0
uCoz
При копировании материалов активная ссылка на world-cs.net обязательна © 2016