Ru/Soundscape

From Valve Developer Community
< Ru
Revision as of 20:40, 1 September 2015 by Alvagor (talk | contribs) (→‎playrandom)
Jump to navigation Jump to search

Template:Otherlang2

Саундскейп - это вид звукового сценария, который создает атмосферу в игре. На карте их может быть любое количество, при этом сетевой трафик не генерируется . Саундскейпы используют смесь из зацикленных и произвольно воспроизводимых звуков, каждый из которых может быть присвоен одному из восьми указанных мест; также задействуется профиль DSP.

Одновременно может работать только один саундскейп, а его отдельные звуки не могут управляться с помощью входов. Когда игрок активирует следующий саундскейп, игра создает плавный переход между звуками от одного к другому.

Template:Tip:ru

Template:Tip:ru

Template:Note:ru


Просмотр саундскейпов

Как правило, саундскейпы находятся в папке игры game abbreviation\scripts\, и хранятся в нескольких текстовых файлах с именами soundscapes_map name.txt. (Они запакованы в оригинальные игры Valve, но автоматически переназначаются и распаковываются в папку, где запускается карта.)

В свою очередь, все они перечислены в файле game abbreviation\scripts\soundscapes_manifest.txt.

В нижней части этой статьи вы найдете ссылки на саундскейпы отдельных игр, наряду с попытками их описания.

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

Конфигурирование саундскейпов

Саундскейпы могут кофигурироваться только через эти энтити:

Есть другие энтити, которые активируют саундскейпы, но только эти две фактически определяют свойства звукового оформления. Другие энтити могут указывать на них и включать удаленно. Всякий раз, когда энтити активируют саундскейп, воспроизводится позиционный звук в соответствии с заданными свойствами. Template:Tip:ru

Активация саундскейпов

Саундскейпы активируются игроком или программно. Они работают до тех пор, пока не сменится карта или их не отключит другой саундскейп. Template:Tip:ru


Сущности саундскейпов

Саундскейпы активируются любой из следующих сущностей:

Саундскейпы основаны на точке, но включаются, когда игрок входит в сферу их действия и находятся в зоне прямой видимости.

Два исключения из этого правила - env_soundscape_proxy (вызываемый через env_soundscape или env_soundscape_triggerable), и env_soundscape_triggerable (обычно вызываемый trigger_soundscape).

Всегда активен только один саундскейп, но если одновременно срабатывают несколько саундскейпов, то приоритет отдается ближайшему. (Радиус саундскейпа всегда имеет приоритет над брашами trigger_soundscape.)

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


Template:Tip:ru

Размещение саундскейпов

Во первых, размещайте только необходимое количество саундскейпов. Прослушав несколько саундскейпов, выберите основной. Затем, разместите второстепенные саундскейпы в контрастирующих локациях (таких как дом, комната с генератором). Убедитесь, что каждая локация с локализованными звуковыми эффектами имеет свой мастер-саундскейп, привязанный к соответствующим целям.

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

После того, как всё организовано, вы сможете специализировать ваши саундскейпы/триггеры так, чтобы они включались сложным образом (например, отвечали на события в игре).

Конструирование саундскейпов

Создание

Скрипты саундскейпов весьма похожи на звуковые скрипты, но по сути они совершенно разные.

Саундскейпы следуют собственным правилам, и помещаются в текстовых файлах, которые отделены от обычных файлов звуковых скриптов. Типичный файл саундскейпа может называться soundscape_mall.txt, и содержать от 5-30 различных саундскейпов, которые имеют такой формат:

<name>
{
	<rule>
	{
		<keyvalue>
		...
	}

	...
}

Общие ключевые значения

wave <string>
Путь и имя проигрываемого звука, вроде game\sound\.
volume <normal>
1 - полная громкость, 0 - тишина.
pitch <integer>
Высота звука в процентах. +/-30 - полезный диапазон.
position <0-7>
Одно из восьми мест в мире (задаётся рисующим карту), откуда исходит звук.
position random
Как и выше, но звук исходит из произвольного места относительно игрока.
attenuation <float>
Скорость затухания звуков по мере удаления камеры от них. Соответствует только указанной position (позиции). Template:Todo:ru
soundlevel <string>
Может использоваться вместо attenuation (затухания). Допускается одно из предварительно заданных движком значений.

