Урок создания звуков на карте
В этом руководстве мы разберём, как сделать звуки карты с помощью env_soundscape_triggerable и trigger_soundscape, а также как сделать soundscape скрипт.

Инструкция
Если вы начали читать данную статью, то подразумевается, что вы ознакомились с основами всех entity объектов, а также знаете, что такое система OutPut и InPut. Как с ними работать и уже имеете опыт в картостроении и несколько сделанных карт, которые состоят не только из коро1бок и кубиков хотя бы такого же уровня, как моя карта.

Карта делится на несколько зон, каждая из которой имеет свой набор звуков (звуки, исходящие из различных объектов, звуки атмосферы). Когда игрок покидает одну зону и переходит к следующей, звуки плавно сменяются на другие, например, выход из дома на улицу. Но при компиляции такие зоны и наборы звуков сами собой не появляются, всё это делают создатели карты. Сейчас мы и рассмотрим процесс их создания.

Есть 2 варианта их расстановки: триггерами, которые будут активировать нужный набор звуков при прохождении игрока через него и env_soundscape. Эти зоны активируют набор звуков, когда игрок попадает в область действия entity и видит её. На мой взгляд, способ с триггерами куда лучше. Игрок в любом случае пройдёт через триггер, а точечную entity может не заметить, если пройдёт спиной к ней, поэтому в данном руководстве мы будем обсуждать только способ при помощи trigger зон.

Рассмотрите, на какие soundscape зоны можно её разделить. К примеру, у станции метро и тоннеля для поездов разные звуки, поэтому это должны быть разные зоны. Ванная комната и кухня, лес и озеро, крыша высотки и парковка перед ней, улица и канализация под ней - всё это желательно должны быть разные зоны.

Каждая граница между зонами должна иметь 2 trigger зоны — trigger_soundscape, оба находятся на своих зонах и активируют каждый свою. У каждой зоны должен быть свой env_soundscape_triggerable — имя которого и надо вписать в параметр Soundscape Triggerable Name trigger'ов для данной зоны. Можно поставить в любом месте карты, он нужен будет только для работы наших trigger'ов и настройки звуков. Как вы уже, наверное, поняли, для каждого env_soundscape_triggerable нужно указать имя набора звуков, а также можно указать до 8 точек, откуда будут доноситься звуки (это могут быть обычные info_target), запрограммированные в скрипте. Всё это вы сможете настроить, если прочитали про данные entity в справочнике, поэтому теперь перейдём к созданию скрипта.

Скрипт должен находиться в папке /cstrike/scripts/ и иметь имя soundscapes_[название карты].txt, где "[название карты]" - имя вашей карты, например, если карта называется de_mymap, то скрипт имеет имя soundscapes_de_mymap.txt. Не забывайте переименовывать имя файла скрипта, если вдруг меняете имя своей карты.
Как вы поняли, скрипт является обычным текстовым файлом и его содержимое с успехом может создаваться в блокноте. Скрипт должен иметь такую структуру:

[имя набора звуков]
{
        [параметр набора звуков 1]
        [параметр набора звуков 2]
        ...
        [правило для звука 1]
        {
                [параметр 1]
                [параметр 2]
                ...
        }
        [правило для звука 2]
        {
                ...
        }
        ...
}

Например, так:

"t_spawn"
{
        "dsp" "1"
        "playlooping"
        {
                "volume" "0.7"
                "pitch" "110"
                "wave" "ambient\atmosphere\undercity_loop1.wav"
        }
}
Параметры набора
С именем набора звуков, думаю, всё понятно, ставим своё и вписываем его в env_soundscape_triggerable для нашей зоны в параметр Soundscape. Теперь поговорим о параметрах набора.

dsp (0/1, по умолчанию 0) — будет ли использован эффект эха.

dsp_volume (0-1) — насколько сильный будет эффект эха, по умолчанию сила эха расчитывается по окружающей обстановке: размеру пространства, окружающим материалам.

Вот и все параметры.
Правила для звуков и их параметры
playlooping — бесконечно играющий звук

soundmixer (по умолчанию "Default_Mix") — имя набора эффектов для всех звуков, параметры эффектов указаны в файле soundmixers.txt (папка scripts)

volume (0 и выше, по умолчанию 1) — громкость звука

pitch (0 и выше) — радиус распространения звука

soundlevel — сила звука, от этого свойства зависят параметры volume и attenuation, по умолчанию нет.

Список возможных параметров: SNDLVL_20dB, SNDLVL_25dB, SNDLVL_30dB, SNDLVL_35dB, SNDLVL_40dB, SNDLVL_45dB, SNDLVL_50dB, SNDLVL_55dB, SNDLVL_IDLE, SNDLVL_65dB, SNDLVL_STATIC, SNDLVL_70dB, SNDLVL_NORM, SNDLVL_80dB, SNDLVL_TALKING, SNDLVL_85dB, SNDLVL_90dB, SNDLVL_95dB, SNDLVL_100dB, SNDLVL_105dB, SNDLVL_110dB, SNDLVL_120dB, SNDLVL_125dB, SNDLVL_130dB, SNDLVL_GUNFIRE, SNDLVL_140dB, SNDLVL_145dB, SNDLVL_150dB, SNDLVL_180dB. Как вы поняли, этот параметр - уровень децибел, подробнее об этом можно найти в википедии.
position (0-7) — указанная позиция для звука, если не указано, звук играет везде

attenuation (0 и выше) — коэффициент затухания звука

wave — путь к звуку

playrandom — звук, который воспроизводится случайным образом через случайные промежутки времени по заданным параметрам.

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

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

"rndwave"
        {
                "wave" "mysound/zvuk1.wav"
                "wave" "mysound/zvuk2.wav"
        }

playsoundscape — это как бы набор звуков в наборе, то есть в данном параметре будет проигрываться не один или несколько звуков, а целый отдельный набор звуков (soundscape) со своими параметрами. Этот набор звуков должен присутствовать в текущем файле скрипта. Чтобы разобраться в том, как можно использовать данное правило, нужно некоторое время попрактиковаться. Но я считаю, что этот параметр не особо важен и не так часто используется:

name — имя набора звуков, который будет воспроизводиться в данном правиле.

position (0-7) — звук, имеющий номер данной позиции, воспроизводиться не будет.

positionoverride (0-7) — все звуки, которые имеют позицию, будут воспроизводится только из этой позиции.

ambientpositionoverride (0-7) — все звуки, которые не имеют позицию, будут воспроизводится только из этой позиции.

volume — громкость звуков.

К счастью, на этом всё. Сложно, но иначе никак. Очень надеюсь, что вы хоть что-то поняли из того, что я написал выше. Понять это стоит свеч, ведь только с помощью soundscap'ов можно сделать достаточно красивую и реалистичную звуковую обстановку.
Вернуться в каталог уроков