大家好,今天我们将解释(并聆听!)2.0 版本中的声音改进。
工作声音
实体在活动时发出的声音通常是单个循环的主声音,某些实体可能会在它们变得活跃或停止工作并闲置时播放声音。此外,还有一些属性和修改器可用于更多地控制工作声音。但是,一个循环声音的作用很有限。
将机器的声音与其动画同步非常重要。我想到了重音的概念。在特定动画的特定帧播放的较短声音。最初,我预计一台机器会获得两到三个重音来补充其主要声音,仅此而已。但伊恩有其他想法。
从铸造厂开始,除了主要声音之外,还有十二种重音来强调动画的各个组件和部分。他并没有就此止步,现在有些机器具有更复杂声音设置。我们可能会在晚些时候展示它们,但现在让我们回到铸造厂。
星期五报道 #396 - 改进2.0 版本中的声音_视频01
右侧是可视化工作声音,较大的方框代表主要声音,较小的方框代表各个重音。
尝试加快或减慢机器的声音以匹配其动画速度(模块、信号、低功率)效果不佳(尤其是减慢速度)。这就是为什么在 1.1 中很少使用它,我们只是加快了声音速度,例如蒸汽机声音就是这样工作的。但是,将许多较短的声音直接与特定的动画帧相关联可以自然地解决这个问题。
星期五报道 #396 - 改进2.0 版本中的声音_视频02
左侧是快速铸造厂,右侧是非常慢的铸造厂。
多种主要工作声音
既然我们已经以重音的形式为一台机器提供了多种声音,那么我们是否也可以通过拥有多种主要声音来做一些有趣的事情呢?如果我们将它与我们的其他一些技巧结合起来是可以的。主要是行为匹配,即将声音的音量或播放速度与机器的活跃速率相匹配。活跃速率是机器报告其正在做的事情的速度,它可以很简单,例如在工作时报告 1.0,否则报告 0.0。
它可以是车辆的速度,或者更有创意的东西。让我们看几个关于车辆的示例,看看我们可以在 2.0 中用它做什么。
在 1.1 中,汽车有一个主要声音,汽车行驶得越快,播放的速度就越快。这是有效果的,但我们可以做得更好。现在让我们使用两种声音,怠速声音和行驶声音,随着车速的增加,怠速声音的音量迅速减小直至完全静音,同时行驶声音的音量从静音增大到最大音量。在某些时候,驾驶声音的音调也开始增加,尽管按照比例,但不会变得太高。
坦克也使用了同样的处理,并为其履带添加了单独的声音。
星期五报道 #396 - 改进2.0 版本中的声音_视频03
当然,火车也不可能被忽视,火车在高架铁轨上的声音不同。
星期五报道 #396 - 改进2.0 版本中的声音_视频04
机器的新增声音
您是否注意到车在经过不同的图块或资源时发出的声不同音,或者之前视频中车厢门发出的声音?它们不像工作声音那样很好听,因此需要采用一种不同的方法。
我们可以给每个实体添加特殊的逻辑来处理额外的声音,我们过去已经在某些事情上这样做过,例如炮塔在更新的版本中具有旋转声音。但这仅当具有附加声音的实体数量非常小时才可以,当你尝试向大量实体(例如采矿钻机和机器人)添加声音时,这会变得低效且浪费。
我们真的很想要实现这个功能,所以一个新系统诞生了,命名为“附加声音”。一堆新旧实体已经使用了这个系统,例如,大型采矿钻机(上次显示它只有占位符声音)。
星期五报道 #396 - 改进2.0 版本中的声音_视频05
环境声音
我们对 1.0 版本有很多改进想法,但当时无法实现。一是希望可以设计更身临其境的环境系统,而不仅仅是一种风声。我设计了一种风系统,当你放大画面时,它会播放不同的风轨,一个是非常基本的,然后是一个更有趣的风轨,当你缩小时(两者之间有交叉淡入淡出)。会演变成具有半持续氛围的想法,例如在乌尔肯星上,您可以听到远处火山传来的低压声,并有不同长度的停顿。
但是如何根据玩家的位置添加更具体的环境声音呢?为此,我们无法使用环境触发框或预绘制区域这类游戏行业常用方法,因为我们的地图是生成的,而不是手工制作的。因此我们提出了根据特定条件向图块和实体添加声音的想法。
在我们掌握了这项技术后,我开始添加声音,例如水体的轻柔拍打声和树木树叶的沙沙声。然后我意识到我们可以利用声音营造出有隐形生物的感觉,例如树上的小型物体是否是敌对外星鸟类,只有当玩家位于树的一定半径内且数量高于指定阈值时,它们才会发挥作用。每个声音之间还有一个随机停顿。进一步考虑这个想法,我们可以指定它们是否根据一天中的时间或相机的缩放等级进行播放。
星期五报道 #396 - 改进2.0 版本中的声音_视频06
下次当你放火烧森林时,请记住这可能是某人的家。
其他声音改进
物品声音
当我们发布 1.0 版本时,Kovarex 告诉我,他希望在游戏中添加将特定于物品放入库存的声音。当时我们只有一种移动物品的声音,虽然还可以,但可能有点无聊,而且没有任何特殊的反馈。他解释说,它们需要有点像电线连接和断开的声音,我理解他的意思。
通过反复试验,我弄清楚了哪些声音可以组合在一起(例如小型和大型金属物品)以及哪些声音应该是独特的。有些声音比其他声音需要更多的迭代,因为有时很难弄清楚声音应该是怎么样的。比方说,速度模块的声音是什么样的?在这种情况下,我最终使用了合成声音,因为它听起来比较抽象。
星期五报道 #396 - 改进2.0 版本中的声音_视频07
先进的音量控制
团队中有人提到环境声音对其音量有着更多的控制,Ian 询问是否将其用于其他声音。我找不到任何不这样做的理由,所以我将所有这些参数放到高级音量控制属性中。因此我们可以做一些巧妙的事情。
玩家可以随距离的衰减从默认的线性更改为听起来更自然的指数曲线。如果您想做一些不同的事情,还可以选择对数、余弦或 S 曲线或根本不衰减。我们可以以类似的方式改变声音随缩放程度的衰减方式。可以指定天黑阈值,以便仅在夜间播放某些声音。该工具箱中的最后一个工具是动态声音修改器。这些使我们能够仅针对特定的游戏环境更改声音的大小。动态音量调节器仅在菜单中或提示和技巧中、驾驶车辆时或火车在高架铁轨上时应用。
声音聚合
在某些情况下可能需要同时播放很多声音。与许多撕咬者的战斗是一个典型的场景,撕咬者和炮塔的攻击会产生很多声音。如果对给定时间内可以播放的声音数量没有硬性限制,那么它可能很快就会变成噪音墙。
声音聚合是解决这个问题的一种方法,当一个声音多次播放时,超过一定限制后将被剔除或降低其音量。该系统已经在 1.1 中出现,但它只能用于特定场景中的少数声音。 2.0 系统得到了极大的改进,可以用于大多数声音,并且添加了对调整哪些声音的更多控制。通过这些更改,那些有问题的场景的音景现在已得到控制。
声音优先级
与声音过多问题相关的是,有时没有足够的资源来处理更重要的声音,例如 GUI 交互效果或某些玩家操作。显而易见的解决方案是引入声音优先级系统,这正是我们所做的。首先,玩家的一些行为(例如建造)被赋予了更高的优先级,并且一些刺耳的声音被取消了优先级。
测试套件
在我开始研究各种与声音相关的问题和功能后不久,我也开始构建我们的音频测试套件。我们首先创建了一个简单的框架,以便能够测试至少基本的音频功能,例如检查声音是否在合适的时间播放。该套件随着时间的推移而不断发展,现在涵盖了对现有功能和各种错误的修复,以及全新的功能(以及全新的错误修复)。
事实证明,拥有这样的测试套件在对游戏重新设计或扩展音频系统的不同部分时非常有帮助,并且对于确保那些讨厌的错误不会再次出现非常有帮助。
音乐
我相信你们都想听听《异星工厂:太空时代》中的新音乐,但我们会将其留到未来的《异星工厂:太空时代》中,敬请期待!
所有这些新的或改进的功能,除了附加声音的自定义逻辑之外,都可以在游戏原型中使用,模组制作者将能够以与我们内部相同的方式使用它们。