Из данной статьи Вы узнаете на какие типы делятся текстуры в Half-Life и CS, как они называются в зависимости от типа, также Вы узнаете о совместимости текстур различных типов. В Half-Life существует несколько различных типов текстур: простые текстуры, текстуры с маской, текстуры жидкостей и др. Тип текстуры определяется по ее названию, а точнее по нескольким первым символам в названии текстуры. Например, все текстуры жидкостей начинаются с восклицательного знака «!», а текстуры для прозрачных заборов и лестниц — с фигурной скобки «{» (подробнее об этом ниже).
Некоторые текстуры не могут быть нанесены на один объект вместе с другими текстурами, т.к. это вызывает ошибку, поэтому крайне важно знать о совместимости различных типов текстур. Существуют также спецтекстуры, которые применяются для создания неба, триггеров, ограничительных плоскостей и пр.
ЧАСТЬ 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, то стороны лампы получаются темными.
Есть, кстати, и еще один способ заставить объект светиться. Только при этом он абсолютно не будет излучать свет, а просто будет ярким. Существенным преимуществом данного метода перед светящимися текстурами является гораздо меньшее время компиляции.
Метод: превратите лампу в энтити-объект (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. Первую текстуру (на рисунке слева) можно использовать для создания иллюзии движущегося потока воды, а вторую для создания конвейера.
Следует понимать, что сама по себе скроллящаяся текстура не толкает игрока, а просто создает иллюзию движения (ленты конвейера или потока воды). Чтобы конвейер действительно двигал игрока необходимо создать соответствующий энтити-объект.
Возможные трудности
Необходимо опытным путем подбирать правильный угол нанесения текстуры, потому как она может двигаться, например, против движения конвейера или под углом 90°. Нанесите текстуру на конвейер, откомпилируйте карту и проверьте совпадение движения текстуры с направлением толкания игрока.
ЧАСТЬ 2.
Специальные текстуры
Всего существует несколько специальных текстур. Вот их названия:
AAAtrigger
SKY
CLIP
ORIGIN
HINT/SKIP
NULL
Вы будете часто пользоваться этими текстурами (большинством из них). Рекомендуем запомнить их названия и внимательно прочитать о случаях, когда они применяются. Также запомните, что текстурами CLIP и ORIGIN следует полностью покрывать объект. Они не допускают наличия на объекте других текстур вместе с ними. Все эти текстуры в игре невидимы и используются в строго определенных случаях. Об этом читайте ниже.
Также следует заметить, что внешний вид текстур, приведенных ниже, может отличаться от Ваших.
Главное, чтобы текстура имела именно такое (служебное, специальное) название. Т.е. если текстура названа AAAtrigger, но она не такая, как представлена здесь, то можете смело ее использовать, ошибки не будет. Это же касается и остальных специальных (служебных) текстур. Вы даже можете самостоятельно изготовить картинки для служебных текстур и затем использовать их при создании карты, необходимо лишь дать им точно такие же названия.
9. AAAtrigger — текстура для триггеров
Используется для создания триггеров и других брашевых энтити-объектов невидимых в игре.
Ниже приведено изображение текстуры (может быть другое при использовании нестандартного wad-файла):
Данная текстура находится в главной текстурной библиотеке игры 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-брашей проецируется свет.
Изображение текстуры:
Данная текстура находится в главной текстурной библиотеке игры 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 — ограничение передвижения игроков
Используется для создания невидимых преград (стен, других объектов), через которые игрок не может пройти. Однако пули и гранаты свободно пролетают — это очень важное свойство.
Изображение текстуры:
Данная текстура находится в главной текстурной библиотеке игры Half-Life — halflife.wad в папке Valve. Используется для создания невидимых в игре стен, полов и т.п., через которые игрок не может пройти (упасть). В маппинге распространено выражение «CLIP-браш». CLIP-браш — это обычный браш, но окрашенный со всех сторон спецтекстурой CLIP.
В Учебнике есть подробная статья о применении CLIP-брашей, она отнесена к Главе VII.
Возможные проблемы
Ограничивающий передвижение игроков браш должен быть окрашен текстурой CLIP абсолютно со всех сторон, иначе возникает ошибка при компиляции карты. При использовании невидимых ограничивающих CLIP-брашей не по месту, можно вызывать раздражение у игроков — это когда очень хочется куда-то пройти, но невидимая стенка не дает этого сделать Поэтому используйте CLIP-браши с умом.
12. ORIGIN — определяет размещение оси вращаюшихся объектов
Используется для определения оси вращающихся объектов (func_door_rotating, func_vehicle и мн. др.).
Изображение текстуры:
Данная текстура находится в главной текстурной библиотеке игры 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-файлов):
Данные текстуры можно сделать самому или найти в текстурных библиотеках zhlt.wad и zeditor.wad, которые входят в состав утилит ZHLT. Правильное использование HINT/SKIP-брашей помогает снизить «тормоза» на карте (т.е. увеличивает fps).
В игре HINT-браши абсолютно невидимы и через них можно свободно проходить. Не рекомендуется окрашивать простые объекты этими текстурами!
Возможные проблемы
Трудно понять принцип действия HINT/SKIP-брашей, еще труднее правильно их расположить на карте. Неграмотное применение может вызвать обратный эффект — повышение тормозов на карте. Также следует помнить, что браш, окрашенный этими текстурами, не может быть окрашен какой-либо другой текстурой.
14. NULL — оптимизация карты, повышение fps
Наносится на стороны объектов, которые игрок не может видеть в игре, тем самым уменьшает параметр r_speeds и повышает FPS.
Ниже приведено изображение текстуры (может быть другое при использовании разных wad-файлов):
Данная текстура находится в текстурной библиотеке zhlt.wad, которая входит в состав улучшенных утилит ZHLT Custom Build. NULL-текстуру можно использовать ТОЛЬКО с улучшенными утилитами ZHLT, то есть с ZHLT Custom Build. С простыми ZHLT она не работает. Эту текстуру можно наносить на любые объекты (как браши, так и энтити-объекты). Также допускается совмещать эту текстуру с другими текстурами, позволяющими это. Кстати, с успехом вместо текстуры NULL можно использовать текстуру SKY. Действие абсолютно такое же.