Zh/Soundscape: Difference between revisions
(Created page with "{{LanguageBar}} <!-- Add the categories to the main page, not here. Some template, such as {{This is a}}, and all Table templates should be placed to the main page. --> {{subpage|Sound and Music}} '''Soundscape(音景)'''是一种音效脚本,用于向地图添加环境音效,它在地图中的数量没有严格限制,只需一个实体即可完成所有步骤,并且不会产生任何网络开销。音景通常为循环音效和随机音效的组合,...") |
m (Setting bug notice hidetested=1 param on page where the bug might not need tested in param specified) |
||
(3 intermediate revisions by one other user not shown) | |||
Line 4: | Line 4: | ||
{{subpage|[[Sound and Music]]}} | {{subpage|[[Sound and Music]]}} | ||
'''Soundscape(音景)'''是一种音效脚本,用于向地图添加环境音效,它在地图中的数量没有严格限制,只需一个实体即可完成所有步骤,并且不会产生任何网络开销。音景通常为循环音效和随机音效的组合,这些声音可以通过从8个可分配的目标位置之一发出;同时还可以强制使用 | '''Soundscape(音景)'''是一种音效脚本,用于向地图添加环境音效,它在地图中的数量没有严格限制,只需一个实体即可完成所有步骤,并且不会产生任何网络开销。音景通常为循环音效和随机音效的组合,这些声音可以通过从8个可分配的目标位置之一发出;同时还可以强制使用{{L|DSP}}和{{L|Soundmixer}} | ||
每次只能同时播放一个音景,并且其中的任何声音都无法用I/O系统控制,当另一个音景启用时,游戏会自动淡入淡出 | 每次只能同时播放一个音景,并且其中的任何声音都无法用I/O系统控制,当另一个音景启用时,游戏会自动淡入淡出 | ||
{{tip| | {{tip| | ||
* 过渡时间由 | * 过渡时间由{{L|cvar|控制台指令}}<code>soundscape_fadetime</code>定义,或者在更新的游戏中由<code>fadetime</code>键值定义。 | ||
* 使用 | * 使用{{L|cvar|控制台指令}}<code>soundscape_debug</code>来检查哪个音景处于活动状态以及原因}} | ||
{{note| | {{note| | ||
* 在不正常编译VVIS的情况下(如:以快速模式(<code>-fast</code>)编译),音景将无法正常工作 | * 在不正常编译VVIS的情况下(如:以快速模式(<code>-fast</code>)编译),音景将无法正常工作 | ||
* 除非音频文件有标记点,否则它们无法作为循环音效,详见 | * 除非音频文件有标记点,否则它们无法作为循环音效,详见{{L|Looping a Sound}} | ||
* 在''大部分''起源游戏中,音景无法同时播放统一音效,即便音调,音量和SoundLevel不同,有关解决方法详见下方 | * 在''大部分''起源游戏中,音景无法同时播放统一音效,即便音调,音量和SoundLevel不同,有关解决方法详见下方 | ||
* | * {{LCategory|player spawn entities|玩家出生点}}至少应位于一个音景的半径范围内({{L|trigger_soundscape|或边界框}}),否则玩家将在没有音景播放的情况下生成}} | ||
==音景== | ==音景== | ||
Line 34: | Line 34: | ||
===配置音景=== | ===配置音景=== | ||
音景只能通过以下实体进行配置: | 音景只能通过以下实体进行配置: | ||
* | *{{L|env_soundscape}} | ||
* | *{{L|env_soundscape_triggerable}} | ||
还有其他实体可以启用音景,但只有上述这些真正定义了音景的属性。其他实体将以此为主实体远程控制音景 | 还有其他实体可以启用音景,但只有上述这些真正定义了音景的属性。其他实体将以此为主实体远程控制音景 | ||
每当这些实体启用音景的时候,任何具备预定义位置的音效都将会从音景实体指定的Sound Position实体位置触发 | 每当这些实体启用音景的时候,任何具备预定义位置的音效都将会从音景实体指定的Sound Position实体位置触发 | ||
{{tip|许多音景定义了声音发出的位置,因此最好查看音景条目并了解您可以做什么。大部分音景条目都可以在<code><game>/scripts/soundscapes_manifest.txt</code>文件找到。要更好的理解音景, | {{tip|许多音景定义了声音发出的位置,因此最好查看音景条目并了解您可以做什么。大部分音景条目都可以在<code><game>/scripts/soundscapes_manifest.txt</code>文件找到。要更好的理解音景,{{L|Soundscape#Custom_Soundscapes|详见下方}}。}} | ||
===激活音景=== | ===激活音景=== | ||
Line 48: | Line 48: | ||
音景可由以下实体播放: | 音景可由以下实体播放: | ||
* | *{{L|env_soundscape}} | ||
* | *{{L|env_soundscape_triggerable}} (通常由{{L|trigger_soundscape}}激活) | ||
* | *{{L|env_soundscape_proxy}} (通常反过来激活env_soundscape或者env_soundscape_triggerable) | ||
音景本身是基于 | 音景本身是基于{{L|point_entities|点实体}},但是当玩家处在所属半径内并且[[line of sight|视野内可见]]时,即可触发它们 | ||
不过env_soundscape_proxy和env_soundscape_triggerable是两个例外,前者通过env_soundscape或者env_soundscape_triggerable触发;后者通常由trigger_soundscape触发 | 不过env_soundscape_proxy和env_soundscape_triggerable是两个例外,前者通过env_soundscape或者env_soundscape_triggerable触发;后者通常由trigger_soundscape触发 | ||
Line 61: | Line 61: | ||
{{tip|使用 | {{tip|使用{{L|cvar|控制台指令}}{{L|soundscape_debug}}来检查哪些音景处于播放状态}} | ||
===音景放置=== | ===音景放置=== | ||
Line 73: | Line 72: | ||
目前在''大多数''起源游戏/分支中,一次只能在音景内同时播放一个或多个相同的音效,即便音量,音调和SoundLevel有差异 | 目前在''大多数''起源游戏/分支中,一次只能在音景内同时播放一个或多个相同的音效,即便音量,音调和SoundLevel有差异 | ||
{{csgo|since}}此问题已得到修复,允许音景同时播放多个相同的音效 | |||
{{clarify|是否已在CSGO前的起源游戏/分支中修复?}} | {{clarify|是否已在CSGO前的起源游戏/分支中修复?}} | ||
Line 120: | Line 119: | ||
==自定义音景== | ==自定义音景== | ||
===创建=== | ===创建=== | ||
音景脚本的语法和 | 音景脚本的语法和{{L|Soundscripts}}有很多相似之处,但两者仍然是完全不同的体系 | ||
音景需要一些独有的规则,并放置在独立于普通Soundscript的纯文本文件中。通常会命名为<code>soundscape_mall.txt</code>并且可能包含 5 到 30 个不同的音景,这些音景采用以下语法 | 音景需要一些独有的规则,并放置在独立于普通Soundscript的纯文本文件中。通常会命名为<code>soundscape_mall.txt</code>并且可能包含 5 到 30 个不同的音景,这些音景采用以下语法 | ||
{{bug|如果音景名字过长,则可能音景实体无法在游戏中触发,尽管仍可以通过控制台触发,目前尚不清楚具体的最大字符上限}} | {{bug|hidetested=1|如果音景名字过长,则可能音景实体无法在游戏中触发,尽管仍可以通过控制台触发,目前尚不清楚具体的最大字符上限}} | ||
{{tip|可以使用{{code|<nowiki>#include</nowiki>}}来嵌套其他音景文本}} | {{tip|可以使用{{code|<nowiki>#include</nowiki>}}来嵌套其他音景文本}} | ||
{{pre| | {{pre| | ||
Line 139: | Line 138: | ||
===常见参数=== | ===常见参数=== | ||
; <code>wave < | ; <code>wave <{{L|string}}></code> | ||
: 要播放的音频文件名称,路径相对于<code>game\sound\</code>目录{{tip|尽管键值名称如此,但实际可以播放游戏支持的任何音频格式}} | : 要播放的音频文件名称,路径相对于<code>game\sound\</code>目录{{tip|尽管键值名称如此,但实际可以播放游戏支持的任何音频格式}} | ||
<!--Not explicitly mentioning MP3: while only WAV and MP3 are supported in vanilla first-party titles, third-party games and mods can add other types (ex: Black Mesa adds Ogg Vorbis).}}--> | <!--Not explicitly mentioning MP3: while only WAV and MP3 are supported in vanilla first-party titles, third-party games and mods can add other types (ex: Black Mesa adds Ogg Vorbis).}}--> | ||
; <code>volume < | ; <code>volume <{{L|normal}}></code> | ||
: 1为最大音量,0为静音 | : 1为最大音量,0为静音 | ||
; <code>pitch < | ; <code>pitch <{{L|integer}}></code> | ||
: 百分比值,有效范围通常为70-130 | : 百分比值,有效范围通常为70-130 | ||
; <code>music < | ; <code>music <{{L|boolean}}></code> {{ship|only}} | ||
: 音效会被视为游戏音乐,并受到音量设置中音乐设置的影响,类似于[[sound character|声音标识符]]{{code|<nowiki>#</nowiki>}},只是其受[[DSP]]影响并具备空间性 | : 音效会被视为游戏音乐,并受到音量设置中音乐设置的影响,类似于[[sound character|声音标识符]]{{code|<nowiki>#</nowiki>}},只是其受[[DSP]]影响并具备空间性 | ||
[[File:Sound_attenuation.jpg|right|200px]] | [[File:Sound_attenuation.jpg|right|200px]] | ||
Line 154: | Line 153: | ||
: 同上,但音效从玩家附近的任意位置发出 | : 同上,但音效从玩家附近的任意位置发出 | ||
; <code>origin <origin></code> {{l4d|since}} | ; <code>origin <origin></code> {{l4d|since}} | ||
: 在特定坐标播放音效,格式为<tt>"0,0,0"</tt>不同轴的坐标必须以逗号进行分割,但可以包含前后空格 {{note|功能上类似于<code>position</code> | : 在特定坐标播放音效,格式为<tt>"0,0,0"</tt>不同轴的坐标必须以逗号进行分割,但可以包含前后空格 {{note|功能上类似于<code>position</code>,但在何处播放音效完全由脚本定义。仅适用于单张地图专用的音景,因为在其他地图里你无法更改声音发出的位置}} | ||
; <code>attenuation < | ; <code>attenuation <{{L|float}}></code> | ||
: 当玩家视野远离音源时,音效音量下降的速度。只有在指定position的情况下有效。默认值为1.00。值越低,声音的半径就越大。相反,值越高,声音的半径就越小。请参见上图示例 | : 当玩家视野远离音源时,音效音量下降的速度。只有在指定position的情况下有效。默认值为1.00。值越低,声音的半径就越大。相反,值越高,声音的半径就越小。请参见上图示例 | ||
; <code>soundlevel <string></code> | ; <code>soundlevel <{{L|string}}></code> | ||
: 可用于代替<code>attenuation</code>,接受[[Soundscripts#SoundLevel|引擎提供的预设值]]. | : 可用于代替<code>attenuation</code>,接受[[Soundscripts#SoundLevel|引擎提供的预设值]]. | ||
{{warning|所有包含空格的键值都需要用双引号括住}} | {{warning|所有包含空格的键值都需要用双引号括住}} | ||
; <code>suppress_on_restore < | ; <code>suppress_on_restore <{{L|boolean}}></code> | ||
: 防止在加载存档后重新播放音效{{tip|可用于音景内播放的音乐}} | : 防止在加载存档后重新播放音效{{tip|可用于音景内播放的音乐}} | ||
Line 186: | Line 185: | ||
循环播放音效,不允许随机值 | 循环播放音效,不允许随机值 | ||
{{note|除非有标记点,否则音效将不会缩放,详见 | {{note|除非有标记点,否则音效将不会缩放,详见{{L|Looping a Sound|如何创建循环音效}}}} | ||
{{bug|如果触发了另一个包含相同循环播音效的音景,但该声音具有不同的音高(Pitch)值,则声音将停止播放,除非从不包含该声音的音景重新触发前者}} | {{bug|hidetested=1|如果触发了另一个包含相同循环播音效的音景,但该声音具有不同的音高(Pitch)值,则声音将停止播放,除非从不包含该声音的音景重新触发前者}} | ||
{{clr}} | {{clr}} | ||
====playrandom==== | ====playrandom==== | ||
Line 215: | Line 214: | ||
{{warning|注意不要在该组中指定任何循环音效,因为即便切换到不同的音景,它们也无法被停止播放}} | {{warning|注意不要在该组中指定任何循环音效,因为即便切换到不同的音景,它们也无法被停止播放}} | ||
:{{note| | :{{note|如果切换到不同的音景,即便是以MP3为格式的非循环音效也无法被停止(已在{{css}}中测试{{confirm}})}} | ||
{{clr}} | {{clr}} | ||
Line 241: | Line 240: | ||
; <code>name</code> | ; <code>name</code> | ||
: 需要播放的音景名称 | : 需要播放的音景名称 | ||
; <code>position < | ; <code>position <{{L|integer}}></code> | ||
: 用于偏移子音景每个位置的索引值 | : 用于偏移子音景每个位置的索引值 | ||
: 例如,如果偏移值为2,则子音景中位于位置0、1、2、3播放的音效,在主音景中会偏移到位置2、3、4、5 | : 例如,如果偏移值为2,则子音景中位于位置0、1、2、3播放的音效,在主音景中会偏移到位置2、3、4、5 | ||
; <code>positionoverride < | ; <code>positionoverride <{{L|integer}}></code> | ||
: 强制子音景中所有指定位置的音效从主音景的一个位置发出。 | : 强制子音景中所有指定位置的音效从主音景的一个位置发出。 | ||
; <code>ambientpositionoverride < | ; <code>ambientpositionoverride <{{L|integer}}></code> | ||
: 强制子景观中所有未指定位置的音效(即环境音)从主音景的一个位置发出。 | : 强制子景观中所有未指定位置的音效(即环境音)从主音景的一个位置发出。 | ||
{{clr}} | {{clr}} | ||
Line 266: | Line 265: | ||
} | } | ||
}} | }} | ||
;dsp_spatial < | ;dsp_spatial <{{L|integer}}> | ||
;;dsp_volume < | ;;dsp_volume <{{L|float}}> | ||
设置当前[[DSP]]预设。{{code|"dsp" "1"}}将从附近 | 设置当前[[DSP]]预设。{{code|"dsp" "1"}}将从附近{{L|material|材质}}的{{L|$surfaceprop|表面属性}}中提取 | ||
对于参数列表,请查看<code>scripts\[[dsp_presets|dsp_presets.txt]]</code>文件。可能需要使用如 | 对于参数列表,请查看<code>scripts\[[dsp_presets|dsp_presets.txt]]</code>文件。可能需要使用如{{L|VPKEdit}}之类的软件从游戏VPK中提取文件。要预览DSP预设,请在控制台使用<code>room_type <[[int]]></code>指令 | ||
{{note|在为需要用于许多不同场景的音景设置预设时要谨慎使用}} | {{note|在为需要用于许多不同场景的音景设置预设时要谨慎使用}} | ||
Line 305: | Line 304: | ||
} | } | ||
}} | }} | ||
选择一个自定义 | 选择一个自定义{{L|soundmixer|混音器}},混音器控制一组音效的优先级和音量,关于如何新建混音器,参见<code>scripts\soundmixers.txt</code>(默认情况下始终使用Default_Mix作为模板) | ||
{{clr}} | {{clr}} | ||
===示例=== | ===示例=== | ||
Line 380: | Line 379: | ||
}} | }} | ||
{{warning|在音景中使用MP3音频可能会减小自定义地图大小,但不建议用于循环音效。可能会发生"rndwave"播放的第一个文件在time值的半数时间后突然停止播放的情况,在这种情况下则需要将time值翻倍(本示例中为418),但代价是音效播放两次后会暂停。建议使用ADPCM压缩的 | {{warning|在音景中使用MP3音频可能会减小自定义地图大小,但不建议用于循环音效。可能会发生"rndwave"播放的第一个文件在time值的半数时间后突然停止播放的情况,在这种情况下则需要将time值翻倍(本示例中为418),但代价是音效播放两次后会暂停。建议使用ADPCM压缩的{{L|WAV}}音频代替,详见{{L|Compression_(Source_1)#Audio_Compression}}}} | ||
===储存与使用自定义音景=== | ===储存与使用自定义音景=== | ||
Line 414: | Line 413: | ||
{{soundscape lists}} | {{soundscape lists}} | ||
{{ACategory|Sound System}} | |||
{{ACategory|Level Design}} | |||
{{ACategory|Plain text formats}} | |||
{{ACategory|Plain text files}} | |||
{{ACategory|Tutorials}} <!-- due to XBLAH's Modding Tool --> |
Latest revision as of 07:24, 20 May 2025
Soundscape(音景)是一种音效脚本,用于向地图添加环境音效,它在地图中的数量没有严格限制,只需一个实体即可完成所有步骤,并且不会产生任何网络开销。音景通常为循环音效和随机音效的组合,这些声音可以通过从8个可分配的目标位置之一发出;同时还可以强制使用DSP 和Soundmixer
每次只能同时播放一个音景,并且其中的任何声音都无法用I/O系统控制,当另一个音景启用时,游戏会自动淡入淡出


- 在不正常编译VVIS的情况下(如:以快速模式(
-fast
)编译),音景将无法正常工作 - 除非音频文件有标记点,否则它们无法作为循环音效,详见Looping a Sound
- 在大部分起源游戏中,音景无法同时播放统一音效,即便音调,音量和SoundLevel不同,有关解决方法详见下方
- 玩家出生点 至少应位于一个音景的半径范围内(或边界框 ),否则玩家将在没有音景播放的情况下生成
音景
浏览音景
音景通常位于游戏的scripts\
文件夹下多个以soundscapes_
为前缀的文本文件。每一个音景都由全局清单scripts\soundscapes_manifest.txt
控制,其中列出了游戏应读取的所有音景脚本。通过这种方法加载的音景可以用于游戏中的任何地方,即便它们是为某个场景专门设计的
音景同时还可以以地图专用的方法进行使用
scripts\soundscapes_<地图名>.txt
此处的<地图名>
应为它们所对应的BSP文件名称。这种音景可以在不修改全局清单的情况由地图自动读取,但也只能用于该地图中。


maps/<地图名>_soundscapes.txt

你可以在页面底部找到部分游戏的音景列表链接,以及社区对部分音景效果的描述
你也可以在游戏中使用PlaySoundscape
指令来显示当前所有可用音景,输入任意字符,游戏的自动填充功能便会显示所有符合条件的音景
配置音景
音景只能通过以下实体进行配置:
还有其他实体可以启用音景,但只有上述这些真正定义了音景的属性。其他实体将以此为主实体远程控制音景 每当这些实体启用音景的时候,任何具备预定义位置的音效都将会从音景实体指定的Sound Position实体位置触发

<game>/scripts/soundscapes_manifest.txt
文件找到。要更好的理解音景,详见下方 。激活音景
任何已启用并被玩家触发的音景实体,都会播放其自身(或主实体)指定的音景条目,音景本身会持续播放,即便最初启用自身的实体已被禁用,除非玩家触发了另一个音景,或者地图发生变化

soundscape_flush
将取消当前正在播放的音景
音景相关实体
音景可由以下实体播放:
- env_soundscape
- env_soundscape_triggerable (通常由trigger_soundscape 激活)
- env_soundscape_proxy (通常反过来激活env_soundscape或者env_soundscape_triggerable)
音景本身是基于点实体 ,但是当玩家处在所属半径内并且视野内可见时,即可触发它们
不过env_soundscape_proxy和env_soundscape_triggerable是两个例外,前者通过env_soundscape或者env_soundscape_triggerable触发;后者通常由trigger_soundscape触发
由于一次只能播放一个音景,因此如果同时触发一个或多个音景,则位置最近的优先(音景实体的半径范围始终优先于trigger_soundscape的边界框)
注意音景不会玩家离开其半径范围或者视野内不可见而停止播放

音景放置
一般来讲,只放置你绝对需要的音景数量。先选择一个需要全局播放的音景,之后在每个特殊位置(如房屋,发电机房)放置特定于该场景的次要音景。确保每个具有位置的局部音效都有自己的主音景,并指定了适当的目标实体。
一旦你大致了解了音景的位置,你就可以开始添加/配置触发音景的实体,并创建一种蓝图,说明音景如何从一个流向另一个。在许多情况下,你会放置实体来阻挡对比位置的所有出口,并触发全局音景。
基本上,目标是预测玩家在整个地图上的移动,并以一种始终激活正确音景的方式阻挡每个区域。
在音景内多次使用同一音效
目前在大多数起源游戏/分支中,一次只能在音景内同时播放一个或多个相同的音效,即便音量,音调和SoundLevel有差异
(存在于自 以来)此问题已得到修复,允许音景同时播放多个相同的音效
有一种不是办法的办法,即复制粘贴并重命名音效,适用于一些非常短的音效(如灯光的嗡嗡声)但不推荐用于其他音效,因为会增加冗余的文件大小。这是V社在CSS版野战训练营中使用的解决方法:在T家厨房里,有两个发出嗡嗡声的荧光灯。但第一个音效是"ambient/machines/fluorescent_hum_1.wav
"而第二个音效是"ambient/machines/fluorescent_hum_2.wav
"。这两个音效完全一样,但由于上述问题必须使用不同的名字才能用于音景
另一个示例如下:我们有三盏需要发出嗡嗡声的荧光灯。为了使其正常运作,音景文件和实体配置应该如下
"soundscape.demovdc" { "playlooping" { "volume" ".65" "pitch" "92" "channel" "CHAN_AUTO" "position" "0" "attenuation" "1.2" "wave" "ambient\machines\fluorescent_hum_1.wav" } "playlooping" { "volume" ".65" "pitch" "92" "channel" "CHAN_AUTO" "position" "1" "attenuation" "1.2" "wave" "ambient\machines\fluorescent_hum_2.wav" } "playlooping" { "volume" ".65" "pitch" "92" "channel" "CHAN_AUTO" "position" "2" "attenuation" "1.2" "wave" "ambient\machines\fluorescent_hum_3.wav" } }
尽管大多数起源游戏/分支无法同时播放多个相同的声音,但在某些情况下,似乎可以使用频道在不同位置多次播放相同的声音。经过在不同情况下的多次测试和源代码解读,这似乎被认为具备可行性。例如,我们使用不同的频道(如CHAN_STATIC、CHAN_STREAM、CHAN_AUTO等)而不是使用不同的名称。由于一系列尚不清楚的原因,这并不总是有效。有关更多信息,详见Soundscript
自定义音景
创建
音景脚本的语法和Soundscripts 有很多相似之处,但两者仍然是完全不同的体系
音景需要一些独有的规则,并放置在独立于普通Soundscript的纯文本文件中。通常会命名为soundscape_mall.txt
并且可能包含 5 到 30 个不同的音景,这些音景采用以下语法


<音景名称> { <音景规则> { <规则键值> ... } ... }
常见参数
wave <string >
- 要播放的音频文件名称,路径相对于
game\sound\
目录提示:尽管键值名称如此,但实际可以播放游戏支持的任何音频格式
volume <normal >
- 1为最大音量,0为静音
pitch <integer >
- 百分比值,有效范围通常为70-130
music <boolean >
(仅存在于之中)
- 音效会被视为游戏音乐,并受到音量设置中音乐设置的影响,类似于声音标识符#,只是其受DSP影响并具备空间性
position <0-7>
- 地图内八个可发出音效的位置(由地图制作者定义)
position random
- 同上,但音效从玩家附近的任意位置发出
origin <origin>
(存在于自以来)
- 在特定坐标播放音效,格式为"0,0,0"不同轴的坐标必须以逗号进行分割,但可以包含前后空格
注意:功能上类似于
position
,但在何处播放音效完全由脚本定义。仅适用于单张地图专用的音景,因为在其他地图里你无法更改声音发出的位置 attenuation <float >
- 当玩家视野远离音源时,音效音量下降的速度。只有在指定position的情况下有效。默认值为1.00。值越低,声音的半径就越大。相反,值越高,声音的半径就越小。请参见上图示例
soundlevel <string >
- 可用于代替
attenuation
,接受引擎提供的预设值.

suppress_on_restore <boolean >
- 防止在加载存档后重新播放音效
提示:可用于音景内播放的音乐
随机值
一些参数接受“最大”和“最小”范围,例如
"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" { //每1-4秒间播放一次 "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" } }
在time
键值指定的最短与最长时间之间随机播放音效。允许随机值
Playrandom需要所有wave
键值位于rndwave
内部(即便只有一个音频)每次执行规则时都会随机播放音效。

playsoundscape
"SubScape" { "playsoundscape" { "name" "GenericIndoor" //子音景音量缩放到50% "volume" "0.5" //从位置0发出所有带位置的音效 "positionoverride" "0" //从位置1发出所有环境音效 "ambientpositionoverride" "1" } }
播放完整的音景,子音景中的DSP预设将被忽略
name
- 需要播放的音景名称
position <integer >
- 用于偏移子音景每个位置的索引值
- 例如,如果偏移值为2,则子音景中位于位置0、1、2、3播放的音效,在主音景中会偏移到位置2、3、4、5
positionoverride <integer >
- 强制子音景中所有指定位置的音效从主音景的一个位置发出。
ambientpositionoverride <integer >
- 强制子景观中所有未指定位置的音效(即环境音)从主音景的一个位置发出。
dsp <integer>
// Disable DSP and play no ambient sounds "Empty" { "dsp" "0" "dsp_volume" "1.0" } //DSP room type with a DSP spatial type "Empty2" { "dsp" "40" "dsp_spatial" "119" "dsp_volume" "1.0" }
- dsp_spatial <integer >
- dsp_volume <float >
设置当前DSP预设。"dsp" "1"将从附近材质 的表面属性 中提取
对于参数列表,请查看scripts\dsp_presets.txt
文件。可能需要使用如VPKEdit 之类的软件从游戏VPK中提取文件。要预览DSP预设,请在控制台使用room_type <int>
指令


dsp_volume
来控制DSP效果的强度

"dsp_spatial" "n"
和房间DSP类型一起分配给音景fadetime <float>
"SoundScapeName" { "fadetime" "1.0" "playlooping" { // ... } }
音效淡入的时间(以秒为单位)
soundmixer <string>
"quiet" { "soundmixer" "Citadel_Dialog_Only" // ... }
选择一个自定义混音器 ,混音器控制一组音效的优先级和音量,关于如何新建混音器,参见scripts\soundmixers.txt
(默认情况下始终使用Default_Mix作为模板)
示例
"swamp.water.slow" { "dsp" "1" "dsp_spatial" "20" "dsp_volume" "1.0" "fadetime" "1.0" "soundmixer" "outside_swap_mixer" "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" "origin" "3424.676025, 381.604095, 152.927948" "rndwave" { "wave" "ambient/wind/wind_med1.wav" "wave" "ambient/wind/wind_hit1.wav" } } }
循环播放MP3音效
MP3格式无法循环播放,仅建议用于非循环声音。不过,可以使用rndwave播放相同的文件来模拟循环,并将时间值设置为这些文件的长度:
//////////// 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" } } }

储存与使用自定义音景
引擎使用scripts/soundscapes_manifest.txt
作为清单来查找全局音景文件,但也可使用scripts/soundscapes_%地图名%.txt
来逐地图加载音景,所有地图专用音景都将在地图加载时读取


maps/%地图名%_soundscapes.txt
当不需要/不可能修改音景清单时,应使用地图专用音景(例如没有独立游戏目录的自定义地图),此文件也可以被压缩进地图中
可以通过在底部添加新的“file”行将新的音景添加到清单中,如下所示:
"file" "<文件路径>"


maps/%地图名%_level_sounds.txt
以类似的方式进行挂载,但地图专用音景必须放置在scripts
文件夹并带有soundscapes_
前缀使用“XBLAH的模组制作工具”创建音景
音景现在可以通过 XBLAH's Modding Tool进行创建或修改,其工具界面提供了集成的资源管理器来直观的创建新的音景,这可以让用户预览所有已挂载的音频(无论是VPK内音频或松散未打包音频),让用户单独查看音景文件,并预览音景是如何在游戏内播放的
如何使用
可以通过工具内部的Sounds > Soundscape Editor工具栏使用音景编辑器
参见
- env_soundscape
- env_soundscape_proxy
- env_soundscape_triggerable
- trigger_soundscape
- Notepad++ VDF languages
|