音频设计经验分享:声音功能的设计与创意表现

2020-02-28 02:53

    在独立游戏《Hunger Apartment》的开发过程中,音频设计师需要在给定的有限的时间和条件下完成整体的声音设计并构建与之相匹配的声音功能,以配合进度上DEMO版本的发布。通过一系列沟通支持和方案规划,项目最终使用了ADX2声音中间件完成了整体的音频设计,并且让音频设计师可以通过工具异地协作,在开发迭代的过程中快速地响应声音内容制作并实现符合预期的声音表现。在本篇内容中,将由负责此阶段声音实现的音频设计师同我们分享他的设计思路和方法,并介绍他如何使用ADX2完成声音设计实现开发团队的声音愿景:



 

一、声音所需的表现方式通常与玩法密切相关,合理的设计可以帮助推进游戏进展

 

蚀狱是一款单玩家操作的,带有故事情节的策略冒险游戏,并由解谜内容贯穿其中。玩家根据进度切换多个角色,在相同场景内的连续地图进行探索并与场景内的其他人物角色、物件发生交互,以推进故事进展。


 


在实际的游戏体验过程中,角色主要可以活动在一栋固定建筑内,建筑内包含不同的楼层、房间和通道,场景内物件丰富,可交互元素众多,并且有相当部分影响游戏进展和玩家感受的情节是需要发生在画外的,所以声音在情景营造和推进游戏进展方面有比较大的创意发挥空间,同时也要能够带给玩家必要的反馈。


通过综合的考量,我们的第一个目标是期望为游戏带来一些影视化的声音感受,游戏内全程的画面表现是平面的2D视角,但希望声音都有3D的效果,为场景增加纵深感受的同时,通过声音给与玩家引导,在声音上突出场景内对特定事物的关注和聚焦同时,也需要能让玩家感受在门外、其他房间、甚至镜头后面正在发生的事情


第二个主要的目标是希望场景内大量相同类型的声音,能有始终有差异化的丰富表现,比如场景内存在的数量众多的房间和门,它们大体上结构相同,但是我们希望每次玩家在开门时都能感受到门后的不确定性,这其中相当的部分会需要声音上的配合,需要让相同的声音有丰富变化,在设计可控的前提下,尽可能地减少意料之中的相同反馈。另外也期望对应不同的剧情进展、状态变化和区域位置变化,整体的声音表现也能够能产生与之相符的变化,所以后续的设计和声音制作将会主要围绕这几个方面开展。

 

二、按照团队需求确定目标、方案和计划


在游戏的DEMO版本开发阶段,我作为声音设计师有幸参与了项目的音频设计和声音制作当中,当正式开始声音制作前,根据同开发团队的沟通和对游戏的实际理解,完成了全局的音频设计方案,敲定了技术选型,并在此基础上构建了声音功能。


围绕先前对游戏玩法的声音表现分析和实际需求考量,整个设计方案包括基本的功能实现、方式方法和预期目标等等,后续的声音工作都是围绕着音频方案进行的,这一方面让后续包括声音的制作都有据可依,另一方面让目标清晰且进度可控。

 

当收到来自开发团队的声音想法和制作需求,作为音频设计第一件需要考虑的事情便是,这个想法/需求,需要配合何种声音功能实现,多种方案下的利弊优势如何取舍,是否同其他声音需求在功能上存在交叉和部分复用,同其他声音之间是否存在关联和影响等等,当我们全局地考虑到这些,就可以明确最终的实施方案,使目标和过程变得容易掌握,并且能够最终符合预期,如同先前介绍的几点主要目标,我们完成了众多的音频功能设计,此次分享则主要挑选了几方面内容作为样例,进行思路和实现方法的说明:

 

1、重复出现的可交互物件,保持声音基本感受不变,但避免单调重复

2、融合并过渡区域&事件的环境氛围声,保证受到影响变化之声音的连续感受

3、对应游戏玩法如角色产生的饥饿、错乱等状态,导致其他声音也受到全局影响

4、对应场景内不同区域,声音的空间感受期望有对应的表现

 

 

