SOUNDSCAPES - окружающий звуковой фон

Помогаем новичкам в создании своего мира
Сообщение
Автор
Аватара пользователя
zerg_spb
Маппер
Маппер
Сообщения: 823
Зарегистрирован: 11.06.2006
Благодарил (а): 1 раз
Поблагодарили: 32 раза
Контактная информация:

#1 Сообщение 26.04.2008, 12:31

См. также: env_sounscape,

Список предопределенных саундскейпов из
Half-Life 2
CS:S
Day of Defeat: Source
Portal
--------------------------------------------------------------------------------


Саундскейпом называется определенное звуковое окружение - случайные звуки, как правило, передающие атмосферу определенной области игры. Если Вам нужно проигрывать набор звуков в случайном порядке - саундскейп подойдет идеально.
Саундскейпы в Half-Life 2 позволяют использовать несколько DSP-эффектов (цифровая обработка сигналов) в реальном времени (например, эхо), которые изменяют стандартное звучание всех используемых в нем звуков.
В одно и то же время в игре может быть активным только один саундскейп. При изменении активного саундскейпа происходит плавный переход между предыдущим и новым саундскейпами.
В основном, для саундскейпов используется энтити env_sounscape. Она активируется, если игрок находится внутри радиуса ее действия, а также в пределах прямой видимости (т.е. между центром энтити и игроком нет преград из стен и пр.).

Пример срабатывания саундскейпов
Здесь черными кружками обозначены сайндскейпы S1 и S2, черными стрелками - путь следования игрока, буквой P и белыми кружками - ключевые точки на этом пути, прямоугольник - обычный браш (блокирует прямую видимость), зелеными и синими стрелками обозначены направления прямой видимости в каждой точке относительно саундскейпов (пунктир - если нет прямой видимости). Большие окружности обозначают радиусы действия саундскейпов.

Пояснение к примеру

Игрок начинает путь из точки P. В точке 1 он попадает в радиус действия саундскейпа S1 - теперь саундскейп S1 слышен игроку.
В точке 2 саундскейп S1 находится за пределами прямой видимости, но по-прежнему слышен игроку.
В точке 3 игрок попадает в радиус действия саундскейпа S2. Теперь саундскейп S1 не слышен игроку, слышен только S2.
В точке 4 игрок выходит из радиуса действия саундскейпа S2, но по-прежнему слышит только его, т.к. саундскейп S1 находится за пределами прямой видимости.
В точке 5 игрок снова слышит саундскейп S1, т.к. он находится в пределах прямой видимости. Саундскейп S2 не слышен.
soundscape.gif
soundscape.gif (11.75 КБ) 3446 просмотров
soundscape.gif
soundscape.gif (11.75 КБ) 3446 просмотров
Энтити env_soundscape ищет любой указанный саундскейп в специальном файле soundscapes.txt, который находится в каталоге /scripts Вашего мода, либо в другом файле, зависящем от карты (soundscapes_*.txt).


Структура описания саундскейпа

Структура файла soundscapes.txt простая и наглядная - в основном в виде пар "переменная-значение" или "команда-параметр" (см. пример ниже), каждая в отдельной строке. Секции ограничиваются фигурными скобками.


"example"
{
"key1" "value1"
"key2" "value2"
"subexample"
{
"key3" "value3"
}
"key4" "value4"
}
// Вся эта строка - комментарий (пропускается движком)
"example2" // Возможен и такой комментарий - от // до конца строки
{
}


Каждая секция верхнего уровня (не входящая в другие секции) определяет отдельный саундскейп. В энтити env_soundscape задаются как раз имена этих секций (для приведенного примера это example и example2).


Добавление нового саундскейпа

