Из этой статьи Вы узнаете, что такое текстуры и декали, как называются текстуры в 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, впрочем они не так уж плохи.