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, хотя идея интересная