跳转到内容

Trainz/containers/soundscript 容器

来自维基教科书,开放的书籍,面向开放的世界
logo
Trainz 注释参考
TOC | BeginningsFun | AM&C | Creation | InBook Refs ORP Refs:  • Index • Containers • Kinds • Tags | Appendixes  • Vers

用于定义资产声音的容器类型标签。Soundscript 容器能够控制“相对响度”、衰减范围、随机范围,并具有特定触发器。

支持的标签

[编辑 | 编辑源代码]

每个 soundscript 子容器都支持以下标签。每个标签都与其默认值一起显示。

规范与示例
规范
soundscript (container)
{
soundscript-ID (Optional-Name[note 1])
   repeat-delay  0,0
   distance      50,150
   ambient       0
   attachment    ""
   nostartdelay  0
   priority      1
   trigger       ""
   volume        1
   value-range   0,0
   sound
   {
   }
}
简单示例
soundscript
{
   dayloop   (optional name)
   {
     ambient 1
     repeat-delay  20,25[note 2]
     distance      10,100
   
     sound (subcontainer)[note 3]
     {                      
       dogbark.wav 
       lildogbark.wav
       bigdogbark.wav 
       dogsallbark.wav
     }
   }
} (adapted: KB dogbark,<kuid:52682:39098>)

 

  • 在上面的示例中,该资产很可能只会被听到一次,除非它在附近被停止(车站、岔线?),并且声音列表中随机选择了一个声音,因此会给停在附近的耳朵带来不同的听觉体验。

 

类型:布尔值 — 除 1 和 0 之外的值将生成错误消息!
默认值:0
强制:否
描述:如果为真,则此为“环境”声音,环境声音以 2D 方式播放,不使用世界中的 3D 定位,只影响音量。与位置声音不同,环境声音可以是立体声。

attachment

[编辑 | 编辑源代码]
类型:附件点
默认值:""
强制:否
描述:要将声音源附加到的点。附件点在创建过程中在网格文件中指定。

为什么声音不应该有附件点,玛蒂尔达、乔治和米莉森问道。为什么,当声音被路线构建者以“路线轨道周围的可听场景”的形式放置时,就像他放置一棵树一样。就像视觉效果一样,声音效果由建模师用来提供一种味道和真实的印象——因为没有一个两秒钟的声音文件可以模仿持续声音的真实性。 

类型:小数对 — 米:radius_Begin_fading,radius_cut_off_&_stop
默认值:50,150
强制:否
描述:从源头算起的声音可听距离范围,以为单位。
  • 最小距离定义了声音保持 100% 音量的半径。
  • 超过该距离,声音音量将自然衰减。
  • 最大距离定义了一个半径,超过该半径,游戏将不再播放声音。这并不意味着声音衰减行为按此值缩放,以便在最大距离处衰减到零,而是声音将在该点突然切断.提示:由内容创作者选择合适的距离 - 较小的距离对性能更好,因为资产影响半径越早被越过,CPU 的进程流程越早从循环周期中将其丢弃,并将注意力集中到其他事情上。帧率抓取者请注意!那个漂亮的音效是有代价的。

nostartdelay

[编辑 | 编辑源代码]
类型:布尔值
默认值:0
强制:否
描述:如果添加并为真,则此标签指定声音将在触发后立即播放。默认情况下,声音在 0 到 4 秒之间有一个随机的开始延迟。在大多数情况下,应保持开始延迟处于活动状态,因为将其关闭可能会在多个相同声音靠近时导致明显的音频伪影。
类型:整数
描述:设置声音的优先级,如果没有足够的声卡可用,则会优先播放优先级更高的声音。默认为 1,可以为负数。

repeat-delay

[编辑 | 编辑源代码]
类型:小数对
默认值:0,0
强制:是 (3.4)
描述:声音播放完后延迟的时间范围(以秒为单位),然后再次播放声音。要设置恒定的延迟,请将这两个值设置为相同的值,或者只提供其中一个值,否则将在它们之间随机选择一个值。与触发事件一起使用时(请参阅“trigger”标签),正值表示声音不应该重复,而应该等待再次触发。
类型:容器
默认值:{}
强制:是
描述:包含要播放的声音文件的键/字符串列表。如果列表中有多个条目,则将从列表中随机选择一个文件。此容器中每个标签的值都是 WAV 音频文件的名称。文件名相对于资产的基目录,即相对于配置文件的位置。列表中使用的键并不重要:Trainz 的列表约定是从零开始对每个选项进行数字编号,虽然强烈建议遵循此约定,但没有技术上的要求。
有效的 WAV 文件是
  • 未压缩的。
  • 8 或 16 位
  • 单声道、立体声或环绕声(截至 3.7 版本,环绕声尚未完全测试)
采样率可以是 22kHz(22,050Hz)或 44kHz(44,100Hz)。较高的采样率使文件大小翻倍,但质量没有明显提高,不建议使用。对于某些目的,有额外的要求 - 例如,方向声音必须是单声道的。
类型:字符串
默认值:""
强制:否
描述:“trigger”标签为你的声音赋予一个名称,该名称可以允许它从 TrainzScript、动画和某些预定义事件中播放。(至少有一个这样的“预定义事件”是在将 soundscript 容器包含在“kind mojunction”的 config.txt 文件中时使用“toggle”一词。这将使声音在每次切换道岔时触发)

value-range

