Глава IV. Текстуры и декали.

Работа с текстурами и декалями: типы, WAD-файлы, прозрачность, светящиеся поверхности и звуковые текстуры.

4.1

Что такое текстуры и декали?

Из этой статьи Вы узнаете, что такое текстуры и декали, как называются текстуры в Half-Life, узнаете о стандартных текстурных файлах, а также о том, какого размера и масштаба лучше использовать текстуры на своих картах.

1. Текстуры

1.1 Что такое текстура?
Текстура — это картинка, графическое изображение, которое наносится на стороны объектов. Благодаря текстурам, мы отличаем песчаную дорожку от асфальтированной, деревянный ящик от каменной глыбы, кирпичную стенку от скалы и т.д. Конечно, само по себе перекрашивание объекта, например, в текстуру автомобиля, не заставит его ездить, так же как и не будет открываться обычный браш, окрашенный в текстуру двери — для этого нужно превратить браш в энтити-объект и выставить для него свойства.
Также текстуры, как это ни странно, влияют на пробиваемость объектов. В папке "Cstrike\sound" есть такой файл materials.txt, в котором перечислены названия некоторых стандартных текстур и присвоенный им тип материала (дерево, металл, скала, грязь и пр.). Опытным путем было установлено, что объекты, окрашенные, например, текстурой металла пробиваются хуже, чем объекты с текстурой дерева или скалы. Однако, если название текстуры не указано в materials.txt (а так и происходит при использовании неоригинальных, своих текстур), то пробиваемость всех объектов на карте будет одинаковой, независящей от наложенной текстуры.
1.2 Где хранятся текстуры?
Все текстуры для Half-Life хранятся в папке Valve. Карты для CS используют текстуры из папок Valve и Cstrike. Для хранения текстур в Half-Life используются файлы с расширением *.WAD. В одном таком WAD-файле может находиться любое количество текстур от одной до нескольких тысяч, а может и миллионов (мы не проверяли :)
1.3 Чем можно просматривать текстуры?
Для просмотра текстур можно воспользоваться программой Wally (в ней же можно создавать и свои библиотеки текстур, т.е. WAD-файлы). Также текстуры можно просматривать в редакторе Hammer, во встроенном текстурном браузере.
1.4 Как называются стандартные текстурные файлы?
Под словом "стандартные" подразумеваются те текстуры, которые находятся в папке Half-Life и CS после установки этих игр. Не секрет, что создатели карт частенько используют свои (или взятые откуда-то со стороны) текстуры. Так вот такие текстуры стандартными не являются.
Так получается, что текстуры из папки Valve не изменяются и переходят из версии к версии. А вот текстурные файлы для CS-карт, которые лежат в папке Cstrike, могут быть удалены или изменены разработчиками. В принципе правильно — если какую-то официальную CS-карту исключили из списка, то не за чем держать ее текстуры. А теперь представьте, что на Вашей карте использовались текстуры из этого исключенного WAD-файла...
После удаления WAD-файла из стандартной поставки игры, Ваша карта будет не работоспособна. Когда игра не находит WAD-файла, который используется на карте, то карта не запускается, а игра вылетает с ошибкой. А когда в каком-то WAD-файле просто не хватает нужных текстур, то карта запускается, но вместо недостающих текстур выводятся черно-фиолетовые квадраты. Выход из этого один — включать текстуры непосредственно в карту (в сам BSP-файл). Но это уже тема для отдельной статьи.
Ниже мы приводим список WAD-файлов, которые вряд ли когда либо будут удалены из игры, а поэтому использовать их безопасно. Вы можете использовать текстуры из этих файлов и не включать их в состав карты (в BSP-файл). Это к тому же несколько уменьшит размер карты. Ведь стандартные текстуры у всех есть и передавать их вместе с картой излишне.
  • halflife.wad — основной WAD-файл игры Half-Life с огромным количеством текстур (более 40 Мб)
  • liquids.wad — текстуры воды
  • decals.wad — декали (см. ниже)
  • cstrike.wad — стандартный WAD-файл для CS
Также большое количество текстур находится в директории Cstrike — это текстуры официальных CS-карт. Например, очень неплохие текстуры можно найти в следующих WAD-файлах:
chateau.wad
cs_bdog.wad
cs_havana.wad
de_piranesi.wad
de_vegas.wad
itsitaly.wad
Это тоже стандартные текстурные файлы (раз уж они устанавливаются вместе с игрой), однако нет никакой гарантии, что в один прекрасный момент карты, а вместе с ними и текстуры не будут удалены из дистрибутива CS. Именно поэтому мы рекомендуем включать текстуры из подобных WAD-файлов в состав BSP-файла карты.
Запомните, если Вы используете на своей карте текстуры из нестандартных (Ваших или любых других) WAD-файлов, то обязательно распространяйте их вместе со своей картой (в одном архиве). Лучше всего включить текстуры из всех нестандартных файлов в BSP-карту, но можно создать и отдельный WAD-файл.
Допустим Вы создаете карту и используете текстуры из 10 нестандартных текстурных файлов: 2 текстуры из первого, 2 из второго, 5 из третьего и т.д. Так вот, чтобы карта запустилась необходимы будут все задействованные при создании карты WAD-файлы. Смысла распространять их все вместе с картой нет. Мы же не используем все текстуры из этих файлов. Так зачем увеличивать размер архива? Именно поэтому необходимо составить 1 WAD-файл и записать в него используемые текстуры. А еще проще и быстрее, повторимся, включить текстуры в BSP-файл карты.
1.5 Включение текстур в BSP-файл карты
Включить текстуры в BSP-файл карты — означает записать текстуры непосредственно в саму карту (без отдельных файлов). При этом отпадает необходимость распространять вместе с картой отдельные WAD-файлы.
Стандартные текстуры из перечисленных выше 4 WAD-файлов включать в карту не нужно. Эти текстуры у всех есть, и они вряд ли когда либо будут удалены из игры. Все остальные текстуры при помощи специальных параметров во время компиляции должны быть включены в карту. Подробнее о том, как это сделать, Вы можете прочитать в одной из наших следующих статей этой Главы.
1.6 Размеры текстур
Минимальный размер текстуры в Half-Life составляет 16х16 пикселей. Меньше нельзя, больше можно. Максимальный размер текстур, обычно используемый мапперами — 512х512 пикселей. Большего нам видеть не доводилось. Что будет при использовании бОльших текстур, поручаем проверить Вам :) Кстати, длина и ширина текстуры должна быть кратна 16, например: 128х64, 256х192, 48х32 и т.д.
Обычно, при нанесении текстуры, 1 текстурный пиксель приравнивают к 1 юниту длины объекта. Это считается нормальным масштабом, т.е. 1:1. Например, текстуру с размерами 64х64 пикселя следует наносить на сторону объекта с размерами 64х64 юнита или меньшими (в этом случае текстура "подгоняется" кнопкой Fit).
С масштабом наложения 1:1 текстуры хорошо смотрятся. А вот если текстура меньше размеров объекта, то в игре мы увидим некоторую размазанность, зависящую от величины масштаба. Но иногда, с целью экономии полигонов, текстуры специально наносят с увеличенным масштабом 2:1, 4:1 и т.д. Подробнее об этом Вы можете прочитать в Главе VI из статьи об R_Speeds. Там эта техника борьбы с "тормозами" на карте довольно подробно описана.
Если Вы обратите внимание на размеры текстур в стандартных WAD-файлах, то из них становится ясно, какого размера бывают стандартные объекты: ящики, двери, стены. Например, очень часто встречаются текстуры ящиков с размером 64x64 или 128х128 пикселей, это косвенно указывает на размеры стандартных ящиков в 64х64х64 и 128х128х128 юнитов. Конечно же, никто не запрещает использовать другие размеры, просто слишком маленькие или слишком большие ящики (и вообще любые другие объекты) могут показаться нереальными. Здесь главное соблюсти правильность масштабов, чтобы не получилось, как на картах из серии de_rats, хотя идея интересная :)
1.7 Масштаб текстур
Как мы уже упомянули выше, 1 текстурный пиксель приравнивается к 1 юниту длины объекта. Это масштаб наложения текстуры 1:1. Если мы наложим текстуру 128х128 пикселей на ящик 64х64 юнита, то масштаб будет 1:2 (или 0,5). Если мы натянем маленькую текстуру 32х32 пикселя на ящик 64х64 юнита, то масштаб будет увеличенным 2:1.
Масштаб текстур напрямую связан с количеством полигонов, видимых игроком, когда он передвигается по карте. Чем больше маштаб текстур, т.е. чем больше они растянуты, тем меньше полигонов обрабатывает игровой движок, и тем меньше тормозит карта. В связи с этим рекомендуем на неответственных местах (может быть горах, земле, где-то еще) увеличивать масштаб текстур.
Опять же порекомендуем прочитать статью об R_Speeds из Главы VI, там даны более конкретные рекомендации по оптимизации карты.
1.8 Названия текстур
Текстуры в Half-Life, а именно в главном файле этой игры halflife.wad названы не просто так. Например, слово "crate" или "crt" в названии текстуры означает, что текстуру для ящика ("crate" по-английски — ящик).
  • "crate" или "crt" — ящики
    "water" или "wtr" — вода
    "ground" или "grnd" — земля
    "fence" и "grate" — заборы и решетки
    "wall" — стены
    "light" или "lgt" — лампочки или фонари
