Пятница, 29.03.2024, 12:13

logo

Пользовательский поиск

Меню сайта
Категории раздела
Разное [15]
Tutorials
Создание карт [13]
Создание моделей [2]
Кодинг [14]
Создание карт CS [197]
Учебник cs-mapper
Свойства entity HL-CS [117]
Форма входа
Логин:
Пароль:
Наш сервер CS 1.6
Поиск
Наш опрос
Ваш возраст
Всего ответов: 263
Друзья сайта


Главная » Статьи » HL Development » Создание карт CS


Учебник по созданию карт CS HL. Улучшенная версия ZHLT Custom Build



CS-MAPPER — Создание карт для
 CS. 
 
 
Ссылки 
Статьи

Учебник по созданию карт
Глава III. Компиляция (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 мы рассказываем в материале: «Ошибки компиляции».


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

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

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

Глава III. Компиляция (ZHLT).

§ 3.1   Что такое компиляция?
§ 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 Как ускорить компиляцию?

К оглавлению Учебника

Категория: Создание карт CS | Добавил: SuperStart (02.03.2012)
Просмотров: 5236 | Теги: Counter-Strike, counter strike, Half-Life, Halflife, counter-strike 1.6 | Рейтинг: 0.0/0 |



Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Copyright www.akksimo.net © 2024