这些功能并不局限于一种方法进行实现,通常需要综合的考量,比如某个功能对后续更新的全局影响,是否导致潜在的需求膨胀,以及性能消耗的权衡等等。在此项目中,因为声音部分的工作是异地开展的,且部分声音功能的实现和接入客户端的工作都需要程序支持,所以作为音频设计师同样也考虑到有必要减少对额外接口的依赖和功能开发的需求,故在此次项目中首选的方案都是尽可能的把需要的功能和表现在声音中间件的设计端由音频设计师实现的方法。

 

作为声音团队的一员,有必要对项目即将制作的声音进行设计、规划功能并进行需求验证以便于考量结果是否符合声音制作想法。这大概需要声音制作周期一半的时间,或者声音团队一半的人力。

 

三、构建声音功能以实现声音效果

 

1、以分层的方式处理多样本并设置随机化,丰富单一物件的声音表现

     

 

如先前介绍所说,游戏场景中主要围绕在公寓楼展开,有多种样式的门存在,但主要分为两种,木门和铁门。


工作单元下可以树形查看Cue包含的内容

 

所以我们可以以门的材质和开关,来简单地区分CUE,每个CUE内都包含相同的结构:基础层、材质层,其中基础层是单一的声音,即更接近门本身的开合声,材质层则是一些附属在门上物件的声音,在这个项目中,则是选用了门的荷叶/铰链发出的嘎吱声以及把手的弹簧声还有金属门会发出的共振声等。 

 

在设计工具内,可以通过在CUE内添加轨道,在轨道上添加Voice声音文件,并且轨道内可以增加额外的SubCue来实现和CUE相同的功能,对内含的两个声音文件进行随机播放。

 

轨道内可以包含Voice声音样本和SubCUE,音量的设置是会以乘机叠加

 

无论是定位在轨道或者CUE,我们都可以对声音应用回放音量范围和音高的随机,并且可以设置偏置量。 但对于门来说,音高的随机化可能会导致门听起来的体积感发生飘忽不定的变化,为了保证门本身大小的一致,故并不希望主体有过多的变化,所以仅为已经经过设计的材质层添加了范围为+-1的音量随机范围。

 

点选对象后,属性面板下面可以找到随机化设置

 

同理,游戏内几乎所有物件的声音都做了类似的处理,比如脚步声对应不同的地表前提下,每种脚步声包含了基本层(脚尖+脚跟着地的声音)以及材质层(一些鞋底扭曲摩擦的声音随机), 对于偏重提示性的音效,则主要是在相同质感的两条样本内随机,如获得钥匙、使用钥匙、等等。

 

单一CUE下两种声音样本的随机

 

这样的处理方式极大的丰富了游戏内的声音细节,但系统内播放的声音Voice样本数增加也导致了额外的资源的消耗,但这样的材质声音通常非常简短,并且在此项目中声音被播放的频率通常不高,相比较获得的游戏沉浸感受,这些细节是值得反复推敲的。


原始的声音文件,当打包声音包到客户端的时至会按照预置被转码压缩

 

贴士:通过启用CueLimit功能,可以限制相同的Cue被同时播放的最大数量,当超过限制后,将会根据行为设置停止回放先前最早触发的但仍在播放的Cue,或是最新触发的Cue。

 

 

2、声音的融合、过渡、以及影响

混用分段和分层,实现更为丰富的声音变化,并使之自然过渡:


 

在实际游戏中,有多种玩家操作的角色被追逐的情况,在被追逐的过程中,通常还对应不同的阶段和程度,所以会需要一些相同功能的但分为不同阶段播放的声音,这些声音之间需要互相连接。但因为几乎无法预测玩家可能的停留时间,所以这其中可能包含的循环段落,除了音乐使用Block和音轨的节奏过渡外,也有一些简单的,可以适应大部分应用的方式来处理这种分段声音,

     


 

在此例追逐中,通过使用一些氛围性的环境声来匹配被追逐剧情的各个阶段,简单地来讲,包含追逐发生的前夕(amb_event_start)被追逐的过程(amb_event_switch)以及怪物消失追逐结束(amb_event_end)

 

Track轨道上可以应用Automation自动化曲线,在头尾相接循环的前提下,相比应用EG包络而言,自动化曲线不会导致声音循环时包络产生的GAP

 

在“start”部分,这个声音开始被播放(在此例中以一个音头+循环,两个声音文件同时播放)为开始,被装在同一个Cue内,当Cue被播放时,名为“event_A”的声音被播放一次,“event_B”则开始循环。

 