Мы рекомендуем Вам называть свои текстуры подобным же образом. Это позволит быстрее отыскивать нужный тип текстуры в больших WAD-файлах. Кстати, наши мапперы часто называют текстуры, например: Zabor, Doska, Doroga — так, по текстурам, можно безошибочно определить страну происхождения карты :)
Кроме этих слов существуют некие приставки (набор из 2-3 символов), которые идут непосредственно перед названием текстуры, а точнее составляют самую первую часть названия текстуры. Эти приставки определяют принадлежность текстуры к определенному типу. Например, приставка в виде восклицательного знака "!", означает, что это текстура воды; если в начале названия стоит фигурная скобка "{", то это частично прозрачная текстура (т.е. текстура с маской; применяется для создания прозрачных заборов, деревьев и пр.).
Самую подробную информацию о типах текстур Вы можете получить из следующей статьи этой Главы.

2. Декали

Декали — это специальные текстуры, которые можно накладывать поверх обычных текстур. Примерами декалей являются следы от пуль на стенах, следы от взрывов гранат, следы крови — в общем это различного рода следы. Все декали находятся в файле decals.wad в директории Valve.
К сожалению, на своих картах можно использовать только стандартные декали. В отличии от текстур, декали невозможно включить в состав карты и нельзя использовать свои декали, поэтому остается довольствоваться стандартными из файла decals.wad, впрочем они не так уж плохи.
4.2

Типы текстур в Half-Life и CS

Из данной статьи Вы узнаете на какие типы делятся текстуры в Half-Life и CS, как они называются в зависимости от типа, также Вы узнаете о совместимости текстур различных типов.
В Half-Life существует несколько различных типов текстур: простые текстуры, текстуры с маской, текстуры жидкостей и др. Тип текстуры определяется по ее названию, а точнее по нескольким первым символам в названии текстуры. Например, все текстуры жидкостей начинаются с восклицательного знака "!", а текстуры для прозрачных заборов и лестниц — с фигурной скобки "{" (подробнее об этом ниже).
Некоторые текстуры не могут быть нанесены на один объект вместе с другими текстурами, т.к. это вызывает ошибку, поэтому крайне важно знать о совместимости различных типов текстур. Существуют также спецтекстуры, которые применяются для создания неба, триггеров, ограничительных плоскостей и пр.
Типы текстур:
  1. Обычные текстуры
  2. Накладывающиеся в случайном порядке
  3. Анимированные
  4. Переключаемые
  5. Светящиеся
  6. Текстуры с маской или прозрачные текстуры
  7. Текстура воды, жидкости
  8. Scroll-текстуры (двигающиеся)
Специальные текстуры:
  1. AAATRIGGER
  2. SKY
  3. CLIP
  4. ORIGIN
  5. HINT/SKIP
  6. NULL

ЧАСТЬ 1.

1. Обычные текстуры

Названия обычных текстур начинаются с английских букв (a-z, A-Z) или цифр (0-9).
Примеры обычных текстур:
Пример обычной текстурыПример обычной текстурыПример обычной текстуры
Пример обычной текстурыПример обычной текстурыПример обычной текстуры
Как видно из примеров, обычные текстуры могут быть самыми разными: двери, полы, ящики, стены, земля, скалы. В основном карты закрашиваются именно такими простыми текстурами.
Текстуры, как это ни странно, влияют на пробиваемость объектов. В папке "Cstrike\sound" есть такой файл materials.txt, в котором перечислены названия некоторых стандартных текстур и присвоенный им тип материала (дерево, металл, скала, грязь и пр.). Опытным путем было установлено, что объекты, окрашенные, например, текстурой металла пробиваются хуже, чем объекты с текстурой дерева или скалы. Однако, если название текстуры не указано в materials.txt (а так и происходит при использовании неоригинальных, своих текстур), то пробиваемость всех объектов на карте будет одинаковой, независящей от наложенной текстуры.

2. Накладывающиеся в случайном порядке текстуры

Названия таких текстур начинаются с цифр (от –0 до –9), со знаком "минус". Дальше после цифр идет простое название.
Пример серии из двух накладывающихся текстур:
Примеры текстур, накладывающихся в случайном порядкеПример текстур накладывающихся в случайном порядке
Из примера видно, что текстуры из одной серии называются так: –0название, –1название, –2название и т.д.
Вобщем-то это тоже обычные текстуры, как и в первом случае, только игровой движок, увидев "минус" перед названием, накладывает их случайным образом (например, стена будет покрашена разными текстурами из одной серии). Говорят, это делает карту не такой однообразной — чтож, может быть и так, однако размер карты при этом существенно увеличивается (если текстуры большие). Вобщем выгода от использования таких текстур сомнительна и зачастую не видна простому игроку.
Требование к таким текстурам
Накладывающиеся в случайном порядке текстуры должны хорошо подходить друг к другу, т.е. каждая текстура должна являться продолжением предудущей и всех соседних текстур (еще говорят: текстуры должны тайлиться, от англ. tile — черепица). Таким образом, создавая подобные текстуры, нужно добиваться плавности переходов между краями текстур, т.е. не должно быть заметно швов.
Замечание
На некоторых древних видеокартах текстуры в случайном порядке не накладываются. Но это касается режимов OpenGL и Direct3D. В режиме Software (а его, в лучшем случае, использует 0,1% игроков) будет все нормально. Вобщем, проблемы как бы и нет, если не учитывать этот 0,1%.

3. Анимированные текстуры

Названия таких текстур начинаются с цифр (от +0 до +9), со знаком "+".
Пример серии анимированных текстур:
Примеры анимированных текстур
Текстуры начинающиеся с цифр от +0 до +9 в игре показываются друг за другом непрерывно, создавая таким образом анимацию. Самый простой пример использования анимированных текстур — мониторы компьютеров (есть на карте cs_militia, да и в Half-Life их полно). Другой пример: водопад, когда несколько последовательно меняющихся текстур воды создают иллюзию водного потока. В общем и целом вещь довольно полезная.
Требование к таким текстурам
Анимированные текстуры должны хорошо подходить друг к другу, т.е. иметь правильную последовательность анимации.

4. Переключаемые

Названия переключаемых текстур начинаются с +А и цифр (+0 ... +9).
Пример серии переключаемых текстур:
Примеры анимированных переключаемых текстур
Единственным отличием переключаемых текстур от анимированных является присутствие в серии одной текстуры, начинающейся с +А (см. рис. выше).
Переключаемые текстуры можно использовать при создании выключателей, кнопок, рубильников и прочего. Например, текстуру, представленную на рисунке выше, можно наложить на небольшую кнопку, тогда, при нажатии на нее, текстура сменится на следующую, и создастся впечатление, что кнопка действительно была нажата.

