Меню сайта


[DS]: Half-Life Server
[DS]: Half-Life Server


[DS]: CS:S GunGame v34 Server
[DS]: CS:S GunGame v34 Server


[DS]: CS:S v34 Server
[DS]: CS:S v34 Server


Поиск

add_newДобавить новость
Последние добавленные
Название игры: S.I.P: Out Life
Жанр: FPS, с элементами RPG
Язык: с++, скрипты lua
G API: DirectX 9
Сайт: sip-game.su
Группа Vk: vk....
Читать далее

<JAM>
m1-palinka


HL-HEV
hl-hev

DS-Servers
Статьи
Туториалы
Маппинг
Goldsrc
Создание карт
Свет

Огонь



Огонь
Добавил: root
2013-01-07 07:21:42
33 просмотра

В этой статье мы расскажем о создании огня (простой и более сложной конструкции). Для реализации этих двух видов огней нам потребуются следующие энтити-объекты:

1. Простой огонь

Сначала создадим простейший огонь. Для этого нам потребуется всего два объекта: light и env_sprite. Остальные объекты мы будем использовать при создании различных спецэффектов (см. II часть статьи).

Итак, сначала определимся с местом, в котором будет гореть огонь. Это может быть факел или какая-то чаша. Можно просто разместить огонь на земле в виде костра.

Для создания огня используются анимированные спрайты с изображением огня (файлы *.spr), которые лежат в папке cstrike/sprites.. или, если их там нет, то в архиве pak0.pak в папке valve. Мы будем использовать стандартный спрайт огня с именем xffloor.spr. Все что нужно сделать, это разместить на карте в нужном месте точечный энтити-объект env_sprite (см. рис. ниже).

Создаем объект env_sprite



Теперь необходимо выставить некоторые свойства env_sprite.

Render Mode — Additive (этот режим убирает черную подложку вокруг спрайта);
FX Amount — 180 (степень прозрачности спрайта; больше — прозрачнее);
FX Color — 255 175 70 (цвет огня, в данном случае оранжевый);
Sprite Name — sprites/xffloor.spr (здесь указывается путь к файлу со спрайтом огня)
Scale — 1 (масштаб спрайта. Если нужен огонь побольше или поменьше, то измените масштаб спрайта. Значения возможны любые, например: 0.2, 0.45, 0.8, 1, 2, 3.5 и т.д.)

Теперь перейдите к флагам и отметьте Start on, чтобы анимация спрайта автоматически начинала проигрываться в начале раунда, иначе огонь будет «стоять»)

Сам по себе огонь, т.к. является спрайтом, не излучает свет. Следовательно, чтобы вокруг огня было светло, необходимо вставить источник света — обыкновенный light (см. рис. ниже).

Создаем рядом с огнем лампочку, объект light



Свойства light:

Brightness — 255 210 135 80 (светло-оранжевый свет средней яркости)

Это все — простой огонь готов.


2. Более сложный, но и более реалистичный огонь

Сложный огонь можно назвать скорее продвинутым, более реалистичным. Чем же он отличается от только что расмотренного простого огня?

У продвинутого огня есть звук горения, у продвинутого огня есть свечение (дымка) вогруг и при попадании в продвинутый огонь, игрок получает повреждения. Ну чтож, реализуем все это.

Превратим простой огонь в продвинутый. Сначала создадим свечение (дымку) вокруг пламени. Создается дымка уже известным нам способом при помощи точечного энтити-объекта env_glow. Вставим этот объект в центр огня. На картинке ниже сам огонь (объект env_sprite) расположен чуть выше «дымки» — env_glow. Эти объекты почти совпадают друг с другом, но все же почти...

Создаем дымку вокруг огня объектом env_glow. Размещаем его практически в том же месте, что и env_sprite



Для создания дымки мы будем использовать спрайт glow04.spr из папки cstrike/sprites.. Выставим свойства env_glow.

