Ru/Soundscape

Звуковой ландшафт (англ. soundscape) — это звуковые скрипты, которые создают атмосферу в игре. Их можно использовать на большом количестве карт, требуется только один объект мира, при этом сетевой трафик не генерируется. 
Звуковое окружение состоит из зацикленных и произвольно воспроизводимых звуков, каждый из которых может быть присвоен одному из восьми указанных мест; также задействуется профиль и Звуковой микшер.
Одновременно может работать только одно звуковое окружение, а его отдельные звуки не могут управляться с помощью входов. Когда игрок активирует следующее звуковое окружение, игра создает плавный переход между звуками от одного к другому.
== Просмотр звукового окружения ==
Как правило, скрипты звукового окружения находятся в папке название игры\scripts\, и хранятся в нескольких текстовых файлах с именами soundscapes_map name.txt. (Они запакованы в оригинальные игры Valve, но при запуске карты автоматически переназначаются и распаковываются в эту папку.)
В свою очередь, все они перечислены в файле название игры\scripts\soundscapes_manifest.txt.
В нижней части этой статьи Вы найдёте ссылки на звуковые окружения отдельных игр, наряду с попытками их описания.
Все имеющиеся звуковые окружения Вы можете прослушать непосредственно в игре, используя консольную команду PlaySoundscape. После ввода символов команды, выпадет список скриптов звукового окружения, который можно прокручивать стрелочками на клавиатуре.
== Настройка звукового окружения ==
Звуковое окружение может настраиваться только через эти объекты мира:
*
*
Есть другие объекты мира, которые активируют звуковое окружение, но только эти два фактически определяют свойства звукового окружения. Другие объекты мира могут указывать на них и включать дистанционно.
Всякий раз, когда объекты активируют звуковое окружение, воспроизводится позиционный звук в соответствии с заданными свойствами. 
== Активация звукового окружения ==
Звуковые окружения активируются игроком или программно. Они работают до тех пор, пока не сменится карта или их не отключит другое звуковое окружение. 
=== Объекты звукового окружения ===
Звуковое окружение активируется любым из следующих объектов мира:
*
* (в свою очередь активируется .)
* (в свою очередь активируется или .)
Звуковое окружение является , но включаются, когда игровой персонаж приближается к дальности их действия, находясь в области .
Два исключения из этого правила - (вызываемый через или ), и (обычно вызываемый ).
Всегда активно только одно звукове окружение, но если одновременно срабатывают несколько звуковых окружений, то приоритет отдается ближайшему. (Радиус звукового окружения всегда имеет приоритет над обектами .)
Обратите внимание, что звуковое окружение не прекращает воспроизведение звука, если игровой персонаж выйдет из радиуса его действия или .
== Размещение звукового окружения ==
Во первых, используйте только необходимое количество объектов звукового окружения. Прослушав несколько звуковых окружений, выберите основное. Затем, разместите второстепенные звуковый окружения в контрастирующих локациях (таких как дом, комната с генератором). Убедитесь, что каждая локация с локализованными звуковыми эффектами имеет своё основное звуковое окружение, привязанное к соответствующим целям. 
После того, как вы составили общий план карты, можете добавлять сущности, вызывающие саундскейпы, и создавать места, где саундскейпы будут плавно 'переходить' от одного к другому. В большинстве случаев, вы будете блокировать все выходы из контрастирующих локаций с помощью триггеров, которые первыми запускают саундскейпы. В принципе, цель здесь - предвидеть перемещение игроков на карте, и блокировать каждую область, в которой активируется свой саундскейп.
После того, как всё организовано, вы сможете специализировать ваши саундскейпы/триггеры так, чтобы они включались сложным образом (например, отвечали на события в игре).
== Собственные звуковые окружения ==
=== Создание ===
Скрипты звукового окружения весьма похожи на , но по сути они совершенно разные.
Для скриптов звукового окружение применяются несколько специфичных правил и они размещаются в текстовых файлах отдельно от обычных файлов звуковых скриптов. Типичный файл скрипта звукового окружения может называться soundscape_mall.txt, и содержать от 5-30 различных саундскейпов, которые имеют такой формат:
 <name>
 {
 	<rule>
 	{
 		<keyvalue>
 		...
 	}
 
 	...
 }
=== Общие ключевые значения ===
; wave <>
: Путь и имя проигрываемого звука, вроде game\sound\.
; volume <>
: 1 - полная громкость, 0 - тишина.
; pitch <>
: Высота звука в процентах. +/-30 - полезный диапазон.
; position <0-7>
: Одно из восьми мест в мире (задаётся рисующим карту), откуда исходит звук.
; position random
: Как и выше, но звук исходит из произвольного места относительно игрока.
; attenuation <>
: Скорость затухания звуков по мере удаления камеры от них. Соответствует только указанной position (позиции). 
; soundlevel <string>
: Может использоваться вместо attenuation (затухания). Допускается одно из предварительно заданных движком значений.
=== Случайные значения ===
Некоторые правила допускают 'верхнее' и 'нижнее' значение параметров. Например:
 "pitch"	"80,120"
Всякий раз при выполнении правила, будет браться случайное значение из заданного диапазона.
=== Правила ===
==== playlooping ====
Проигрывает звук без перерыва. Не допускает случайных значений.
 "playlooping"
 {
 	"volume"	"0.98"
 	"pitch"		"110"
 	"soundlevel"	"SNDLVL_85dB"
 
 	"position"	"0"
 
 	"wave"	"ambient/swamps/water_Lap_loop_st.wav"
 }