5. Светящиеся текстуры

Названия таких текстур начинаются со знака тильды "~", хотя в принципе любая текстура в Half-Life может излучать свет, но об этом чуть позже.
Примеры светящихся текстур:
Примеры текстур, излучающих свет
Текстуры с названием, начинающимся с тильды, излучают свет только если они записаны в специальном файле с расширением *.RAD. В общем-то можно заставить светиться любую текстуру, пусть даже и без тильды, главное: прописать ее название в RAD-файл. Данный файл подключается при компиляции и используется при просчете освещения от светящихся текстур.
По умолчанию компиляторы ищут информацию о светящихся текстурах в файлах lights.rad или имя_карты.rad, но в принципе можно назвать RAD-файл как угодно, только тогда придется указать это название в параметрах компиляторов.
Подробнее о применении светящихся текстур и создании собственного RAD-файла Вы можете прочитать в отдельной статье данной Главы.
Возможные проблемы и недостатки
Не стОит злоупотреблять светящимися текстурами на карте, т.к. они существенно (иногда в разы!) увеличивают время просчета освещения. Если необходимо создать несколько красивых фонариков, пожалуйста, но не стОит делать все освещение светящимися текстурами. Также следует знать, что для просчета освещения от излучающих свет текстур требуется больше оперативной памяти, а при нанесении многочисленных светящихся текстур на 1 объект может возникнуть ошибка.
А зачем тогда светящиеся текстуры?
Действительно, многие из Вас могут спросить: зачем использовать светящиеся текстуры, если время компиляции увеличивается, да еще надо тратить время на создание RAD-файла?
Как нам кажется, следующая картинка наглядно демонстрирует "зачем":
Разница между использованием светящихся текстур (слева) и объекта light
Как видно из рисунка, светящаяся текстура делает лампу как бы действительно включенной. А вот если использовать обычный источник света — объект light, то стороны лампы получаются темными.
Есть, кстати, и еще один способ заставить объект светиться. Только при этом он абсолютно не будет излучать свет, а просто будет ярким. Существенным преимуществом данного метода перед светящимися текстурами является гораздо меньшее время компиляции.
Метод: превратите лампу в энтити-объект (func_wall, func_illusionary, возможно, какой-то другой объект) и выставьте параметр Minimum light level (иногда встречается _minlight) в какое-нибудь значение отличное от 0, например, 0.5. Теперь лампа будет обладать минимальной яркостью. Около лампы нужно будет создать источник света light, т.к. сама она свет не излучает.
Замечание: чтобы использовать выше описанный совет, у Вас должна быть новая версия FGD-файла (0.7.7 и выше) и компиляторы ZHLT 2.5.3 и выше.

6. Текстуры с маской или прозрачные текстуры

Названия текстур с маской начинаются с фигурной скобки "{". При помощи таких текстур создаются: лестницы, заборы, решетки, деревья и другие объекты.
Примеры текстур с маской:
Примеры текстур с маской (прозрачные текстуры)
Такие текстуры называются текстурами с маской, т.к. синие части в игре будут прозрачными. Чтобы это произошло, необходимо объект покрашенный текстурой с маской превратить в func_wall, func_illusionary, func_breakable или другой энтити-объект в зависимости от назначения. Затем необходимо выставить следующие параметры отображения:
  • Render Mode: Solid
    FX Amount: 255
Более подробно о параметрах отображения энтити-объектов Вы можете прочитать из раздела сайта "Энтити".
Возможные проблемы
Часто при самостоятельном изготовлении таких текстур возникают проблемы из-за неправильной цветовой палитры. Прозрачные места должны быть чистого синего цвета в формате R=0 G=0 B=255. Также желательно окрашивать объект со всех сторон одной и той же текстурой. Но в принципе допускается покрасить один объект разными текстурами с маской и еще текстурой SKY.

7. Текстура воды, жидкости

Названия текстур жидкостей всегда начинаются с восклицательного знака "!".
Примеры текстур жидкостей:
Примеры текстур жидкостей
Если Вы окрашиваете какой-то объект текстурой воды, то окрашивать нужно ВСЕ СТОРОНЫ объекта. Иначе возникнет ошибка.
Практически в 100% случаев текстура жидкости наносится на объект func_water, который собственно и используются для создания воды. Но можно текстуру воды наложить и на обычный браш. В этом случае игровой движок автоматически превратит такой браш в воду. Однако такая вода не будет двигаться, у нее не будет волн и она не будет прозрачной — и вообще это уже не вода :) Лучше воду делать объектом func_water.
Прозрачность воды выставляется в параметрах отображения объекта func_water:
  • Render Mode: Texture
    FX Amount: от 50 до 150 (оптимально)
Более подробно о параметрах отображения энтити-объектов Вы можете прочитать из раздела сайта "Энтити".
Возможные проблемы
Обязательно все стороны объекта должны быть покрашены в текстуру воды причем в одну и ту же! Не допускается смешивать обычные текстуры с текстурой воды. Это неминуемо вызывает ошибку при компиляции карты.

8. Scroll-текстуры (двигающиеся, скроллящиеся)

Названия таких текстур начинаются со слова "Scroll". Применяются двигающиеся текстуры при создании конвейеров, воды с течением, водопадов и других подобных объектов.
Примеры двигающихся текстур:
Примеры scroll-текстур
Любую обычную текстуру можно превратить в scroll-текстуру, для этого нужно просто приписать в начале слово scroll. Первую текстуру (на рисунке слева) можно использовать для создания иллюзии движущегося потока воды, а вторую для создания конвейера.
Следует понимать, что сама по себе скроллящаяся текстура не толкает игрока, а просто создает иллюзию движения (ленты конвейера или потока воды). Чтобы конвейер действительно двигал игрока необходимо создать соответствующий энтити-объект.
Возможные трудности
Необходимо опытным путем подбирать правильный угол нанесения текстуры, потому как она может двигаться, например, против движения конвейера или под углом 90°. Нанесите текстуру на конвейер, откомпилируйте карту и проверьте совпадение движения текстуры с направлением толкания игрока.

ЧАСТЬ 2.

Специальные текстуры

Всего существует несколько специальных текстур. Вот их названия:
  • AAAtrigger
  • SKY
  • CLIP
  • ORIGIN
  • HINT/SKIP
  • NULL
Вы будете часто пользоваться этими текстурами (большинством из них). Рекомендуем запомнить их названия и внимательно прочитать о случаях, когда они применяются.
Также запомните, что текстурами CLIP и ORIGIN следует полностью покрывать объект. Они не допускают наличия на объекте других текстур вместе с ними. Все эти текстуры в игре невидимы и используются в строго определенных случаях. Об этом читайте ниже.
Также следует заметить, что внешний вид текстур, приведенных ниже, может отличаться от Ваших.
Главное, чтобы текстура имела именно такое (служебное, специальное) название. Т.е. если текстура названа AAAtrigger, но она не такая, как представлена здесь, то можете смело ее использовать, ошибки не будет. Это же касается и остальных специальных (служебных) текстур. Вы даже можете самостоятельно изготовить картинки для служебных текстур и затем использовать их при создании карты, необходимо лишь дать им точно такие же названия.

9. AAAtrigger — текстура для триггеров

Используется для создания триггеров и других брашевых энтити-объектов невидимых в игре.
Ниже приведено изображение текстуры (может быть другое при использовании нестандартного wad-файла):
t5tex14 Данная текстура находится в главной текстурной библиотеке игры Half-Life — halflife.wad в папке Valve. Используется для создания триггеров и других невидимых в игре брашевых энтити-объектов. Примеры объектов: trigger_once, trigger_multiple, trigger_hurt, trigger_push, env_bubbles, func_buyzone, func_bomb_target, func_ladder и др. Не рекомендуется использовать данную текстуру для закрашивания обычных брашей, т.к. это может вызвать ошибку.
Возможные проблемы
Данную текстуру необходимо использовать ТОЛЬКО для создания триггеров и других невидимых в игре брашевых энтити-объектов, но не для обычных брашей. И еще, нанесение данной текстуры на обычный браш не делает его невидимым. Невидимы будут только определенные энтити-объекты.