Template:Warning:ru

Случайные значения

Некоторые правила допускают 'верхнее' и 'нижнее' значение параметров. Например:

"pitch"	"80,120"

Всякий раз при выполнении правила, будет браться случайное значение из заданного диапазона.

Правила

playlooping

Проигрывает звук без перерыва. Не допускает случайных значений.

Template:Note:ru

"playlooping"
{
	"volume"	"0.98"
	"pitch"		"110"
	"soundlevel"	"SNDLVL_85dB"

	"position"	"0"

	"wave"	"ambient/swamps/water_Lap_loop_st.wav"
}

playrandom

Звук проигрывается по истечении заданных секунд. Допускает случайные значения

Playrandom требует, чтобы все wave KVs были внутри rndwave (даже только один). Каждый раз при выполнении правила будет выбираться случайное значение.

Template:Warning:ru

"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

Plays a complete soundscape. DSP presets in the 'sub-scape' are ignored.

name
Name of the soundscape to play.
position <int>
Offsets each position index of the sub-scape.
Нужно сделать: What does that mean?
positionoverride <int>
Forces all positioned sounds in the sub-scape to emit from one location.
ambientpositionoverride <int>
Forces all unpositioned (i.e. ambient) sounds in the sub-scape to emit from one location.
"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

Overrides the current DSP preset (which would otherwise be derived from the $surfaceprop of nearby materials).

For a list of values, open scripts\dsp_presets.txt. You may need to extract this from the relevant engine GCF with GCFScape. To preview a DSP preset, submit room_type <int> to the console.

Note.pngПримечание:Be careful when setting presets in soundscapes that could be used in many different locations.
Note.pngПримечание:You can also use dsp_volume to define how loud the dsp effect is.
// Disable DSP and play no ambient sounds 
"Empty"
{ 
	"dsp"	"0"
	"dsp_volume"	"1"
}

soundmixer

Selects a custom soundmixer. Soundmixers manage the priority and volume of groups of sounds; create new ones in scripts\soundmixers.txt (ALWAYS use Default_Mix as a template).

"quiet"
{
	"soundmixer"	"Citadel_Dialog_Only"

	...
}

Example

"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"
		}
	}
}

Looping MP3 Files E.G.

//////////// Outside bird sounds (loop mp3 sound file trick by gtamike_TSGK) ////////////
//////////// The 2 .mp3 files are the same as each other just not the same file name ////////////
//////////// MP3 Sound file runtime 3.29mins = 3 X 60 + 29 = 209secs ////////////

// 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"
		}
	}
}
Warning.pngПредупреждение:Mp3 soundscapes might save filesize for custom maps but are not recommended. It can happen that the FIRST file at "rndwave" plays after the half of the time value has passed. In this case you have to double the value (418 in this case, but live with the consequence that the there will will be a pause after the soundfile has played twice.

Storing and using custom soundscapes

The engine uses the soundscapes_manifest.txt file to find all its soundscapes files.

It will look for this manifest (and typically the soundscapes as well) in the scripts\ folder on map start. Where this folder (and the root of custom soundscapes) is located, depends on whether the game is a modification (created through Create a Mod), or an original Valve game:

  • If it's a modification, the engine will look for it in the root folder of the mod.
  • If it's an original Valve game, the engine will instead look for it in the games game abbreviation\ folder. (For example, in the case of Half-Life 2: Episode 1 the engine will look for the manifest in the Steam\SteamApps\user\half-life 2 episode one\episodic\scripts\ folder.) In this case the scripts\ folder has to be created manually, and any custom soundscapes_manifest.txt found there, will override the original file.

To list a new soundscape in the manifest, simply add the line

"file" "location and file name"

within the curly brackets.

Typically the location and file name will be "scripts/soundscapes_custom map name.txt".

Note.pngПримечание:All soundscape names must be globally unique within a game.
Tip.pngСовет:If you want to add custom soundscapes to your map, and you haven't already, you should consider creating a full modification (through the Create a Mod option found in the Source SDK menu. This will prevent your custom manifest from overriding any soundscape updates made to the original game.

See also