==== playrandom ====
Звук проигрывается по истечении заданных секунд. Допускает случайные значения
Playrandom требует, чтобы все wave KVs были внутри rndwave (даже только один). Каждый раз при выполнении правила будет выбираться случайное значение.
 "playrandom"
 {
 	"time"		"1,4"
 	"volume"	"0.4,1"
 	"pitch"		"90,105"
 	"soundlevel"	"SNDLVL_85dB"
 
 	"position"	"0"
 
 	"rndwave"
 	{
 		"wave"	"ambient/wind/wind_med1.wav"
 		"wave"	"ambient/wind/wind_hit1.wav"
 	}
 }
==== playsoundscape ====
Воспроизводит весь саундскейп. Игнорирует 'субскейпные' пересеты DSP.
; name
: Имя воспроизводимого саундскейпа.
; position <int>
: Смещает индекс каждой позиции субскейпа. 
; positionoverride <int>
: Включает все позиционные звуки в субскейпе, чтобы они исходили из одного места.
; ambientpositionoverride <int>
: Включает все непозиционные (т.е. окружающие) звуки в субскейпе, чтобы они исходили из одного места.
 "SubScape"
 { 
 	"playsoundscape"
 	{ 
 		"name"	"GenericIndoor"
 
 		// Overall sub-scape volume to 50% 
 		"volume"	"0.5"
 
 		// Emit all positioned sounds from position 0
 		"positionoverride"	"0"
 
 		// Emit all ambient sounds from position 1
 		"ambientpositionoverride"	"1"
 	} 
 }
==== dsp ====
Переопределяет текущий пресет (который иначе будет получен из ближайших ).
Список значений DSP в scripts\dsp_presets.txt. Возможно, вам потребуется извлечь его с помощью . Для просмотра пресета DSP, отправляйте в консоль room_type <>.
 // Отключить DSP и окружающие звуки 
 "Empty"
 { 
 	"dsp"	"0"
 	"dsp_volume"	"1"
 }
==== soundmixer ====
Выбирает пользовательский звуковой микшер. Саундмикшеры управляют приоритетом и громкостью групп звуков; создать новые - в scripts\soundmixers.txt (В качестве шаблона ВСЕГДА используйте Default_Mix).
 "quiet"
 {
 	"soundmixer"	"Citadel_Dialog_Only"
 
 	...
 }
===Пример===
 "swamp.water.slow"
 {
 	"dsp" "1"
 
 	"playlooping"
 	{
 		"volume"	"0.98"
 		"pitch"		"110"
 		"soundlevel"	"SNDLVL_85dB"
 
 		"position"	"0"
 
 		"wave"	"ambient/swamps/water_Lap_loop_st.wav"
 	}
 
 	"playrandom"
 	{
 		"time"		"1,4"
 		"volume"	"0.4,1"
 		"pitch"		"90,105"
 		"soundlevel"	"SNDLVL_85dB"
 
 		"position"	"1"
 
 		"rndwave"
 		{
 			"wave"	"ambient/wind/wind_med1.wav"
 			"wave"	"ambient/wind/wind_hit1.wav"
 		}
 	}
 }
==== Зацикливание MP3-файлов E.G.====
//////////// Звуки птиц (зацикленный mp3-файл от gtamike_TSGK) ////////////
//////////// 2 .mp3-файла одинаковы, но отличаются по именам ////////////
//////////// Длина MP3-звука 3.29 минуты = 3 X 60 + 29 = 209 секунд ////////////
// mp3_loop
"mp3_loop"
{
	"dsp" "1"
	"playlooping"
	{
		"volume"	"1.0"
		"pitch"		"100"
		"soundlevel"	"SNDLVL_150dB"
		"wave"	"loop_mp3_soundscape/outside_1MB_20KB_part_1.mp3"
	}
	"playrandom"
	{
		"time"		"209"
		"volume"	"1.0"
		"pitch"		"100"	
		"soundlevel"	"SNDLVL_150dB"
		"rndwave"
		{
			"wave"	"loop_mp3_soundscape/outside_1MB_20KB_part_1.mp3"
			"wave"	"loop_mp3_soundscape/outside_1MB_20KB_part_2.mp3"
		}
	}
} 
=== Сохранение и работа с собственными звуковым окружением ===
Для поиска файлов саундскейпов движок использует файл soundscapes_manifest.txt.
Он будет искать этот манифест (и типовые саундскейпы) в папке scripts\ при запуске карты. Где находится эта папка (и корневой каталог пользовательских саундскейпов), зависит от того, является ли игра (создается через Create a Mod), или оригинальной игрой Valve:
* Если это мод, движок будет искать в его корневой папке.
* Если это оригинальная игра Valve, движок будет искать в папке аббревиатура игры\. (Например, в случае с , движок будет искать манифест в папке Steam\SteamApps\пользователь\half-life 2 episode one\episodic\scripts\.) В этом случае папка scripts\ должна быть создана в ручную, и все пользовательские soundscapes_manifest.txt находясь здесь, будут переопределять оригинальный файл.
Чтобы прописать в манифест новый саундскейп, просто добавьте строку
	"файл"		"местоположение и имя файла"
в фигурных скобках.
Обычно, местоположение и имя файла будут "scripts/soundscapes_имя пользовательской карты.txt".
== См. также ==
* 
* env_soundscape_proxy
* env_soundscape_triggerable
* trigger_soundscape
* Notepad++ VDF languages