10. SKY — текстура неба.

Используется для создании неба. Браши, окрашенные текстурой SKY (SKY-браши), создаются вокруг карты, образуя некий колпак. При компиляции при помощи объекта light_environment со SKY-брашей проецируется свет.
Изображение текстуры:
t5tex15 Данная текстура находится в главной текстурной библиотеке игры Half-Life — halflife.wad в папке Valve. Используется для создания неба вокруг карты. Все стороны брашей, составляющих небо, должны быть окрашены текстурой SKY. При наличии на карте точечного объекта light_environment, данная текстура излучает свет. Так создается общее освещение на карте.
Также эту текстуру можно применять для снижения параметра r_speeds, нанося ее на те стороны объектов, которые игрок никогда не увидит в игре (крыши домов, обратные стороны стен и заборов и т.п.). Более подробно об использовании текстуры SKY для снижения "тормозов" на карте Вы можете прочитать в статьях: "Улучшенная версия ZHLT Custom Build" и "Все об r_speeds".
Возможные проблемы
Проблемы могут возникнуть, только если Вы используете для компиляции стандартные компиляторы (qcsg, qbsp2, vis, qrad), а не ZHLT. При использовании старых компиляторов игрок сможет "пролетать" сквозь небо. Чтобы этого не происходило, необходимо около брашей неба строить CLIP-браши. Но так как мы используем компиляторы ZHLT, то проблем с этой текстурой быть не должно и никаких CLIP-брашей около неба создавать не нужно.

11. CLIP — ограничение передвижения игроков

Используется для создания невидимых преград (стен, других объектов), через которые игрок не может пройти. Однако пули и гранаты свободно пролетают — это очень важное свойство.
Изображение текстуры:
t5tex16 Данная текстура находится в главной текстурной библиотеке игры Half-Life — halflife.wad в папке Valve. Используется для создания невидимых в игре стен, полов и т.п., через которые игрок не может пройти (упасть). В маппинге распространено выражение "CLIP-браш". CLIP-браш — это обычный браш, но окрашенный со всех сторон спецтекстурой CLIP.
В Учебнике есть подробная статья о применении CLIP-брашей, она отнесена к Главе VII.
Возможные проблемы
Ограничивающий передвижение игроков браш должен быть окрашен текстурой CLIP абсолютно со всех сторон, иначе возникает ошибка при компиляции карты. При использовании невидимых ограничивающих CLIP-брашей не по месту, можно вызывать раздражение у игроков — это когда очень хочется куда-то пройти, но невидимая стенка не дает этого сделать :) Поэтому используйте CLIP-браши с умом.

12. ORIGIN — определяет размещение оси вращаюшихся объектов

Используется для определения оси вращающихся объектов (func_door_rotating, func_vehicle и мн. др.).
Изображение текстуры:
t5tex17 Данная текстура находится в главной текстурной библиотеке игры Half-Life — halflife.wad в папке Valve. Используется для создания ORIGIN-браша (обычный браш, но окрашенный со всех сторон спецтекстурой ORIGIN). ORIGIN-браш своим центром определяет точку, через которую проходит ось вращения энтити-объектов: вращающихся дверей, вентиляторов, платформ, маятников. Также ORIGIN-браш устанавливает центр для поезда, машины, вращающейся платформы. В общем, если энтити-объект хоть как-то вращается или поворачивается, то он обязательно должен иметь ORIGIN-браш.
ORIGIN-браш должен входить в состав энтити-объекта, т.е. быть его неотъемлемой частью. Сначала создается браш нужной формы (дверь, вентилятор и т.п.), затем создается ORIGIN-браш (его следует поместить в предполагаемое место оси вращения), а затем все вместе: и браш, и ORIGIN-браш, превращаются в энтити-объект, например, func_rotating (вентилятор). Такой же порядок действий необходимо соблюдать при создании любого вращающегося объекта.
Подробнее об использовании ORIGIN-брашей Вы можете прочитать в статье: "Использование ORIGIN-брашей".
Предостережение
ORIGIN-браш должен быть окрашен текстурой ORIGIN абсолютно со всех сторон. Не допускается применять какую-либо другую текстуру вместе с ORIGIN. ORIGIN-браш должен обязательно входить в состав энтити-объекта, а не быть отдельно. Если в составе одного энтити-объекта будет сразу два или более ORIGIN-брашей, возникнет ошибка. Ось вращения для каждого вращающегося объекта должна быть только одна (она определяется в свойствах энтити-объекта). Форма и размер ORIGIN-браша значения не имеют, важно расположение его центра.

13. HINT/SKIP — оптимизация карты, повышение fps

Эта пара текстур используется для снижения параметра r_speeds. Подробнее о применении HINT-брашей Вы можете прочитать в статьях из раздела "Оптимизация карты (R_Speeds)".
Ниже приведены изображения текстур (могут быть другими при использовании различных wad-файлов):
t5tex18 Данные текстуры можно сделать самому или найти в текстурных библиотеках zhlt.wad и zeditor.wad , которые входят в состав утилит ZHLT. Правильное использование HINT/SKIP-брашей помогает снизить "тормоза" на карте (т.е. увеличивает fps).
В игре HINT-браши абсолютно невидимы и через них можно свободно проходить. Не рекомендуется окрашивать простые объекты этими текстурами!
Возможные проблемы
Трудно понять принцип действия HINT/SKIP-брашей, еще труднее правильно их расположить на карте. Неграмотное применение может вызвать обратный эффект — повышение тормозов на карте. Также следует помнить, что браш, окрашенный этими текстурами, не может быть окрашен какой-либо другой текстурой.

14. NULL — оптимизация карты, повышение fps

Наносится на стороны объектов, которые игрок не может видеть в игре, тем самым уменьшает параметр r_speeds и повышает FPS.
Ниже приведено изображение текстуры (может быть другое при использовании разных wad-файлов):
t5tex19 Данная текстура находится в текстурной библиотеке zhlt.wad , которая входит в состав улучшенных утилит ZHLT Custom Build. NULL-текстуру можно использовать ТОЛЬКО с улучшенными утилитами ZHLT, то есть с ZHLT Custom Build. С простыми ZHLT она не работает. Эту текстуру можно наносить на любые объекты (как браши, так и энтити-объекты). Также допускается совмещать эту текстуру с другими текстурами, позволяющими это. Кстати, с успехом вместо текстуры NULL можно использовать текстуру SKY. Действие абсолютно такое же.
Более подробная информация о NULL-текстуре есть в статье: "Улучшенная версия ZHLT Custom Build".
4.3

Как накладывать текстуры и декали?

Из этой статьи Вы узнаете как накладывать текстуры и декали, как работать с панелью текстур, как заменять текстуры, а также Вы узнаете об основных ошибках, возникающих при текстурировании карты.
Содержание статьи:
  1. Панель работы с текстурами
  2. Текстурный браузер
  3. Нанесение текстур
  4. Замена текстур
  5. Статистика использования текстур
  6. Основные ошибки с текстурами
  7. Наложение декалей

1. Панель работы с текстурами

