С приходом интерфейса Steam в Half-life появилась одна очень хорошая технология, до этого уже зарекомендовавшая себя в играх серии Unreal. Это detailtextures, или текстуры детализации поверхностей. Движек Half-life изначально был расчитан на текстуры низкого разрешения в основном для игры в режиме 640х480. Очень быстро технологии развились, а игра сохранила своих приверженцев и даже продолжает приобретать новых. Лично я играю в Half-life в разрешении 1024х768. При таком разрешении текстуры кажутся очень размытыми и бесформенными, что сильно сказывается на восприятии. Как вариант, при разработке карт можно использовать текстуры, масштабируя их с коэффициентом 0.5 или даже 0.25. Безусловно, текстурирование такой карты приблизится к качеству современных игр (хотя в них есть еще и бампмэппинг), но такой подход увеличит количество полигонов в кадре и, к тому же, сидеть и масштабировать каждую поверхность довольно муторное занятие. Еще это повлечет за собой некоторые проблемы с компиляцией, но они не на столько значимы. Технология detailtextures заключается в том, что поверх основной текстуры в игре накладывается "маска" в оттенках серого, создающая эффект высокой детализации поверхности. Как правило, коэфициенты наложения лежат в области 16-100 точек маски на один пиксель оригинальной текстуры. При наложении маски, серый цвет в середине диапазона (RGB 127 127 127) воспринимается движком как прозрачный, оттенки темнее будут затенять текстуру, а оттенки светлее наооборот осветлять. Эта игра света и тени создаст впечатление неровности поверхности, подобно bumpmapping'у, только при bumpmapping'е освещенность поверхности пересчитывается в зависимости от источника света, а тут как бы запекается в одном положении. Комбинированный скриншот из мода "Колючий-62", показывающий разницу между включенным и выключенным эфектом. Для реализации этого эффекта нужен набор текстур-масок. Как я уже сказал, это должны быть картинки в градациях серого. Формат хранения - 24-битный TGA. В принципе, можно использовать и цветную картинку, но об этом позже. Маски распалагаются в паке мода "вашмод\gfx". Удобно создать еще одну папку внутри, к примеру "dt" чтобы не валить файлы в кучу. В каталоге "maps" создаем текстовый файл с названием "имякарты_detail.txt", он автоматически будет подхвачен движком. Например, для показанного выше примера (карта e1m2) этот файл будет называться "e1m2_detail.txt". Структуру этого файла легче всего понять на примере: {tech_cables05 dt/dt_smooth1 10 10 ~lt01 dt/dt_smooth1 1 4 ~lt02_1 dt/dt_smooth1 1 4 ~lt02 dt/dt_smooth1 1 1 aid01 dt/dt_wood3 6 8 aid01_1 dt/dt_wood3 3 8 aid01_2 dt/dt_wood3 3 8 aid01_3 dt/dt_wood3 6 3 barrel01 dt/dt_metal1 10 10 Мы видим, что сначала идет название текстуры (префиксы тоже нельзя забывать!), затем адрес маски (у меня они лежат так: "d:\Half-life\k62\gfx\dt\"), поиск начинается с папки gfx, поэтому она не указана. Дальше следуют коэффициенты наложения по осям X и Y соответственно. Они показывают сколько раз маска должна уложится в текстуру. Совет: Для облегчения разработки мода имеет смысл создать такой файл для всех текстур, которые содержаться в моде и потом копировать его, вместо того, чтоб выписывать только используемые для каждой карты. Для включения эффекта в игре используйте переменную "r_detailtextures" и значение "1" Теперь можно поговорить и о нестандартном использовании detailtextures. Метод, который я опишу - довольно муторный, однако дает интересный результат. На самом деле, чернобелая гамма маски - это важное требование, но не обязательное. Что нам это дает? Во-первых, можно сделать высококачественную надпись на стене или пятна крови. Для этого мы в wad-файле делаем копию нашей текстуры под другим именем, рисуем пятно, используя цвет (127 127 127) как прозрачный и прописываем в файл соответсвие с коэффициентами 1 1. Это не самое интересное Самое интересное заключается в том, что мы можем построить уровень с высококачественными текстурами! Для этого вы просто подбираете нужные текстуры и в формате TGA складываете где-то в районе папки "gfx". Теперь делаете wad-файл из этих текстур, уменьшеных, скажем, раз в 16 - чтобы в редакторе использовать коэффициенты масштабирования 1-4 (это экономит полигоны на больших пространствах). После того, как карта готова, вы создаете wad-файл с серыми (127 127 127) текстурами тех же размеров и названий, что и в предыдущем wad'е. Учтите, что для текстур с прозрачностью (начинаются на "{" и имеют чистый синий цвет последним в палитре) прозрачные области нужно сохранить. Наконец, заменяем цветной wad серым и прописываем файл *_ddetail.txt. Теперь карта выполнена в полноцветных высококачественных текстурах! На этом все, успехов в картостроении.
|