Имена всех загружаемых файлов с определениями саундскейпов содержатся в файле soundscapes_manifest.txt в каталоге /scripts Вашего мода. Добавьте в него имя файла с описанием новых саундскейпов (после комментария // List additional soundscape files here) по образцу:
"file" "scripts/<имя_файла_с_саундскейпами>.txt"
Затем создайте файл в каталоге /scripts мода с именем <имя_файла_с_саундскейпами>.txt и в него внесите определения новых саундскейпов.
Есть еще один способ добавления саундскейпов (если нельзя менять содержимое файла soundscapes_manifest.txt), но он будет работать только для отдельно взятой карты. Для этого для карты <имя карты> нужно создать файл soundscapes_<имя карты>.txt и в нем определить новые саундскейпы (этот файл будет обрабатываться при загрузке карты <имя карты>.bsp).


Команды, используемые в определении саундскейпа

"dsp" "<параметр>"
задает эффект обработки звука. Обычно <параметр> равен 1 - автоматическая обработка звуков, исходя из окружающей геометрии (эхо, ревербация). Параметр 0 отключает обработку звуков (проигрываются без изменений).
Другие значения параметра рекомендуются только в особых случаях и описываются в файле …/hl2/scripts/dsp_preset.txt; названия эффектов по номерам есть в начале файла soundscapes.txt.

Пример:
// Саундскейп - полная тишина без обработки звука
"Nothing"
{
"dsp" "0"
}


"playlooping" {}
циклически проигрывает звук до тех пор, пока активен саундскейп.
В скобках задаются дополнительные команды-спецификации:
"wave" "<путь>"
имя звукового файла с указанием пути. Если звук из стандартных, то <путь> задается так же, как в просмотрщике звуков. Для новых звуков, добавленных в каталог /sound Вашего мода, <путь> задается относительно этого каталога.
"volume" "<число с п.точкой от 0 до 1>"
задает громкость звука.
"pitch" "<число от 1 до 255>"
задает темп воспроизведения звука (с изменением высоты). Нормальное значение - 100 (оригинальное звучание).
"attenuation" "<число>"
случайное ослабление звука (используется только в том случае, если далее следует команда "position"). На данный момент более подробная информация отсутствует.
"position" "<число>"
если секция playlooping используется для позиционного звучания (в игре определяется его положение), данная команда задает номер позиции (<число> - от 0 до 7). Позиции задаются затем в энтити env_soundscape.
Пример:
// Циклическое проигрывание отдельного звука с ревербацией (1 тип комнаты)
"GenericIndoor"
{
"dsp" "1"
"playlooping"
{
"volume" "1"
"pitch" "100"
"wave" "ambient/atmosphere/indoor2.wav"
}
}



Замечание: для того, чтобы зациклить звук, необходимо добавить в него специальные метки цикла (в звуковом редакторе установить на начало маркер cue с именем loop). Эти метки позволяют звуковому движку определить, какую часть звука нужно проигрывать циклически (обычно звук целиком).

"playrandom" {}
постоянно проигрывает набор звуков случайным образом (пока активен саундскейп).
В скобках задаются дополнительные команды-спецификации:
"time" "tmin,tmax"
временной интервал между звуками. Здесь tmin и tmax - минимальное и максимальное значение времени (т.е. между началом текущего и следующего звуков пройдет tmin…tmax секунд).
"volume" "vmin,vmax"
громкость звуков; задается значениями от 0 до 1 (1 - максимальная (оригинальная) громкость звука). Здесь vmin и vmax - минимальная и максимальная громкость (т.е. громкость очередного звука будет случайной в интервале от vmin до vmax).
"pitch" "pmin,pmax"
ускорение/замедление воспроизведения; задается значениями в процентах от 50 до 250 (100 - нормальная скорость). Здесь pmin и pmax - минимальное и максимальное значения (т.е. ускорение/замедление воспроизведения колеблется в интервале от pmin до pmax).
"attenuation" "<число>"
случайное ослабление звука. Более подробная информация отсутствует.
"rndwave" {}
список звуков, которые будут проигрываться в случайном порядке. Каждый звук задается в виде строки "wave" "<путь>" (имя звукового файла с указанием пути). Если звук из стандартных, то <путь> задается так же, как и в просмотрщике звуков. Для новых звуков, добавленных в каталог /sound Вашего мода, <путь> задается относительно этого каталога.
"position" "<число>"
если секция playrandom используется для позиционного звучания (в игре определяется его положение), данная команда задает номер позиции (<число> - от 0 до 7). Позиции задаются затем в энтити env_soundscape.
Пример:
"ExampleSoundscape"
{
"dsp" "1"

"playrandom"
{
// Проигрывать звуки каждые 0.1…1.5 секунд
"time" "0.1,1.5"

// Громкость звуков от 0.5 до 1
"volume" "0.5,1"

// Проигрывать от ускорения 50% до замедления 120%
"pitch" "50,120"

// Ослабление звучания 0.7
"attenuation" "0.7"

// Для энтити, определенной в позиции 1
"position" "1"

// Случайным образом проигрывать звуки из следующего списка
"rndwave"
{
"wave" "ambient/creatures/pigeon_idle1.wav"
"wave" "ambient/creatures/pigeon_idle2.wav"
"wave" "ambient/creatures/pigeon_idle3.wav"
}
}
}


"playsoundscape" {}
проигрывает ранее определенный саундскейп, включенный в данный. Таким образом можно задавать набор саундскейпов, которые будут проигрываться в составе данного.
В скобках задаются дополнительные команды-спецификации:
"name" "<имя саундскейпа>"
имя проигрываемого саундскейпа.
"volume" "<число с п.точкой от 0 до 1>"
громкость проигрываемого саундскейпа (1 - максимальная (оригинальная)).
"position" "<число>"
если секция playsoundscape используется для позиционного звучания (в игре определяется его положение), данная команда задает номер позиции (<число> - от 0 до 7). Позиции задаются затем в энтити env_soundscape.
"positionoverride" "<число>"
даже если проигрываемый саундскейп использует несколько позиций для звуков, данная команда вынуждает проигрывать его звуки только из одной позиции. Здесь <число> равно номеру позиции от 0 до 7.
"ambientpositionoverride" "<число>"
все фоновые звуки заданного саундскейпа будут располагаться в указанной позиции. Таким образом, можно задавать звуки фонового "окружения", идущие с определенной стороны. Здесь <число> равно номеру позиции от 0 до 7.
Замечание: саундскейпы, включенные таким образом в состав данного, не влияют на обработку звука (DSP).

Пример:
"SubSoundscape"
{
"dsp" "1"

"playsoundscape"
{
// Саундскейп, который проигрывается в составе данного саундскейпа
"name" "GenericIndoor"

// Громкость указанного саундскейпа уменьшить наполовину
"volume" "0.5"

// Все позиционные звуки указанного саундскейпа идут из одной позиции
"positionoverride" "0" // из позиции 0

// Все фоновые звуки указанного саундскейпа идут из одной позиции
"ambientpositionoverride" "1" // из позиции 1
}
}


"SOUNDMIXER" "<имя микшера>"
задает звуковое микширование (смешивание) для саундскейпа. Микширование звука используют, чтобы задать громкость для разных категорий звуков, называемых группами микширования. При этом проигрывание категорий может происходить одновременно (смешивается).
Имена микшеров заданы в файле soundmixers.txt в каталоге /scripts Вашего мода. Если необходимо определить собственный микшер, добавьте его в конец этого файла (после строки // add new sound mixers here...).

Замечание: определяя новый микшер, всегда используйте в качестве шаблона микшер Default_Mix. Об этом предупреждает комментарий в файле soundmixers.txt.

Пример:
"automatic"
{
"dsp" "1"
"dsp_volume" "1.0"
"SOUNDMIXER" "Default_Mix"
}


В примере определяется саундскейп automatic с микшером Default_Mix.

Определение микшера Default_Mix (в файле soundmixers.txt):
"Default_Mix"
{

// имя группы значение при смешивании
// -------- ---------
"Explosions" "0.90"
"Player_Weapons_Loud" "1.0"
"Player_Suit" "0.56"
"Weapons" "0.79"

"AHELI_WEAPON" "0.85"
"GUNSHIP_WEAPON" "0.85"
"STRIDER_WEAPON" "0.85"
"bullethit" "0.67"

"Music" "0.81"

"All" "0.72"
}



--------------------------------------------------------------------------------

Статьи (рус):
Статьи (eng): http://developer.valvesoftware.com/wiki/Soundscapes" target="_blank , http://developer.valvesoftware.com/wiki/Env_soundscape" target="_blank


--------------------------------------------------------------------------------

Номер статьи: 10

Аватара пользователя
Saidteshnologi
Маппер
Маппер
Сообщения: 769
Зарегистрирован: 16.06.2006
Откуда: Minsk, Belarus
Благодарил (а): 8 раз
Поблагодарили: 28 раз
Контактная информация:

#2 Сообщение 22.06.2008, 19:58

Пример создания зацикленного звука программой Sound Forge 9.0:
Открываем звуковой файл выбираем маркерами нужный нам участок или выделяем весь трек (ctrl + A), потом идём в меню Special -> Regions List -> Insert, жмём OK.
И сохраняем файл (ctrl + S).

Ответить Вложения 1