Сейчас мы на практике покажем как накладываются текстуры на объекты. Давайте запустим редактор Hammer. Перед началом работы необходимо проверить подключены ли у нас текстуры. Это делается в меню "Tools/Options.../Textures". Для начала можно подключить следующие стандартные текстурные файлы: halflife.wad, decals.wad, liquids.wad, cstrike.wad (первые 3 находятся в папке Valve, а 4-ый — в cstrike).
Теперь создадим новую карту [Ctrl-N] и выберем инструмент для работы с текстурами (разноцветный кубик). В правой части экрана появится панель работы с текстурами "Face Properties" (см. рис. ниже). Основные функции этой панели описаны на рисунке ниже.
t5texpanel Scale (X/Y)
Масштаб текстуры по осям X и Y (нормальный 1х1).
Shift (X/Y)
Позволяет более точно подгонять текстуру и выравнивать ее по осям X и Y.
Justify
Различные варианты выравнивания текстуры по стороне объекта (по левому краю, по центру, по правому краю, Fit — подгонка текстуры до размера стороны).
Rotation
Угол поворота текстуры (используется, когда необходимо выровнить текстуру на развернутом объекте).
Align (World/Face)
Способ выравнивания текстуры (World — относительно осей координат; Face — относительно сторон объекта). Данные флажки частенько глючат. Иногда случается, что они отмечены одновременно, но на самом деле текстура не может быть выровнена одновременно по двум разным способам. В этом случае рекомендуется на всякий случай еще раз нажимать на нужный флажок.
Texture group
Здесь выбриются WAD-файлы с текстурами ("All Textures" — текстуры берутся из всех подключенных текстурных WAD-файлов).
Current texture
Здесь показывается название текущей текстуры; немного выше — ее размер в пикселях; ниже — картинка с изображением текстуры.
Hide mask
Нажатие на эту кнопку убирает красное выделение со стороны объекта. Благодаря этой кнопке можно лучше разглядеть текстуру.
Apply
Кнопка "Применить" — нанесение текстуры на выбранную сторону объекта (проще использовать мышку).
Browse
Запуск текстурного браузера, в котором можно просмотреть подключенные текстуры и выбрать нужную. Функции текстурного браузера рассмотрены ниже.
Replace...
Замена текстур. Например, когда надо заменить какую-то одну текстуру по всей карте на другую.
Mode
Здесь указывается функция левой кнопки мыши. Мы рекомендуем поставить: Lift + Select. При этом выбор текстуры будет на правую кнопку, а нанесение текстуры на левую кнопку.

2. Текстурный браузер

Рассмотрим функции текстурного браузера, в котором можно просмотреть подключенные текстуры и выбрать нужную. На панели работы с текстурами нажимаем кнопку Browse.
t5texbrowser В появившемся окне отображаются все текстуры подключенные к Хаммеру. Если на панели работы с текстурами в списке Texture group выбрать какой-то один WAD-файл, то в браузере будут видны текстуры только из него. Это облегчает поиск нужной текстуры при большом количестве подключенных файлов.
Чтобы выбрать какую-то текстуру нужно просто щелкнуть на ней мышкой и закрыть окно браузера. При этом на панели работы с текстурами отобразится уменьшенный вид текстуры, ее название и размеры в пикселях. Теперь любой созданный объект на карте будет со всех сторон окрашен в эту текстуру.
Size
Размер отображаемых иконок текстур. Есть четыре значения: 1:1 (в натуральную величину), 128х128, 64х64, 32х32.
Замечание: при просмотре в текстурном браузере сразу всех подключенных WAD-файлов, текстуры накладываются и закрывают друг друга. Это баг редактора. Исправляется это только установкой размера отличного от 1:1, например, 64х64.
Filter
Поиск текстур по имени. Например, если ввести слово Crate, то в браузере будут отображены все текстуры, в названиях которых встречается слово Crate. Данная функция фильтра полезна для просмотра текстур одного типа, например, при слове Crate будут выведены текстуры ящиков ("crate" — ящик), правда, это относится только к стандартному файлу halflife.wad, потому что в нем текстуры отсортированы по названиям.
Другой пример: если вписать восклицательный знак "!" (без кавычек), то в браузере отобразятся все текстуры жидкостей, т.к. текстуры жидкостей в начале названия имеют восклицательный знак. О различных типах текстур в Half-Life Вы можете прочитать в статье "Типы текстур в Half-Life и CS".
Only used textures
Отображать в окне браузера только используемые на карте текстуры.

3. Нанесение текстур

Сейчас мы выберем определенную текстуру и нанесем ее на объект, это будет ящик.
В строке Filter напишем bcrate09a (это текстура ящика), закрываем окно браузера. Теперь строим квадратный браш с размерами 128х128х128 юнитов. Как построить браш Вы можете прочитать в статье "Как создать браш, энтити, префаб?". Переключаемся в вид 3D texured, т.к. именно в нем раскрашивается карта. Должно получиться что-то вроде этого (см. рис. ниже).
Браш, окрашенный текстурой bcrate09a с размерами 128х128х128 юнитов
Перемещение в 3D-виде осуществляется после нажатия на Z, затем используются кнопки W, A, S, D и мышь. Чтобы выйти из режима перемещения, нужно еще раз нажать на Z.
Теперь проверьте выбран ли у Вас режим Lift + Select на панели текстур. Если нет, выберите его. В виде 3D textured нажмите левой кнопкой мыши на какой-нибудь стороне браша. Выбранная сторона будет выделена красным цветом, чтобы убрать это выделение, нажмите кнопку Hide mask на панели текстур.
Выбранная сторона браша окрашена красным цветом
В цетре стороны объекта присутствуют небольшие разноцветные черточки (см. рис. ниже). Они показывают, что эта сторона объекта выбрана, а также какой тип выравнивания применен. Понажимайте на флажки World и Face. Вы увидите, что выравнивание текстуры изменяется. World — выравнивание относительно общих осей координат, а Face — относительно сторон объекта (полезно для выравнивания текстур на наклонных поверхностях). Какой тип выравнивания использовать решать Вам, особой разницы нет.
Если Вам необходимо как бы симметрично отразить текстуру, например, когда ручка двери находится справа, а Вам надо слева, то попробуйте понажимать на флажки World/Face или введите в поле Scale (масштаб) значение со знаком "–" (например, –1).
Черточки означают, что сторона объекта выбрана
Выберите какую-нибудь сторону браша и нажмите на кнопку Fit на панели текстур. Эта кнопка позволяет подогнать текстуру к размеру стороны (очень полезная вещь :). Если текстура больше стороны объекта, то она подгонится, а если меньше, то растянется.
Заполнение текстурой всей стороны объекта при нажатии на кнопку Fit
Другие кнопки L, R, T, B, C выравнивают по различным сторонам: по левой, правой и т.д.. Вы можете выравнивать или растягивать текстуры кнопкой Fit сразу на нескольких поверхностях. Для этого необходимо выбирать поверхности с зажатой кнопкой Ctrl.
Теперь понажимайте на стрелочки вверх-вниз рядом со словом Shift. Текстура на объекте будет смещаться по осям X и Y (см. рис. ниже). Это можно использовать для более точного выравнивания текстур.
Перемещение текстуры по стороне объекта стрелочками в поле Shift
Для изменения масштаба текстуры используется поле Scale, в котором указывается масштаб текстуры по осям X и Y. Нормальный масштаб текстуры 1:1.
Нажмем еще раз кнопку Browse, выберем текстуру bcrate12. Закрасим правой кнопкой мыши одну из сторон ящика (выбор текстуры в режиме Lift + Select, напомним, производится левой кнопкой).
Одну из сторон браша закрасили другой текстурой
Чтобы закрасить текущей текстурой сразу все стороны объекта, нужно зажать Shift и затем кликнуть на любой стороне правой кнопкой мыши.
Все стороны браша можно закрасить текущей текстурой за один клик при зажатой кнопке Shift

4. Замена текстур

Нажмите на кнопку Replace... на панели текстур. Появится окно, в котором слева показывается текстура, которая будет заменена и справа — текстура, на которую будет заменена выбранная текстура. Используйте кнопку Browse, чтобы найти необходимую текстуру.
t5tex27 Отметив флажок Hidden objects too, Вы сможете заменить текстуры и на скрытых объектах.

5. Статистика использования текстур

Вы можете узнать статистику использования текстур на карте через меню Map/Show Information (см. рис. ниже).
t5tex30 В этом окне показывается количесвто различных текстур, общий размер памяти необходимой для текстур, а также список WAD-файлов, которые используются на карте (иногда в списке появляются лишние WAD-файлы).

6. Основные ошибки с текстурами