ActionTrack可以施加影响到其他的CUE

 

在组合的第二部分“switch”,新的CUE被播放,同时Action Track对“start”CUE发出了指令,动作是“停止播放”,这意味着,当新的段落开始被循环回放时,先前的段落则受到ActionTrack的功能影响,停止回放。

 

 

该组合的第三部分CUE“End”,则代表了追逐的结束,播放的内容是代表恐怖氛围消失的声音,同时两个不同的ActionTrack分别对包含了“start”和“switch”段落的CUE发送了停止播放的动作,对应可能发生的提前终止追逐,以及结束。


有多种方式可以在发出停止动作时,使目标声音淡出处理,但最简便的方式是,为需要在停止时淡出的声音在Voice层级应用EG包络:


点选Voice对象,可以在属性面板找到EG以设置包络

 

这种处理多段声音的方式,也可以应用到众多其他类似循环时长不可控的声音内容上,比如物品的使用-持续消耗-消失,以及其他类型的增减益和道具的施放-进行-生效,以及大部分需要互相打断的应用当中去。

 

贴士:可以通过将Material管理的声音样本添加到VoiceLimitGroup中,实现针对Voice的回放数量限制,限制单独组别中能够播放的Voice对象最大数量,超过这个数量将不再播放。

 

 

3、可控的动态影响以及全局声音的动态过渡

 

 

在游戏过程中,通常存在着众多事件共同发生的以及全局状态的变化,导致不可避免的会需要某一种类型的声音对应变化或者全局地受到影响,这种影响包括但不局限于声音参数变化以及样本过渡等。

 

 

以先前的追逐环境声为例,在追逐发生的情况下,新的环境声播放,但场景内仍然存在着风声雨声等自然噪音,这些声音不应当被停止,但本着聚焦的原则,我们应当让一部分声音临时转换到次要位置,其中一种最基本的表现就是动态地调整音量,在此项目中,使用了多种方式控制不同类别声音的主次关系,其中一种最简单且易于预览的方式是REACT自动闪避处理,

 

Trigger类别的所有CUE如果发出声音,都会对Change目标类别的正在播放的声音造成影响

 

通过预先给CUE分配好他们各自归属的Categories,使用ListEdit功能还可以快速地批量分配/查看目前CUE所属的类别, 当建立新的REACT规则后,在REACT的属性面板通过简单地设置就可以为类别下所有声音应用REACT闪避效果。

 

贴士:CategoryLimit功能与VoiceLimitGroup类似,但专用于限制所属Category内同时可以被播放的CUE最大数量。

 

通过REACT属性面板设置曲线类型以及时间,以改变影响

 

通过这样的快速应用,在项目中便实现了当事件环境声触发时,自然环境声音量压低。

 


另一种游戏内实现的重要全局影响是对AISAC的应用,在游戏过程中,男主会出现饥饿和精神错乱的情况,这种情况下 ,听到的全部声音都会受到影响,而且会播放一个持续的氛围声音,直到解决问题。在这个项目中,使用播放氛围声的CUE来实现所需要的全局影响

 

在ActionTrack添加Parameter Action

 

仍然是基于先前配置好的Category,本着尽可能复用功能以实现功能的方式,在这个CUE中增加了若干组ActionTrack并添加了Parameter Action,目标是一个提前准备好的AISAC Control:

 

 

通过CUE的播放,触发Parameter Action,目标是2号AISAC控制器,以每秒改变0.08的速度,直至目标AISAC的值为1(0-1).

 

 

 

在目标的Category,则是应用了AISAC曲线集,通过预先配置AISAC变化时声音将会发生的影响,获得了一个由设计端可以藉由任意被播放的CUE触发的全局声音影响,在这个项目中,当该功能触发时,玩家所有的场景物件交互声,如开门声,会逐渐变得沉闷(Filter+Volume)且愈发软弱(Attack包络变化),并逐渐失去脚步声,在预定好的时间内达到影响的峰值。

 

而在另一个等待被播放的CUE中,存在消除这种影响的ActionTrack,PrameterAction:


 

正好同先前的影响相反,AISAC在给定时间内会被回复到0,这个影响可以是极快速的,并且有一个可选的曲线来平滑变化,使目标声音恢复正常,这个功能通常会添加到代表着重新找到食物,或包含着游戏失败的提示音的CUE当中。

 

