WorldCraft - Учебник

Это не совсем учебник - скорее, интересные статьи о крутых эффектах. Предполагается, что Вы умеете работать с WC (Hammer) и делать простые уровни.

Новые статьи отмечены звездочкой (*)


Содержание

1) "Как заставить монстров ходить по потолку", или "Взрывпакет, лежащий на боку"

2) Туман - это реальность!

3) * Как открывать и закрывать пар из трубы

 

 

 

 

 

1) "Как заставить монстров ходить по потолку", или "Взрывпакет, лежащий на боку"

Пояснения: того, кто играл в Case Closed, наверняка поразили уровни с хождением по потолку, в часности, барнаклы, "свисающие" с пола. А в Azure Sheep заметили взрывпакеты, разложенные на полках на боку? Нет, это не другое body, а чисто эффект, созданный маппером. А про Blue Shift'овский уровень с зеркальным полом вообще молчу. Хотите сделать такое же? Если да, то читайте дальше. Если нет, то делайте низкокачественные поделки а ля Crash Final или Chaos (да простят меня их создатели!).

 

Начнем с монстров. Сделайте большую комнату-куб и разделите пополам тонким брашем, который превратите в func_wall. Ставьте ему Render Mode - Texture, FX Amount - 96. Теперь ставьте на него двух monster_alien_slave. Обоим поставьте flags- Gag, Wait For Script и Prisoner. Первого назовите slave1, второго, соответственно, slave2. И ещё: второму в режиме отключенного Smart Mode добавьте пункт angles и напишите значение "0 180 180" (без кавычек). Теперь поместите на уровень два scripted_sequence и у обоих ставьте параметры: "name" - должно быть пусто, "Idle animation" - idle1, "Move to position" - Instantaneous, flags - No Interruptions и Override AI. У первого секвенса в поле "target monster" пишите slave1, а у второго - slave2. Внимание! Совместите обоих слейвов так, чтобы они перекрыли друг друга (слились в один "столбик"). Вуаля - компилируйте и наслаждайтесь эффектом зеркала.

Но есть одно НО, и очень большое - "отражение" слейва - это ДРУГОЙ монстр, просто он четко согласован с первым! Так что если они будут атаковать игрока или бегать, то весь эффект разрушится.

Чтобы сделать монстра, "ходящего по потолку", удалите первого слейва (не "отражение") и оба scripted_sequence, но добавьте другой ("Move to position" - Walk, "Action Animation" - idle1, "Target monster" - имя слейва (slave2), "Name" - walk_sq). Поставьте info_player_start ПОД func_wall'ом. Также поставьте trigger_auto c "target" - walk_sq. Готово!

И здесь есть ограничения. Перевернутые монстры ведут себя как обычные, т.е. AI остается "сверху". В связи с этим их нельзя использовать как врагов :-(

Аналогично делается лежащий на боку взрывпакет. Поэкспериментируйте с Angles (их еще называют Pitch Yaw Roll - YZX) и добьетесь потрясающих эффектов!

 

 

2) Туман - это реальность!

Пояснения: скромно сообщаю, что этот эффект придумал я, и его обсуждали на форуме spirit.valve-erc. Его недостатки - тормознутость на не очень современных машинах.

 

Суть эффекта - использование ОГРОМНОГО количества env_glow. Я создал специальный спрайт для этого. 150 ентитей достаточно для средней комнаты (!). Но ее необходимо изолировать от остальной части карты коридором, иначе будут дикие тормо за в связи с "too many entities in visible packet space", что не есть хорошо. Остальное просто, как env_spark - скачивайте пример карты, там все понятно.

 

3) Как открывать и закрывать пар из трубы

Пояснения: предположим, Вы хотите сделать трубу, на которой есть вентиль, который открывает и закрывает пар, обжигающий игрока. Если Вам кажется, что просто спрайта stmbl1.spr недостаточно, читайте дальше.

 

Итак, пар - это несколько спрайтов (например, я использую stmbl1.spr), расположенных по одной линии, с одинаковым фреймрейтом и постепенно увеличивающимся скейлом (scale). Спрайт у трубы имеет минимальный скейл, а самый удаленный - максимальный. Спрайт содержит энтити env_sprite. Создайте пять штук по одной линии со скейлами от 1 до 5. (Я предполагаю, что сама труба и вентиль - func_rot_button - у Вас уже есть). Выставьте спрайтам Render Mode - Additive, FX Amount - "150". Назовите их: первого - steam1, второго - steam2 и т.д. Теперь обжигание - trigger_hurt в зоне близ спрайтов (Name - "steam_hurt", Damage - "100", Damage type - BURN).

Очевидно, что пар должен при открытии вентиля "выйти" из трубы, а не внезапно окутать игрока. Для этого будем включать спрайты последовательно с интервалом 0,2 сек. И еще - вентиль должен в первый раз включать пар, а во второй - выключать. Для этого используем два trigger_changetarget. Назовите ваш вентиль (func_rot_button) "vent" и в поле "target" обоих триггеров пишите "vent". Имя первого триггера сделайте cht_on, второго - cht_off; в поле "New target" у первого пишите "mm_on", у второго - "mm_off". Итак, осталось немного. Делаем два multi_manager'а, первого назовите "mm_on", второго - "mm_off". Выключите Smart Mode и добавьте параметры:

У первого пишите:

Steam1 0

Steam2 0.2

Steam3 0.4

Steam4 0.8

Steam5 1

Steam_hurt 0.8

Cht_off 1

 

У второго:

Steam1 1

Steam2 0.8

Steam3 0.6

Steam4 0.2

Steam5 0

Steam_hurt 0.2

Cht_on 1

 

Готово! Компилируйте. При "нажатии" вентиля из трубы вырвется пар, при повторном нажатии - плавно исчезнет. Чего-то не хватает, правда? Звука! Ставьте ambient_generic (Name - "steam_snd", Sound - "sound\ambience\steamjet1.wav", flags - Small Radius и Start Silent) и добавьте ключ "steam_snd" в оба мультименеджера. Вот и все. Вот что в результате получилось у меня :-)

 

 

 

 

Chain Studios, 2001-2002

Hosted by uCoz