Иногда при загрузке карты, она выглядит абсолютно белой (без текстур). Это означает, что не были найдены нужные текстуры. В этом случае нужно проверить подключены ли все используемые картой WAD-файлы.
Если при этом проверить карту на ошибки, нажав [Alt-P], то ненайденные текстуры будут обнаружены как ошибка "Invalid texture (имя текстуры)". Часто такая ошибка возникает, когда Вы выбираете какой-то один WAD-файл из списка, создаете объект, затем меняете WAD-файл на другой и, забыв выбрать новую текстуру, продолжаете создавать объекты. Редактор пытается найти текстуру со старым именем в новом WAD-файле и, не найдя таковой, создает новые объекты белыми, без текстур.
t5tex32 Ошибка Invalid texture у объекта слева
Если Вы уверены, что все необходимые WAD-файлы подключены, то чтобы исправить эту ошибку выберите в списке Texture group пункт "All Textures ". Закройте и заново откройте карту. Все ошибки должны исчезть.
Если текстур действительно не хватает, т.е. нет нужных WAD-файлов, то можно вручную покрасить белые объекты какой-то другой текстурой или, нажав [Alt-P], выбрать пункт Fix или Fix all (of type).
Еще одной ошибкой связанной с текстурами является сообщение "Texture axis perpendicular to face". В основном эта ошибка возникает из-за неправильной манипуляции с вертексами (вершинами) объектов, т.е. когда получается браш неправильной формы, но иногда и из-за нанесения текстуры со слишком большим масштабом (scale > 10, а чаще > 100).

7. Наложение декалей

Декали — специальные текстуры, которые можно накладывать поверх обычных текстур. Примерами декалей являются следы от пуль на стенах, следы от взрывов гранат, следы крови — в общем декали это различного рода следы. Все декали находятся в файле decals.wad в директории Valve.
Для наложения декалей в Хаммере используется специальный инструмент (коричневый кубик с красной мишенью). Выберите его. На панели текстур в списке Texture group выберите decals.wad. Если данного WAD-файла у Вас в списке нет, значит его нужно подключить к редактору. Затем нажмите кнопку Browse.
В окне браузера Вы увидите различные черно-белые картинки — это декали. В игре они будут иметь определенный цвет (черный, красный, желтый или др.). Белая подложка при этом будет прозрачной. Выберите какую-нибудь декалину :) и кликните левой кнопкой мыши на стороне объекта (см. рис. ниже).
Декали накладываются левой кнопкой мыши
Декали представляют из себя не просто текстуру, а целый энтити-объект, имеющий некоторые свойства, в общем-то бесполезные. Выделите декаль левой кнопкой мыши (в 3D-виде это сделать бывает довольно трудно, лучше использовать для выделения какой-нибудь 2D-вид). После того, как Вы выделите декаль, нажмите [Alt-Enter]. Вы увидите окно со свойствами декали, то есть объекта infodecal (см. рис. ниже).
t5tex29 Name — имя декали (его давать не нужно), texture — название текстуры из файла decals.wad, при необходимости ее можно сменить (только не забудьте выбрать в списке decals.wad).
4.4

Как сделать свой WAD-файл?

В этой статье мы расскажем, как сделать свой собственный текстурный файл, чтобы использовать его на карте.
Очень часто мапперы создают свои WAD-файлы, в которые включают текстуры из каких-то других игр или свои собственные. Простой пример, когда может пригодиться своя текстура — это создание секретной комнаты (т.н. Easter Eggs) с информацией о карте, об авторе или о людях, помогавших делать карту.
Для создания своего WAD-файла понадобится программа Wally.
Итак, допустим мы хотим разместить на карте фотографию своего города (см. рис. ниже).
Открываем картинку в Photoshop
Картинка для текстуры должна удовлетворять следующим требованиям:
  • размеры (высота и ширина) картинки в пикселях должны быть кратны 16
  • картинка должна быть одного из следующих форматов: BMP (256 цветов), JPG, TGA, PCX, PNG
Оба требования являются обязательными, т.е. необходимо изменить размеры изображения, чтобы они без остатка делились на 16 (например: 256х256, 144х64, 128х64 и т.п.) и сохранить изображение в одном из перечисленных форматов. Помните, что перед сохранением картинки в формате BMP, ее предварительно нужно перевести в 256 цветов, иначе Wally не сможет ее открыть. Чтобы сделать картинку 256-цветной можно в частности в PhotoShop'e в меню "Image/Mode/Indexed Color..." выбрать "Local (Selective)" или "Local Adaptive" (в русской версии: "Изображение/Режим/Индексированный цвет...", "Локально-выборочный"). Затем сохраните изображение в формате BMP, 8-bit.
Если Вы сохраняете картинку в формате JPG, то имеет смысл ставить максимальное качество изображения, чтобы было как можно меньше потерь от сжатия.
Затем запускаем Wally. Создаем новый текстурный файл для Half-Life (см. рис. ниже).
t5wad2 Копируем картинку в буфер обмена (например, из ACDSee или IrfanView) и вставляем в только что созданный файл: Paste (можно нажать Ctrl-E ). Сохраняем WAD-файл под каким-нибудь названием.
После того, как WAD-файл создан, его необходимо подключить к редактору. Делается это в меню "Tools/Options...", вкладка "Textures". Теперь Вы можете использовать свои текстуры на карте.
Следует помнить, что все нестандартные текстуры (т.е. те, которые не идут вместе с Half-Life и CS) нужно распространять вместе с картой (в одном архиве), иначе другие люди не смогут запустить Вашу карту. Half-Life при запуске карты проверяет наличие всех необходимых текстурных WAD-файлов. Эту проблему можно решить по-другому: "включив" (записав) WAD-файл или несколько WAD-файлов в саму карту (непосредственно в BSP-файл). Это делается определенными параметрами при компиляции карты. Об этом Вы можете узнать из следующей статьи Учебника.
В принципе не следует включать в BSP-файл карты или в распространяемый WAD-файл текстуры из официальных CS-карт (например: de_dust, de_train), т.к. эти текстуры у всех есть. Однако существует некая вероятность, что эти WAD-файлы могуть быть изменены разработчиками или вовсе удалены и тогда Ваша карта не запустится. Так что все-таки, наверное, лучше включать текстуры от этих карт в свою карту — так надежнее.
4.5

Как включить WAD-файл в карту?

В этой статье мы рассмотрим включение своих текстур в карту с использованием официальных компиляторов ZHLT 2.5.3 и их улучшенной версии ZHLT Custom Build (есть некоторые различия).

1. Общий случай (для ZHLT и ZHLT Custom Build)

Итак, у Вас имеется свой WAD-файл с текстурами. Чтобы другие люди могли запустить Вашу карту, необходимо или распространять этот WAD-файл в архиве с картой, или же включить (записать) его непосредственно в саму карту (в BSP-файл).
В общем случае WAD-файлы включаются в карту параметром –wadinclude wad, где wad — имя включаемого WAD-файла без расширения. Этот параметр необходимо вписать к компилятору HLCSG. Допустим на нашей карте мы используем нестандартные текстуры из файла 123.wad и хотим включить его в BSP-файл. Тогда строка запуска компилятора HLCSG в BAT-файле (мы рекомендуем использовать для компиляции BAT-файл) будет выглядеть так:
hlcsg.exe –wadinclude 123 "%mapname%"
Если у нас имеется несколько WAD-файлов, например: 123.wad, 456.wad и 789.wad, то мы должны для каждого WAD-файла написать параметр -wadinclude, т.е. строка запуска HLCSG должна выглядеть так:
hlcsg.exe –wadinclude 123 –wadinclude 456 –wadinclude 789 "%mapname%"
Это все, что необходимо сделать для того, чтобы все нестандартные текстуры были включены в состав BSP-файла карты. Помните, что компиляторы и текстуры должны находится на одном логическом диске (например, на C:\ или на D:\). Такой способ включения WAD-файлов работает как с официальной версией ZHLT, так и с улучшенной версией ZHLT Custom Build.

2. Включение текстур в карту при компиляции утилитами ZHTL Custom Build