至此,我们可以通过混合使用并复用先前的一些功能,来对相同类型环境声,在不同空间条件下的动态样本过渡完成功能配置,我们以在游戏内包含了类似风声的环境噪声作为示例,在玩家所处建筑外、楼梯间、走廊、房间内时,相同类型的风声环境声被动态地切换了播放的样本,以匹配不同区域带来的变化,同时这些变化是平滑可控的。


 

为了在设计端获得更灵活的表现和对声音的控制,并且考虑尽可能避免客户端开发功能,在这个项目中选择了将同类型环境声样本混合封装在相同的CUE播放,通过AISAC实现样本过渡,通过CUE控制AISAC的值来切换预先配置好的枚举以触发过渡的方式。


为不同的在CUE内混合播放的样本,分配了AISAC区间,影响音量变化

 

我们通过为预先添加的AISAC简单的枚举0-1的值,匹配相同类型环境声的不同样本。0为在房间内,0.35对应仍在建筑内,0.65则是楼梯间,当值为1时对应在建筑外。所有的声音样本遵循这个规则进行了编排和组合,并且根据AISAC的变化交叉淡变音量。


 

在另一方面,对应需要的目标,建立了与之相对应的CUE,通过CUE的Action Track,Parameter Action,实现当CUE被播放时,改变目标CUE的AISAC以实现样本过渡,并且通过设置Parameter过渡速率,来实现切换场景区域时声音的交叉淡变响应时间,至此我们便实现了相同类别环境声的动态过渡,并且通过单独隔离的CUE控制这个过渡。


同样地,类似的方法也可以应用到某些特定音乐的过渡,通过CUE控制AISAC枚举的优点在于,给与音频设计师更多地在设计端构建声音变化的空间,并且可以保证程序端单一切换实现复杂的声音变化。

 

 

4、实时混响与风格化



 在这个游戏内包含了各种各样生活中也能认知到的空间变化,比如室内到室外,走廊到楼梯间,这种情况通常会需要声音额外地包含回声混响

 

 

有多种方法可以实现类似的功能,在此例中,我们在DspBussSetting中建立好BUS,便可使用ListEdit功能批量配置CUE,快速地将CUE分配到目标BUS混音通道上。

 

建立好混音BUS便可以在Mixer内配置路由并应用效果器以完善效果链,当调试完毕后,可以以其中一种方式实现全局混音状态的切换“SnapShot”

 

 

为Snapshot命名,并且可以切换至任意快照进行预览和更改,所做的更改会自动应用到对应的Snapshot快照内,包括相同效果器在不同快照下的不同参数。在此情况下,可以由多种方式混合应用以改变混音特征,提供给程序的Snapshot接口包括了切换和淡入时间等等功能,


当然,混响的应用并不仅是局限在环境的变化,它也可以应用到角色状态和情绪的变化中去,为相同声音带来情绪上的变化,为声音带来染色,增加特定剧情下的阴暗色彩,影响玩家的沉浸感受。

 

四、声音开发过程中的建议

 

1、管理Material并遵循预先制定的命名规则

  合理的命名规则和结构管理有助于查找相关基础素材,帮助整合制作的同时也易于资源的回收和分发。


2、Cue的规范命名以及CueSheet管理

  合理的对CUE以及CueSheet进行管理可以优化响应,同时能够有助于减少游戏运行时声音系统对平台性能的消耗。


3、通过Session Window对完成的声音预先进行测试

  Session Window能在AtomCraft中快速模拟游戏内实际播放声音的效果,使得声音设计师可以直接在工具中进行测试并发现问题。

 

      在参与这个项目的过程中,ADX2使得团队可以在有限的时间内,可以快速地验证声音想法,实现创意组合,并且通过规划并合理应用设计工具以尽可能分担所需的程序功能,在异地协作的情况下做到了不过度依赖程序接口地设计声音功能并实现,通过有效的方法完成测试并给与声音设计师和开发团队带来了协作的灵活选择。

 

欢迎您与我进一步交流,在这里可以下载包含分享内容特别完成的ADX2示例工程:


链接:https://pan.baidu.com/s/1lD4Rl9GdpvT87bo92e0U3g 


提取码:0xra