Количество энтити-объектов может повергнуть в шок начинающего маппера. Как тут разобраться? Их ведь так много! Но ничего невероятно сложного здесь нет! На картах используется десяток, может, другой энтити-объектов. Остальные — можно и не знать. Первые 3 статьи, представленные здесь, помогут Вам разобраться, что такое энтити-объекты, какие они бывают и когда применяются.
§ 1. Что такое энтити?
В Counter-Strike все карты состоят лишь из двух типов объектов:
* Брашей
* Энтитей
1. Браши
Начнем с брашей (brush). Браши можно сравнить со строительными плитами. Посмотрите на картинку ниже, на ней изображено 5 брашей, составляющих некую открытую комнату.
Комната построена из 5 брашей
Из подобных брашей и состоят карты. Игроки бегают по земле, состоящей из брашей и между стенами — тоже брашами. Естественно, игрок видит раскрашенные (затекстурированные) браши, а не такие одноцветные, как на нашей картинке.
2. Энтити
Энтити (entity) — объекты, обладающие свойствами. Примеры энтитей: открывающаяся дверь, кнопка, источник света (лампочка), звук, машина — у всех этих объектов есть свойства (скорость, громкость и пр.).
При помощи энтити-объектов мы можем сделать карту более интересной — добавить в нее звуки, сделать воду и прочие спецэффекты.
Но энтити это не только спецэффекты, но и объекты, управляющие событиями на карте. Например, чтобы сделать карту с бомбой нужно вставить на нее энтити-объект одного типа, а если с заложниками — другого.
К слову сказать, ни одна карта в Counter-Strike не обходится без использования хотя бы нескольких энтити-объектов, поэтому их изучение не менее важная часть, чем усвоение техники создания карт, которая описывается в Учебнике.
Классы энтити-объектов
Всего для создания CS-карт может быть использовано 118 энтити-объектов, которые разбиты на 7 классов. Класс, к которому принадлежит тот или иной энтити-объект, указывается в названии, например:
func_door — объект класса func
info_target — объект класса info
game_text — объект класса game
Список классов энтити-объектов:
env
func
game
info
trigger
xen
все остальные
Для создания самой простой карты необходимо знать от 3 до 5 энтити-объектов. Для более сложной карты потребуется знание 15-20 объектов. Ну, а обычно число различных объектов на карте не превышает 25-30.
Где хранятся описания энтитей
Все энтити описаны в файле с расширением *.fgd (game definition file). Существуют 2 таких файла: стандартный и расширенный (экспертный), в котором добавлено несколько новых видов энтитей и изменены некоторые свойства уже существующих. Его мы и рекомендуем использовать
Проверить номер версии своего FGD-файла можно, открыв его в Блокноте, — номер написан во второй строке сверху.
Энтити точечные, энтити брашевые
Энтити-объекты интересны тем, что могут выглядеть, как обычные браши, также они могут быть прозрачными, а могут вообще не иметь размеров! Все зависит от типа энтити-объекта. Давайте разберемся какие же существуют типы энтити-объектов.
Энтити-объекты делятся на два типа:
* Брашевые (brush-based или материальные энтити)
* Точечные (point-based или нематериальные)
На картинке ниже схематически представлена структура карты:
Структурные составляющие карты
Брашевые (brush-based) энтити
Брашевые (brush-based) энтити — это энтити, в основе которых лежит браш. Обычно такие энтити мы можем увидеть в игре, но бывают и такие, которые видны только в редакторе карт, но не в игре.
Примеры: машина, дверь, стекло, кнопка (это видимые энтити); триггеры (невидимые энтити)
Пример brush-based энтити
Грубо говоря, брашевые энтити — это браши со свойствами.
Точечные (point-based) энтити
Точечные (point-based) энтити — это энтити невидимые в игре, их размер не имеет значения, главное у таких объектов — свойства.
Примеры: звуки, источники света, места рождения игроков и др.
В редакторе точечные энтити изображаются в виде прямоугольников (квадратов) фиолетового цвета, а в трехмерном виде — иконками. На рисунке ниже приведены примеры иконок из 3D-вида редактора: место рождения контра, источник звука, источник света (слева направо).
Примеры точечных энтитей
В игре Вы не увидите никаких иконок, но объекты существуют и выполняют свои функции.
Редактирование свойств энтитей
Свойства энтити-объектов вызываются сочетанием клавиш [Alt-Enter] или в 2d-виде в меню правой кнопки мыши, пункт Properties. Прежде чем вызывать свойства энтити-объекта, его необходимо выделить (что вполне логично :).
Свойства всех энтити-объектов выглядят примерно так:
Редактирование свойств объекта
Пояснения к рисунку:
Class
Название энтити-объекта. В начале названия идет класс, а через знак подчеркивания "_" название самого объекта. Превратить один объект в другой проще простого. Просто выбирете в списке другой объект.
Attributes
Свойства объекта. У каждого объекта есть как свои собственные свойства, так и общие, которые есть у большинства объектов. К общим свойствам можно отнести: Name и Target.
Name
Имя объекта. Имя нужно давать объекту в том случае, если он будет активироваться (включаться/выключаться) другим объектом.
Target
В это поле записывается имя того объекта, который должен быть активирован. Например, у нас есть лампочка с именем LAMP и кнопка. Чтобы лампочка включалась от нажатия на кнопку, необходимо прописать имя LAMP в параметр "Target" кнопки.
Помните, что не обязательно выставлять все свойства, имеющиеся у объекта, достаточно указать только необходимые. Часто бывает так, что объект имеет, скажем, 10-15 свойств, из которых действительно полезны и часто применяемы лишь 2-3.
Angle
Для некоторых объектов (источники света, некоторые типы дверей, кнопки и др.) важным параметром является "Angle" (см. рис. выше), устанавливающий направление действия объекта (сторону открытия дверей, направление световых лучей и т.п.) Вы можете указывать направление градусами или в черном кружке, задавая необходимый угол черточкой.
Кнопка Smart Edit
"Smart Edit" — это кнопка, переключающая режимы отображения свойств энтити-объектов. По умолчанию "Smart Edit" нажата, и Вы видите свойства любого объекта, как показано на рисунке выше. Для некоторых же объектов таких свойств нет. В этом случае необходимо отжать "Smart Edit" и производить изменение свойств в несколько менее удобном виде (но ничего не поделаешь, хорошо хоть объектов таких всего пара штук). Но на первых порах с такими объектами Вы встречаться не будете. Просто имейте это в виду.
Закладка Flags
Многие энтити наряду со свойствами имеют флаги (дополнительные параметры). Флаги выставляются в закладке "Flags". Например, для звука существует флаг "Play everywhere" (чтобы звук играл по всей карте). Флаги, так же как и свойства, могут быть различными у разных объектов. И опять же, не стоит выставлять все флаги — только необходимые.
Окно, в котором устанавливаются флаги
На последок хочется сказать, что не все объекты работают правильно и не глючат. Если у Вас что-то не получается, просто попробуйте реализовать свою идею при помощи других объектов. Проявите изобретательность, свойственную русскому человеку! :)
§ 2. 35 основных энтити-объектов
В этой статье мы рассмотрим свойства 35 основных энтити-объектов, используемых для постройки CS-карт. Мы просто выбрали самые часто используемые объекты из более чем 115, описанных в остальных документах справочника по энтити-объектам.
Несмотря на огромное количество энтити-объектов, реально используется только четверть из них! Остальные применяются очень редко и уж точно не понадобятся начинающему мапперу.
Для начала перечислим те объекты, без которых необходится практически ни одна карта:
Самые необходимые объекты
info_player_deathmatch Определяет место появления 1 террориста
info_player_start Определяет место появления 1 контра
light "Лампочка" (небольшой источник света для освещения комнат)
light_environment "Солнце" (основной источник света на картах с небом)
func_buyzone Определяет место для покупки оружия (обычно на базах команд)
func_bomb_target Определяет место для закладки бомбы
hostage_entity Определяет место появления 1 заложника
func_hostage_rescue Определяет место для спасения заложников
Следующие объекты используются также довольно часто и представляют собой различные объекты, используемые игроком (лестницы, двери, кнопки, разбиваемые объекты, машины, камеры, вода и пр.).
Часто используемые объекты
trigger_auto Активирует какой-либо объект после загрузки карты (без участия игрока)
trigger_multiple Позволяет многократно активировать какой-либо объект
ambient_generic Вставляет на карту звук
func_breakable Разбиваемый объект
func_button Кнопка
func_door Дверь, сдвигающаяся в сторону
func_door_rotating Вращающаяся дверь
func_illusionary Видимый, но нематериальный объект (через него можно проходить)
func_ladder Вертикальная лестница (например, как на cs_assault)
func_pushable Передвигаемый объект
func_tracktrain Управляемый поезд
func_traincontrols Определяет область, из которой игрок может управлять поездом
path_track Точка траектории движения управляемого поезда func_tracktrain
func_vehicle Машина
func_vehiclecontrols Определяет область, из которой игрок может управлять машиной
func_wall Стенка, ящик, нечто, обладающее свойствами
func_water Вода
info_target Используется, как мишень для некоторых объектов (например, trigger_camera)
infodecal Объект является декалью (следы от взрывов гранат, дырки от пуль и пр.)
trigger_camera Камера (например, как на cs_assault)
trigger_hurt Наносит игроку повреждения
cycler Вставляет на карту модель
cycler_sprite Вставляет на карту спрайт
multi_manager Может активировать до 16 объектов через заданные промежутки времени
env_glow Свечение (дымка) вокруг лампочек
env_sprite Вставляет на карту спрайт
env_render Изменяет прозрачность объектов и другие параметры отображения
1. Самые необходимые объекты (свойства)
1. Info_player_deathmatch
info_player_deathmatch Объект определяет собой место появления 1 террориста. Следите за тем, чтобы данный объект находился на некотором расстоянии над поверхностью земли, а также не был "вмонтирован" в стены и не касался других таких же объектов, иначе, родившись, игрок не сможет двигаться или вовсе умрет.
Параметром "Angle" Вы можете задать направление взгляда игрока, после его появления. Это бывает полезно сделать, если игрок смотрит в стену и нужно тратить время в начале раунда на разворот. Нужный угол легко определить в редакторе на виде сверху.
2. Info_player_start
info_player_start Объект определяет собой место появления контр-террориста. Следите за тем, чтобы данный объект находился на некотором расстоянии над поверхностью земли, а также не был "вмонтирован" в стены и не касался других таких же объектов, иначе, родившись, игрок не сможет двигаться или вовсе умрет.
Параметром "Angle" Вы можете задать направление взгляда игрока, после его появления. Это бывает полезно сделать, если игрок смотрит в стену и нужно тратить время в начале раунда на разворот. Нужный угол легко определить в редакторе на виде сверху.
3. Light
light Маленький источник света (что-то вроде лампочки). Объект используется для освещения помещений. В свойствах Вы можете задать цвет и яркость света.
свойства:
Target
Обычно параметр не используется. Однако сюда можно вписать имя объекта-мишени (info_target). Тогда свет от лампочки будет направлен на этот объект. Если оставить этот параметр пустым, то свет будет распространяться во все стороны
Name
Если дать лампочке имя, то ее можно будет включать/выключать кнопкой или триггером
Brightness
Здесь указывается цвет (в формате RGB — красный, зеленый, синий) и яркость света. Первые три цифры отвечают за цвет, последняя — за яркость
Для определения цвета нажмите кнопку "Pick color" и выбирите необходимый цвет. Нажмите "OK". Первые три цифры уже определены. Остается выставить яркость лампочки четвертой цифрой. Обычно выставляются значения от 80 до 250 (чем больше значение, тем ярче светит лампочка)
Замечание: если установить все четыре значения в 0 0 0 0, то лампочка будет светить белым светом со средней яркостью
Appearance
Тип лампочки (обычная установлена по умолчанию, также есть быстро или медленно пульсирующая и др.)
Custom Appearance
Здесь можно установить параметры мерцания лампочки. Для этого используются комбинации букв английского алфавита от a до z, где "a" — потухшая лампочка, "z" — горящая. Например, комбинация abcdedcba заставит лампочку сначала загорется, потом потухнуть, затем это повторится
Чтобы иметь возможность устанавливать свой режим мерцания, необходимо дать лампочке имя (Name), при этом активировать лампочку нет необходимости, она загорится сама
флаги:
Initialy dark
Если отмечено, то лампочка будет выключена в начале раунда. Чтобы включить лампочку, ее необходимо активировать кнопкой или триггером
4. Light_environment
light_environment Основной источник света на картах с небом. Используется для создания общего освещения карты, которое проецируется с неба (т.е. SKY-брашей, расположенных вокруг карты и окрашенных со всех сторон текстурой SKY).
свойства:
Name
Имя (не надо)
Pitch Yaw Roll (Y Z X)
Здесь определяется направление света. Необходимое направление света легко определить, поставив вид сверху и указав необходимый угол в пармаетре "Angle"
Pitch
Угол в градусах, под которым свет направлен к земле. Используйте здесь только отрицательные значения. Например, значение -90 означает перпендикулярное к земле направление света. Часто используются значения -60, -45 и -30. Чем ближе значение к 0, тем более длинными будут тени, отбрасываемые стенами и др. объектами на карте
Brightness
Здесь указывается цвет (в формате RGB — красный, зеленый, синий) и яркость света (0-255). Первые три цифры отвечают за цвет, последняя — за яркость
Для определения цвета нажмите кнопку "Pick color" и выбирите необходимый цвет. Нажмите "OK". Первые три цифры уже определены. Остается выставить яркость света четвертой цифрой. Значения от 0 до 255 (чем больше значение, тем ярче свет). Для ночной карты поставьте значение 10-15, для дневной карты обычно используются значения от 70 до 150
5. Func_buyzone
Определяет зону для покупки оружия (обычно размещается на базах команд). Объект необходимо закрашивать со всех сторон специальной текстурой AAAtrigger.
свойства:
Team
Здесь указывается какая из команд может покупать оружие внутри данной зоны (All teams — обе команды / Terrorist / Counter-Terrorist)
6. Func_bomb_target
На de-картах данный объект определяет место для закладки бомбы. Используется вместо info_bomb_target, более того отменяет его действие (если он присутствует на карте). Позволяет более точно определить место закладки бомбы. Для создания места закладки бомбы необходимо сделать браш, окрашенный со всех сторон текстурой AAAtrigger и затем превратить его в энтити func_bomb_target.
свойства:
Target (then bomb blows)
Имя объекта, который должен взорваться вместе с бомбой (как например, ящики на de_dust). Чтобы взорвать несколько объектов одновременно (например, 5 ящиков), следует превратить их в func_breakable, дать одинаковые имена и поставить у каждого флаг "Only trigger"
7. Hostage_entity
hostage_entity Объект определяет место появления 1 заложника. Следите за тем, чтобы данный объект находился на некотором расстоянии над поверхностью земли, а также не был "вмонтирован" в стены и не касался других таких же объектов, иначе, родившись, заложник не сможет двигаться.
свойства:
Model
Путь к файлу *.mdl с моделью заложника, по умолчанию models/hostage.mdl
Skin
Здесь Вы можете выбрать скин (одежду) заложника, если у модели их несколько. Модели и скины можно просмотреть при помощи программы Half-Life Model Viewer
8. Func_hostage_rescue
На cs-картах данный объект определяет место для спасения заложников. Используется вместо info_hostage_rescue, более того отменяет его действие (если он присутствует на карте). Позволяет более точно определить место спасения заложников.
2. Часто используемые объекты (свойства)
9. Trigger_auto
trigger_auto Активирует указанный в параметре "Target" объект сразу же после загрузки карты. Действует только один раз, т.е. во втором и всех последующих раундах активировать объект уже не будет. Рекомендуем установить задержку перед активацией как минимум в 0.5 секунды. Это нужно для того, чтобы все объекты на карте успели появиться, прежде чем trigger_auto начнет что-то активировать.
свойства:
Target
Впишите сюда имя объекта, который нужно активировать в начале игры
Delay before trigger
Время в секундах до активации объекта, указанного в "Target" (рекомендуем поставить минимум 0.5 секунды)
KillTarget
Сюда можно вписать имя объекта, который будет уничтожен после активации trigger_auto (Внимание! Объект будет уничтожен на все оставшиеся раунды!)
Trigger state
Состояние переключения. Оно отвечает за то, как триггер будет активировать объекты (точнее в каких случаях). Всего существует 3 состояния:
on
Если выбрать "on", то триггер будет только включать объекты (например, включать лампочку), если лампочка уже горит, то триггер на нее никак не воздействует
off
Если выбрать "off", то триггер будет только выключать объекты (например, выключать звук), если звук не играет (уже выключен), то триггер на него никак не воздействует
toggle
Если выбрать "toggle", то триггер активирует объект в любом случае (независимо от того включен он или нет)
флаги:
Remove on fire
Если отмечено, то после активации, trigger_auto будет уничтожен (Внимание! Объект будет уничтожен на все оставшиеся раунды!)
10. Trigger_multiple
trigger_multiple Триггер позволяет многократно активировать любой объект. Часто через trigger_multiple активируются звуки на картах.
свойства:
Target
Впишите сюда имя объекта, который необходимо активировать при прохождении игрока через trigger_multiple
Name
Если дать триггеру имя, то его можно будет активировать кнопкой или другим триггером. Если имени не указать, то триггер сработает, когда игрок пройдет сквозь него
Kill target
Сюда можно вписать имя объекта, который будет уничтожен после активации trigger_multiple (Внимание! Объект будет уничтожен на все оставшиеся раунды!)
Master
Имя объекта multisource
Delay before trigger
Время в секундах до активации объекта, указанного в "Target"
Delay before reset
Время в секундах, по истечении которого, триггер может быть активирован вновь (в течении этого времени триггер работать не будет)
флаги:
Pushables
Если отмечено, то trigger_multiple можно активировать не только прохождением через него, но и передвижением объектов func_pushable
11. Ambient_generic
ambient_generic При помощи этого объекта на карту вставляются звуки в формате wav.
свойства:
Name
Если присвоить звуку имя — его можно будет включать/выключать кнопкой или триггером
Path/filename.wav of WAV
Здесь необходимо указать путь к звуковому файлу в формате wav (обычно звуки размещают в папке cstrike/sound/ambience). Также Вы можете найти звуки в архиве pak0.pak, в папке valve
Volume (10 = loudest)
Громкость звука. Значения (0 — 10), 10 — самый громкий
Dynamic Presets
Различные установки звучания (можно не указывать)
Start Volume
Начальная громкость звука (указывать необходимо, если установлены два параметра ниже)
Fade in time (0-100)
Время в секундах до увеличения громкости звука с начального значения (Start Volume) до конечного (Volume)
Fade out time (0-100)
Время в секундах до уменьшения громкости звука с конечного значения (Volume) до начального (Start Volume)
Остальные параметры используются редко
флаги:
Play Everywhere
Если отмечено, то звук будет слышен по всей карте, т.е. из любой ее точки
Small Radius
Если отмечено, то звук будет слышен на небольшом расстоянии (до 800 юнитов)
Medium Radius
Если отмечено, то звук будет слышен на среднем расстоянии (до 1250 юнитов)
Large Radius
Если отмечено, то звук будет слышен на большом расстоянии (до 2000 юнитов)
Start Silent
Если отмечено, то звук будет выключен в начале раунда и его необходимо будет включить кнопкой или триггером
Is NOT Looped
Если отмечено, то звуковой файл будет проигран один раз (не будет повторяться). Чтобы вновь проиграть звук, его необходимо будет активировать повторно
12. Func_breakable
Разбиваемый объект (стекла, ящики и пр.).
свойства:
Name
Если дать объекту имя, то его можно будет разрушить другим объектом, как если бы в него просто выстрелили
Target on break
Имя объекта, который будет активирован при разрушении func_breakable
Strength
Прочность разбиваемого объекта. Значение прочности в 25-30 приблизительно соответствует 1 выстрелу из винтовки, 50-60 — 2 выстрела и т.д. Можно выставлять любые значения вплоть до нескольких тысяч
Material type
Тип материала (объект будет разваливаться на куски выбранного материала)
Glass — стекло
Wood — дерево
Metal — металл
Flesh — плоть
Cinder block — блоки
Ceiling tile — черепица
Computer — компьютер
Unbreakable glass — неразбиваемое стекло
Rocks — камни
Gibs direction
Направление разлета кусков разрушенного объекта (Random — в разные стороны, Relative to attack — взависимости от того, с какой стороны объект был разрушен)
Delay before fire
Время в секундах от разрушения объекта до активации обьекта, указанного в "Target on break"
Gib model
Тип кусков при разрушении (можно не указывать)
Spawn on break
Обьект, который появляется из разрушенного объекта (в CS не используется)
Explode magnitude (0=none)
Мощность взрыва при разрушении объекта (поставьте здесь значение 0, чтобы взрыва не было)
параметры отображения
флаги:
Only trigger
Если отмечено, то объект нельзя будет разрушить просто стреляя в него. Он разрушится только, если его активировать другим объектом (триггером)
Touch
Если отмечено, то объект разрушится от прикосновения
Pressure
Если отмечено, то объект разрушится от давления
Instant crowbar
Если отмечено, то объект разрушится от 1 удара монтировкой (относится к Half-Life)
13. Func_button
Создает кнопку, которую можно использовать для активации других объектов (например, для открытия дверей). При нажатии кнопка двигается в сторону, указанную в поле "Angle" на расстояние равное своей толщине.