Улучшенная версия компиляторов позволяет достаточно гибко управлять WAD-файлами, используемыми при создании карты.
1. Автоматическое определение WAD-файлов (только ZHLT Custom Build)
Эта простая функция дает возможность подключать к редактору любое количество текстурных WAD-файлов, и при этом, только действительно используемые WAD-файлы будут включены в конечный BSP-файл карты.
Чтобы задействовать эту функцию, необходимо в строчку запуска компилятора HLCSG добавить параметр –wadautodetect.
2. Конфигурационный WAD-файл (только ZHLT Custom Build)
Конфигурационный WAD-файл с именем WAD.CFG должен находиться в одной директории с компиляторами. Это очень удобный способ включения нужных текстур в карту.
Используя конфигурационный WAD-файл, мы можем создавать для каждой конкретной карты список из текстурных файлов, которые на ней используются. Списку присваивается имя, дальше записываются пути к WAD-файлам и при запуске компиляции к программе HLCSG.EXE добавляется параметр –wadconfig name, где name — любое имя конфигурации.
Ниже мы приводим синтаксис этого файла:
  • name
    {
    c:\111.wad
    c:\222.wad

    include c:\333.wad
    }
где:
  • name — любое имя конфигурации. Для удобства можно использовать имя карты, для которой предназначена эта конфигурация. Например, если карта называется de_dust7250, то можно написать имя конфигурации de_dust7250, чтобы знать, для какой карты предназначен этот список.
    c:\111.wad — полный путь к первому WAD-файлу
    c:\222.wad — полный путь ко второму WAD-файлу
    ....
    include c:\333.wad — путь к WAD-файлу, который будет включен (слово include) в карту. Слово include нужно использовать только для нестандартных WAD-файлов. А, например, для стандартных WAD-файлов таких, как: halflife.wad, cstrike.wad и прочих слово include не нужно.
Вы можете использовать неограниченное количество записей в этом файле. Кстати, по количествам записей в последствии можно будет посчитать сколько же попыток создания карт было сделано (не секрет, что не каждая карта доделывается до конца :)
Напомним, что перед компиляцией необходимо добавить к компилятору HLCSG.EXE параметр: –wadconfig name. При этом будут использованы текстуры, записанные в конфигурации, но только текстуры с префиксом include будут включены в BSP-файл.

3. Путь к файлу wad.cfg (только ZHLT Custom Build)

Параметр –wadcfgfile путь позволяет вручную указать путь к файлу wad.cfg. По умолчанию компиляторы ищут этот файл в своей директории и в директории Half-Life. Если wad.cfg находится в какой-то другой директории, то необходимо добавить параметр –wadcfgfile путь в сторку запуска компилятора HLCSG.EXE.
4.6

Как сделать прозрачную текстуру?

В этой статье мы рассмотрим создание прозрачных текстур (или текстур с маской), которые применяются для создания лестниц, решеток, заборов, деревьев и пр.
Узнать прозрачную текстуру очень просто: она имеет ярко-синий фон (правда, иногда в программе Wally отображается другой фон, но последний цвет в таблице цветов правильный — ярко-синий); в названии такой текстуры в самом начале есть фигурная скобка "{".
Чтобы синие части текстуры в игре стали прозрачными, мы должны использовать для энтити-объекта режим: Render Mode: Solid и FX Amount: 255, это известно из статьи "Параметры отображения энтити-объектов".
На рисунке ниже показана текстура, синие места которой в игре будут прозрачными.
t5tex33 Основные трудности при создании текстур с маской возникают из-за оттенков синего цвета, которые необходимо закрасить чистым синим цветом (RGB: 0—0—255). Рекомендуем закрашивать в PhotoShop не кистью, а карандашом, т.к. он не дает оттенков цвета. Посмотрите на рисунок ниже:
t5tex34 Слева показан пример с большим количеством оттенков синего. В игре такая текстура, скорее всего, не будет прозрачной. Справа показан правильный вариант текстуры, на которой все оттенки синего закрашены чистым синим цветом (RGB: 0—0—255).

Техника создания прозрачной текстуры

Дальше мы приводим несколько хитрый метод создания прозрачной текстуры :) Дело в том, что все текстуры в Half-Life имеют максимум 256 цветов (прозрачные текстуры не исключение). Мы можем в PhotoShop'e посмотреть таблицу цветов, где видно какие цвета используются в картинке. В прозрачных текстурах последний цвет (нижний правый) определяет прозрачный фон и он должен быть чистым синим (RGB: 0—0—255).
Предположим мы хотим создать прозрачную текстуру из такой картинки:
Текстура с маской - Вертолет
Для начала необходимо карандашом прокрасить все "прозрачные" места синим цветом (RGB: 0—0—255). Затем нужно перевести картинку в индексированный цвет (т.е. 256 цветов) и посмотреть под каким номером идет этот синий цвет.
t5tex361 Выбираем "Local (Selective)".
t5tex362 Далее заходим в "Image\Mode\Color Table..." и смотрим под каким цветом идет у нас синий. Нужно, чтобы он шел последним — нижним правым, если это не так — необходимо поменять палитру.
t5tex363 Как видим, нам немного не повезло, и синий цвет идет в 3-м квадрате. Такая картинка прозрачной не будет, даже если мы выставим правильные параметры отображения для энтити-объекта.
Синий цвет идет 3-м, а должен идти последним...
Необходимо поправить палитру. Заменим 3-й цвет (сейчас он синий) на любой другой. А последний квадрат (правый нижний) сделаем синим (RGB: 0—0—255).
Заменяем 3-й цвет на любой, кроме синего, а последний делаем синим
В итоге наша палитра будет выглядеть так:
Так выглядит правильная палитра для прозрачной текстуры — синий цвет последний
В таком виде мы и сохраняем ПАЛИТРУ, но не картинку (кнопка "Save...").
ВНИМАНИЕ! Теперь закрываем картинку, не сохраняя ее! На данном этапе нам нужно было лишь сохранить правильную палитру. Ведь когда мы поменяли синий цвет на другой, то и фон нашей картинки изменился на него.
Теперь второй раз открываем картинку и переводим ее в индексированный (256 цветов) цвет. НО НА ЭТОТ РАЗ выбираем палитру "Custom..." и загружаем нашу сохраненную палитру.
Загружаем сохраненную ранее палитру через пункт "Custom..."
После всех этих операций синий цвет будет последним, что обеспечит его прозрачность в игре. Сохраняем картинку как BMP, 8-bit и вставляем в новый документ в программе Wally, чтобы превратить в текстуру.
Помните, что текстурам с маской следует давать названия начинающиеся с фигурной скобки "{". Примеры названий: {ladder1, {fence05, {grate37. Ну, и еще раз повторимся, что частично прозрачным может быть только энтити-объект, но никак не обычный браш. Для энтити-объекта необходимо выставить параметры: Render Mode: Solid, FX Amount: 255.
4.7

Как извлечь текстуры из карты?

В этой небольшой статье мы расскажем как можно извлечь текстуры из карты, если они были включены в нее при компиляции.
Довольно часто при компиляции мапперы включают текстуры в состав BSP-файла карты. Это делается при помощи параметра –wadinclude или –wadconfig (если используется конфигурационный WAD-файл и утилиты ZHLT Custom Build). При этом уменьшается общее количество файлов, необходимых для запуска карты. Меньше файлов — проще установить карту. Особенно это касается случаев, когда текстурных файлов несколько. Все эти файлы приходится копировать в папку "Cstrike", а когда нужно будет удалить карту, то вряд ли Вы вспомните, какие текстуры больше не используется ни одной другой картой.
Также включение текстур в карту немного помогает защитить Ваши оригинальные текстуры от нелегального использования. Но действительно лишь "немного"... Все в этом мире воруют друг у друга :) Поэтому нет ничего криминального, если Вы воспользуетесь текстурами уже украденными до Вас (шутка).
Кстати, опознать карту с включенными в нее текстурами довольно просто. Если в архиве с картой нет WAD-файлов, это означает одно из двух: 1) или карта использует только стандартные текстуры (тогда с нее взять нечего); 2) или же текстуры включены в карту.

Извлекаем текстуры