[编辑 | 编辑源代码]
类型:浮点数对
默认值:0,0(关闭)
强制:否
描述:2 个数字,其中数字不相同,它们设置声音播放的开始时间和结束时间。午夜是 0.5,中午是 0.0 或 1.0。(待定。这有点含糊不清。)
类型:小数
默认值:1
强制:否
描述:指定声音的音量增益。默认为 1 (100%)。

soundscript-ID

[编辑 | 编辑源代码]
类型:stringvalue,一个标识符名称
默认值:""
必填:否,除非声音脚本容器管理的多个声音。(见下面的早晨和晚上示例)
描述:指定用于连接到软件其他部分的声音句柄或文本标识符。

索引_标签_&_容器 中其他带有“ -ID”后缀的容器术语类似。

示例 Config.txt 文件

[编辑 | 编辑源代码]

具有不同昼夜背景声音的地图资产的 示例 config.txt 文件

地图文件中的声音脚本

[编辑 | 编辑源代码]
 kind map
 kuid <KUID2:497853:13052:3>
 soundscript
 {
   morning
   {
     ambient 1
     value-range 1, 0.1
     volume 0.3
     sound
     {
       0 ctry_day_1.wav
       1 ctry_day_2.wav
     }
   }
   night
   {
     ambient 1
     value-range 0, 0.9
     volume 0.3
     sound
     {
       0 night_loop.wav
     }
   }
 }

可放置的场景音效的声音脚本

[编辑 | 编辑源代码]

这是一个实际的 TB v1.3 资产升级到 V2.7(TC1&2)——这个级别是一个有用的中间状态,包含大多数必要的主要更改,并作为检查,消除了现在非法的、以前有用的快速分类 TBS 标签,例如区域、类型、资产名称和其他此类已停用的关键字,例如自动动画(其操作被合并到诸如网格表 容器 和自动创建参数之类的结构中)。

kind                                    "scenery"
light                                   1
category-class                          "BU"
trainz-build                            2.7
username                                "KB trainannouncer sound-aRus"
category-region                         "00"
category-era                            "1960s;1970s;1980s;1990s;2000s;2010s"
description                             "username = 'KB trainannouncer sound-aRus'

--  This is a 27 second long muted platform soundtrack with indistinct but obvious near-continuous distant loudspeaker announcement.

Original description:
--  This is a sound add-on.
--  To use it you must place this object in Surveyor at or adjacent to any area that you wish to hear this sound from.

credit: Thanks to USER.RO for creating the sound regions object.  It makes the creation of objects in this package easy & quick.
original trainz-build                            1.3

Rev-A 2015-0115 - by Fabartus - update to update ranges... 
and eliminate these obsolescent tags:

asset-filename                          'KB_trainannounce'
autoanimation                           1
region                                  'AAA Sounds'
type                                    'Trains'
--------- 

This faulty asset originated in C:\TS09-SP3\UserData\editing 2014-1008

Asset foldername: kuid2 52682 39352 0;v2-6;Platform sound effect;KB Trainannouncer sound-aRus
Original folder:  C:\TS09-SP3\editing\KB trainannounce
******************************************************************************************
soundscript
{
  dayloop
  {
    repeat-delay                        20,38
    distance                            10,80
   
    sound
    {
      trainannounce.wav                 
    }
  }
} 
mesh-table {
  default {
    mesh               "invisible-platform_body.im"
   auto-create        1  }
} 
thumbnails  {
  0   {
   width 240
   height 180
   image "$Soundeffect screenshot (240).jpg"   }
}
kuid-table {
}


作为修复后的资产,不适合上传,修复的火车制造者可以选择调整排序参数,例如用户名、描述数据和类别-xxx 参数,以适合资产种类的限制。在这种情况下,作为一个相信良好文档的程序员,描述块用于跟踪更改(更改记录),因为从 TS2009 版本开始,合法的备注或评论已从 Trainz 中删除。该示例还展示了对作者原始名称的更改和合规性:尽可能保留相同的短语,并按照相同的顺序,添加扩充和澄清的词语或短语,如果可能的话,并常规地添加更改后缀“ -aRus”。这实际上意味着:Altered(修改)、Repaired(修复)、Upgraded(升级)、Screenshot(屏幕截图);并且 -a 后缀将在 CM 中作为名称参数进行排序。

上面的示例也用于说明另一个要点——C 语言编程实践世界中存在不同的缩进风格。声音脚本容器使用一种这样的格式约定,而最后三个容器使用另一种常见的缩进方法。作为规则,内容管理器将解压缩并生成容器的第一种形式,但 CM & CMP 对其他形式非常宽容,只要字符之间存在空格字符即可。在 C、C++ 和 C# 语言中,不需要这种空格填充,括号字符本身就足以在解析数据元素时进行分隔。Trainz 解析要严格得多,能力也更差。

备注和参考资料

[编辑 | 编辑源代码]
  1. 仅当配置文件中有多个时才需要名称。请参见 地图文件中的声音脚本 示例中的晨昏标签。
  2. 许多较旧的资产在这里缺少第二个数字,这会导致 N3V 的 CM 错误检查中出现故障。
     • 否则,重复之前的延迟将在第一个数字和第二个数字之间随机生成。
     • 使之相等以获得恒定的延迟。
     • 重复延迟为 0,0 使声音成为一个连续循环。
  3. 如果列表中有多个条目,则将从列表中随机选择一个文件。
华夏公益教科书