Render FX — Constant Glow (можно выставить и Normal, см. ниже)
Render Mode — Glow (для env_glow всегда должен быть этот режим)
FX Amount — 150 (чем больше значение, тем ярче, заметнее дымка. Максимум: 255)
FX Color — 255 210 135 (цвет дымки, в данном случае светло-оранжевый)
Model — sprites/glow04.spr (здесь указывается путь к файлу со спрайтом)
Sprite Scale — 1 (масштаб спрайта. Чем больше масштаб, тем больше дымка)

Теперь подробнее о параметре Render FX. Для спрайтов рекомендуется выставлять 2 режима: Normal или Constant Glow.

Все разница между этими режимами заключается в различной интенсивности (яркости, насыщенности) дымки при приближении/удалении игрока от спрайта.

В режиме Normal при удалении игрока от спрайта, его яркость уменьшается, спрайт становится менее видимым. При Constant Glow спрайт всегда имеет постоянную яркость, независящую от дистанции взгляда игрока. Попробуйте оба варианта, иногда лучше выглядит Normal, иногда Constant Glow.

Дымка готова. Теперь вставим звук огня. Для этого используем точечный энтити-объект ambient_generic. Вставьте его где-нибудь рядом с огнем (см. рис. ниже).

Создаем звук огня, объект ambient_generic



Выставим свойства ambient_generic.

Path/filename.wav of WAV — ambience/burning3.wav (путь к звуковому файлу в формате WAV). Если в папке cstrike/sound/ambience.. у Вас нет такого звука, то воспользуйтесь программой PakExplorer и выньте этот звук из архива pak0.pak в папке valve;
Volume — 5 (громкость звука. Максимально громкий 10. Мы используем не очень большой по размерам огонь, поэтому и громкость поставили небольшую)

Остальные параметры маловажны и их можно не выставлять.

Теперь перейдите к флагам и отметьте Small Radius. Это означает, что звук будет слышен на небольшом расстоянии от огня. Со звуком тоже разобрались.

И последнее, игрок, проходящий через огонь, должен получать повреждения. Если оставить все как есть, то через огонь можно будет безболезненно проходить. Некоторым игрокам не нравится, когда они получают повреждения, другим, как ни странно — нравится :) Палка о двух концах...

Для нанесения повреждений используется брашевый энтити-объект trigger_hurt. Размеры этого объекта определяют область, при вхождении в которую, игроку будут наносится повреждения, поэтому размещать trigger_hurt необходимо вокруг огня, т.е. огонь должен быть расположен внутри trigger_hurt.

Выберите специальную текстуру AAATrigger и создайте вокруг огня обычный браш (см. рис. ниже). Выделите его и нажмите [Ctrl-T], в списке выберите trigger_hurt.

Создаем область, где игроку будут наносится повреждения, объект trigger_hurt



Выставим свойства trigger_hurt, указывающие на тип повреждений и их силу.

Damage — 3 (количество наносимых повреждений в секунду);
Damage Type — BURN (вид повреждений, в данном случае от огня. Влияет только на иконку отображаемую в игре на экране, т.е. когда повреждение от огоня - иконка огня и т.д.).

В итоге всех наших мучений должен получится довольно красивый и реалистичный огонь (см. рис. ниже).

Так выглядят оба пламени в игре



На нашей карте-примере мы разместили около правого факела ящик, чтобы Вы могли прыгнуть в огонь и проверить как работает trigger_hurt :)

Итак, мы научили Вас создавать огонь самой сложной конструкции. Использовать или нет все эти «навороты» решать Вам. К примеру, вполне можно обойтись без дымки и повреждений, ограничившись лишь самим огнем и звуком.


fire.zip [81Кб] — в архиве карта-пример в форматах BSP и RMF, а также необходимые спрайты и звуки.


§ 8.1 Общая информация об освещении
§ 8.2 Естественное освещение (солнце)
§ 8.3 Искусственное освещение (лампочки)
§ 8.4 Эффект световых лучей
§ 8.5 Эффект дымки вокруг источников света
§ 8.6 Вращающийся свет
§ 8.7 Блокирование света объектами
§ 8.8 Огонь

Поделиться:
Тэги:

DS-Servers.com
Copyright © 2012-2016. All Rights Reserved.
При копировании материала ссылка на источник обязательна
За материалы, размещенные пользователями, администрация сайта ответственности НЕ несет