Для извлечения текстур понадобится небольшая консольная программа Textract (30 Кб, www.thewall.de).
Кладем программу в одну папку с картой, запускаем командную строку (Windows-R или "Пуск/Выпонить..."), находим кнопкой "Обзор" нашу программу.
Дальше пишем, например:
TEXTRACT.EXE  de_dust2.BSP  de_dust2.WAD
На выходе получаем текстурный файл со всеми включенными в карту текстурами. Кстати, возможна ситуация, когда некоторые текстуры запишутся некорректно. Сделать здесь ничего невозможно.
4.8

Светящиеся текстуры (создание RAD-файла)

Любая текстура в Half-Life может излучать свет. Но для этого она должна быть прописана в RAD-файле (файл текстового типа). Данный файл должен быть "подключен" при компиляции. О создании такого файла и пойдет речь в данной статье.

Зачем нужны светящиеся текстуры?

Как нам кажется, следующая картинка наглядно демонстрирует "зачем":
Разница между использованием светящихся текстур (слева) и объекта light
Как видно из рисунка, светящаяся текстура делает лампу как бы действительно включенной. А вот если использовать обычный источник света — объект light, то стороны лампы получаются темными.
Есть, кстати, и еще один способ заставить объект светиться. Только при этом он абсолютно не будет излучать свет, а просто будет ярким. Существенным преимуществом данного метода перед светящимися текстурами является гораздо меньшее время компиляции.
Метод: превратите лампу в энтити-объект (func_wall, func_illusionary, возможно, какой-то другой объект) и выставьте параметр Minimum light level (иногда встречается _minlight) в какое-нибудь значение отличное от 0, например, 0.5. Теперь лампа будет обладать минимальной яркостью. Около лампы нужно будет создать источник света light, т.к. сама она свет не излучает.
Замечание: чтобы использовать выше описанный совет, у Вас должна быть новая версия FGD-файла (0.7.7 и выше) и компиляторы ZHLT 2.5.3 и выше.
Возвращаясь к светящимся текстурам, скажем что их можно использовать вместо источников света (light и light_spot), только делать это надо аккуратно и особо не увлекаться, ибо чревато большим (и очень большим) временем компиляции.
Свет, испускаемый такими текстурами, более реалистичен, чем при использовании вышеупомянутых объектов. Недостатком светящихся текстур является ограничение на их использование: на одном объекте не может быть больше 8 различных светящихся текстур, также ОЧЕНЬ нежелательно использовать много таких текстур на карте, т.к. для расчета освещения потребуется больше памяти и соответственно увеличится время компиляции. Кстати, при компиляции карты со светящимися текстурами неправильно отображается количество источников света. Их может быть написано, например, 1520, тогда как реально их создано не более 20 или 25. Виноваты светящиеся текстуры.
RAD-файл представляет из себя обычный текстовый файл, имеющий расширение *.rad. Давайте посмотрим на синтаксис этого файла.
  • +0~GENERIC65 255 255 255 100
    +0~GENERIC86B 60 220 170 7500
    EMERGLIGHT 255 200 100 50000
Здесь все просто. Каждая светящаяся текстура описывается в отдельной строке. Сначала идет точное название текстуры, например, EMERGLIGHT, затем в трех последующих числах указывается цвет испускаемого света в формате RGB. Его Вы можете подобрать в любом графическом редакторе, хотя бы в обычном Paint Brush. После 3-х чисел цвета ставится еще одно число, обозначающее яркость света. Яркость определяется не так, как для объектов light. Как видите, она может быть и 100 и 50000 и даже больше.
При определении яркости руководствоваться стоит размерами текстуры. Например, текстура с размерами 16х16 и текстура с размерами 256х160 при одинаковой яркости будут излучать разное количество света. Если необходимо, чтобы небольшая текстура (используемая, например, как лампочка) освещала всю комнату, то нужно выставлять довольно большие значения яркости (десятки тысяч). Для создания простой светящейся рекламы подойдет небольшое значение (100-200).

Как подключить rad-файл при компиляции?

По умолчанию компилятор HLRAD использует информацию о светящихся текстурах из файлов lights.rad и имя_карты.rad. Таким образом, чтобы текстура в игре излучала свет, необходимо создать rad-файл с именем карты (например, карта называется mybest.map, тогда rad-файл необходимо назвать mybest.rad), записать в него названия текстур, подобрать для них цвет света и его яркость и поместить rad-файл в папку к компиляторам. Все дополнительно ничего делать не требуется, т.е. не надо ничего дописывать к компиляторам, они сами найдут этот файл по имени.
Если имя у rad-файла другое, то здесь уже придется указать компилятору HLRAD (а именно он использует rad-файл) название rad-файла. Делается это при помощи параметра -lights. Пишем: -lights имя_файла.rad. Но в любом случае rad-файл должен находится в одной директории с компиляторами.
4.9

Звучащие текстуры

В данной статье речь пойдет о том, как заставить текстуры в Counter-Strike звучать, т.е. когда игрок ходит по разным поверхностям, чтобы звуки шагов были разными, то же самое касается стрельбы: звуки попадания в дерево и металл должны различаться. Вот об этом и пойдет речь.
Статья (с некоторыми изменениями) публикуется с разрешения автора — PYaEe, http://www.cstrike.wallst.ru/. Благодарим PYaEe за прекрасную статью!
Прежде всего необходимо сказать — для того, чтобы текстура зазвучала, её имя должно быть прописано в файле materials.txt, который находится в папке "cstrike\sound". Проблема в том, что мы не можем изменять этот файл и распространять его вместе с картой, потому что на другой карте, созданной Васей Пупкиным — свои звучащие текстуры, и он тоже "обновит" materials.txt, а это означает, что Ваши текстуры звучать уже не будут.
Выход есть и он довольно простой. Как мы знаем, движок Half-Life, выбирая материал текстуры, учитывает только первые 12 знаков её названия. А максимальная длина названия текстуры — 15 знаков. Значит, у нас есть 3 знака в запасе. Этого хватит на любую карту — ведь используя, например, эти три знака для чисел, примерно так:
  • zvukitexturi001
    zvukitexturi002
    zvukitexturi003
... мы можем получить 999 разных текстур одного типа звучания. А ведь можно использовать ещё и буквы... Так что, этих трех символов нам хватит.
То есть, нам нужно найти в стандартном materials.txt названия текстур, которые составляют 12 или более символов. Оставляем 12 первых, а оставшиеся 3 находятся в нашем распоряжении. Мы облегчим Вам задачу, и скажем как именно нужно называть свои текстуры:
(Звёздочка означает Ваш символ)
  • Дерево: cstrike_CJ2B***
    Металл: cstrike_CE2X***
    Плитка: cstrike_FH4W***
    Снег: только три варианта: snow; A_snow; znow1 (нет названия стандартной текстуры снега из 12 символов)
    Стекло: GLASS_BRIGHT***
    Электроника: LAB1_RADSCRN***
    Грязь(песок, гравий): cstrike_FT2D***
    Вентиляционная труба: Нет стандартных названий в 12 символов — так что используйте либо стандартную, либо называйте свою точно так же, как стандартную.
    Жидкость или жидкая грязь: то же самое.
При этом, Вам совершенно не нужно производить никаких манипуляций с materials.txt — ни редактировать, ни распространять.
Для массовых переименований текстур Вам очень пригодится программа просмотра изображений ACDSee. Если Вы уже сделали много текстур, переведите их в BMP (программой Wally), сложите в какую-нибудь папку, потом запустите ACDSee, выберите, например, только деревянные текстуры, нажмите "Rename series" ("Переименовать несколько"), в графе "Template" напишите cstrike_CJ2B###, а "Start at" поставьте 000. Запишите исходные и будущие названия текстур и жмите кнопку "OK".
Дальше запускаем Hammer/Worldcraft и активно юзаем "Replace textures"!
Важное замечание: текстуры будут звучать только, если они наложены на БРАШИ. Текстуры, наложенные на энтити-объекты (func_wall и пр.) звучать НЕ БУДУТ! Так что помните об этом, создавая, например, ящик с текстурой дерева. Если Вы превратите его в func_wall, то деревянного звука при попадании по ящику не будет...