Триггер (англ. trigger, спусковой крючок) — в компьютерных играх механизм, проверяющий присутствие каких-либо объектов игрового мира в заданном пространстве или расстояние от этих объектов до специальной точки. При выполнении условий (например, объект находится в триггерной зоне и этот объект — игрок) срабатывает определённое событие или цепь событий (скрипт).
В этой статье не хватает иллюстраций. |
Введение[]
Из раскрытого выше понятия триггера следует понимание, что Trigger Sounds (букв. триггерные звуки) это статические звуки с чётко определённым местоположением, которые срабатывают при вхождении игрока в зону триггера (зону срабатывания) этого звука. Далее приведено исследование реализаций триггерных звуков в бета-сборках, и в финальной версии игры.
Реализация в старых сборках 2003-2004 года[]
Откуда что пошло?
Старый сюжет, локация Кордон. О казарме на военном блокпосту.
6. В домике активационная зона, которая издаст громкий звук скрипнувшей половицы (звук половицы)
- Игрок вступает в зону активации (звук скрипнувшей половицы)
- Солдаты испуганы («Там! В дддомике кто-то есть!»)
- Один из солдат предполагает, что это в разваленный дом забрался сталкер (как раз там, где спрятался игрок)
- Он убеждает напарника пойти проверить, но тот всеми силами отказывается.
- Когда же он решается проверить, то подходит практически вплотную к дверному проему (лунный свет бросает тень в проем, возле притаившегося игрока), но потом, испугавшись, решает не проверять.
- Он кричит, что никого нет, и возвращается к первому солдату.
В сборке 1935 в казарме на блокпосту военных действительно присутствуют статические триггерные звуки, отыгрывающие звуки скрипящих половиц в тех местах, где смоделированы гнилые проваливающиеся доски. Такие звуки ещё можно наблюдать внутри домов в деревне.
Вместе со сборкой 1935 идёт SDK с исходными сценами уровней. Используя эти исходники можно обнаружить на уровне Кордон зеленые сферы имеющие название sound_zone_номер
. Это и есть script_zone
(скриптовая зона). Для проигрывание какого-то события через script_zone
использовалась Сustom data
уровня (файл level.ltx
). Файл находится в папке уровня.
В файле level.ltx
Кордона сборки 1935 находится такое содержимое:
; level script file
[level_scripts]
script = scr_trader, escape_raids, escape_sound_events, escape_raid_heli, level_news, escape_patrol2
[level_map]
В секции [level_scripts]
находится скрипт использующийся для упомянутых выше sound_zone_номер
. Он называется escape_sound_events.script
и именно в нём прописано условие срабатывания триггера.
Открыв файл escape_sound_events.script
можно обнаружить код наподобии:
function main()
...
xr_events.SoundEvent( get_level_object( "sound_zone_01" ), actor, "ambient\\floor_creak1", ... , "ambient\\floor_creak3")
...
end
SoundEvent
— специальная функция звуковых оповещений, в том числе для проигрывания звука «под ногами». Код ( get_level_object( "sound_zone_01" )
обозначает какой объект спавна задействуется в данной функции (sound_zone_01
), инициатор (кто вызывает срабатывание, actor
) и перечень проигрываемых звуков. Их несколько, а далее xr_events.SoundEvent
производит случайный выбор.
Реализация в Тени Чернобыля[]
В течении разработки от вышеописанного метода проигрывания звуков посредством триггера отказались в пользу space_restrictor
Код для проигрывания звуков писался в Сustom data
space_restrictor
. Например:
[logic]
active = sr_idle
[sr_idle]
on_actor_inside = sr_sound@floorcreak
[sr_sound@floorcreak]
type = floor_wooden
play_at_actor = true
Как это работает:
Основная секция [logic]
: условие активации — смотреть в секции *имя*
Секция активации [sr_idle]
: при вхождении игрока зону (событие on_actor_inside
) — выполняется, что находится в секции *имя*. При этом префикс sr_sound
указывает нам на то, что под секцией лежит схема звукового space_restrictor-а. Поэтому движок будет искать в секции параметры именно этой схемы, а не какой-то другой.
Секция исполнения sr_sound@floorcreak
: тип звука — деревянный пол, следующая строка — указание, что проигрываем звук от позиции игрока.
Что такое «тип» и где же тут сами звуковые файлы? Тип это «пред-установка», то есть указание типа подразумевает проигрывание случайно выбранного звука, из набора, перечисленного в описании типа.