我的经验是为Unity Playground构建音频包和工具包,以帮助初级开发人员创建沉浸式音频。

最近,跨平台游戏引擎Unity发行了Unity Playground,该脚本和资产的集合使用户无需任何先验编码知识即可创建小型,简单的游戏。 如果您还没有这样做,请查看一下-对于新来的用户来说,这是令人兴奋的,对于那些拥有大量深夜编码会议的人来说,这是一个有趣的小练习。
作为游戏和交互式媒体的声音设计师,我必须学习基本的编码技能,才能在游戏中实现自己的想法和系统。 我清楚地记得我第一次打开Unity的经历-太多的选择和功能让他们完全不知所措,就像糖果店里一个困惑的孩子一样。
Unity Playground为您提供了一种简单的方法。这是您一直想要的Unity的流畅介绍,而没有令人恐惧的彩色文本行。 也就是说,Unity没有提供任何工具来轻松添加基本音频功能,例如音频的基本随机化,触发混音器更改或将音乐循环从一种提示更改为另一种提示。 当然,Unity Playground是视频游戏创建的非常基本的入门,因此更高级的动画或其他复杂的系统将超出其范围。 但是,对于Unity开发人员而言,从条件脚本创建小型随机容器或基本的混合器快照触发(如果发生“此”,则执行“该”)是相当简单的任务。 这将使新来者进入尚未开发的自适应音频世界。
因此,我决定制作一些小脚本,以帮助有抱负的游戏开发人员使用更多的动态音频,并了解音乐和声音效果甚至可以为最小的自行完成项目带来的力量。 (您可以在这里看到它的工作方式;只有14分钟的空闲时间)。
一切都在变化中
在Unity Playground中,可以加载在游戏开始或对象创建时播放音频的“音频源”,并循环播放音频直到游戏停止。 这意味着您可以运行一个基本的音频循环,例如,冰冷的风在森林中叫,作为背景氛围,并且该循环将在整个游戏级别连续播放。 但是,由于游戏是交互式的,因此它们还需要随玩家动作而变化的音频。 这意味着,如果我们想在特定时间触发声音效果,或向角色添加许多不同的拍摄声音,则效果会很差(您能想象没有那些标志性爆炸声的《星球大战》)。
如果我们想为游戏创造一个更加“可信的世界”,那么重要的是要更加了解我们“现实世界”的声音。 下次您倒入自己喜欢的热气腾腾的饮料的新鲜杯子,或从冰箱中取出昨晚的剩菜时,请尝试仔细调校那些通常不引人注意的声音。 我的意思是所有人; 整个序列。 从杯子在架子上的快速滑动到稳固地落在厨房桌子上,当您移动手臂并获得第一口的令人满意的声音时,衣服都会轻轻沙沙作响。 您很快就会意识到,我们几乎总是完全不听的声音包含大量信息。
这有助于我们在不知道或不需要知道的情况下确定自己的方向。 例如,您可以闭上眼睛,仍然知道您是否将咖啡杯放在桌子上,仅靠陶瓷在木质桌面上的声音即可(我不建议尝试)。 当然可以感觉到,但是如果您没有听到两个物体在碰碰,您会开始怀疑自己是聋的还是世界混乱。 现在考虑将同一个杯子放在桌子上的声音,然后重复该过程。 每次将其放下时,听听所有细微的变化,您还将意识到,“生命”本身的活力来自这些细微的变化。
当您想创建一个身临其境的世界时,这开始变得很重要。 这就是为什么随机触发不同的脚步声可以使角色更加可信的原因。 然后,您可以添加随机音量和音高随机化,以从同一组音频文件中创建进一步的变体。 这样您就可以更接近于重新创建那种“真实世界”的感觉。
显然,我们在日常生活中没有不断变化的音乐来为每个决定,动作和对话打分(想象一下,在您的第一个情人节那天伴着甜美的小提琴协奏曲的那一天)。 但是,从我们悠久的电影历史中我们知道,音乐增加了情感层面,为观众加深了对故事的理解。 由于游戏并非像电影那样线性,因此重复播放相同的音乐没有任何意义。 另外,我们不能始终确保玩家辛辛苦苦挣扎的高潮老板打败会伴有适当的光彩。
立即将音乐切换到不同的轨道是很容易的,但是这样就失去了连续性,并且中断了音乐和游戏流程(称为沉浸在游戏中)。 必须具有多个音乐循环以及一种动态和音乐上的过渡方式。 并非所有游戏都需要不断发展的动态音乐,但至少应反映出您的游戏体验的起伏或在音乐循环之间或之间进行适当的过渡。 不久前,我们进行了一项实验,发现自适应音乐可以将游戏时间最多增加30%。

您可能已经注意到AAA标题中令人难以置信的自适应配乐,例如《神秘海域》和《荒野大镖客:救赎》。 但是,这似乎在游戏卡纸中发现的小型游戏中并不常见,并且肯定不包含在针对较小游戏的Unity Playground中。 他们可能已经错过了向初级游戏开发人员介绍自适应音乐以及基本音频功能(如每个对象多个随机声音)的机会,而这个阶段还需要足够早的时间让他们受益。 就像《星球大战》中的爆炸声听起来令人难忘一样,血腥的尖叫声大大提高了杀死怪物的满意度。 在Wwise,FMOD和Fabric等更全面的音频工具中,这些功能从一开始就已内置。 Unity确实提供了这些功能,尽管在实现该功能所需的几行代码后有些“隐藏”了。
工具
如前所述,为了产生更多变化,我们可以使用音频随机化来创建更具动态感的游戏世界音景。 这就是为什么我构建了可下载软件包中包含的特定工具的原因。 这些会以略有不同的方式触发随机音频文件,从而确保您不会连续听到两次完全相同的音频剪辑,只要有多个音频文件即可。 我为Unity Playground编写的所有脚本(一个脚本除外)都是使用随机音频片段和随机音高开发的,因此再次播放的相同声音总是会略有不同。
脚本可以分为两个不同的组:自动脚本和触发脚本。 触发的脚本可以与Unity Playground中的条件脚本一起使用(例如, 如果播放器进入该区域, 则触发声音 )。 它们的工作方式与Unity提供的其他Action脚本相同。 共有三种触发脚本:一种触发随机音频,一种触发“混音器快照”(一种调用保存在音频混音器中的混音器设置的方式,例如不同的通道级别或效果设置),而另一种则触发过渡到新的音乐循环(或提示)。
它与“音乐容器”脚本一起使用,该脚本可以保存多个音乐循环。 一个项目可以包含您的计算机可以处理的尽可能多的音乐容器,并且“更改提示脚本”可以更改所有音乐播放器的提示,以使其保持同步。 可以选择过渡的速度,例如在下一个节拍或下一个小节上,同时始终与音乐保持同步。 可能有多个音乐容器播放音乐循环的不同词根。 这意味着您可以让鼓或吉他声部分别演奏,然后通过使用混音器快照调节音量来使一个或另一个声部淡入淡出。 这样就产生了一种幻觉,即音乐一直在不断变化,即使它一直在播放。

其他脚本不需要触发器,因此可以视为自动脚本。 像触发脚本一样,这些脚本也从列表中选择随机声音,并在每次播放声音时应用随机音高。 例如,有一个自动足迹脚本可以在教程视频中听到,该脚本会在附着对象的移动时播放随机声音。 然后有两个脚本可用于连续播放音频。 一个播放声音之间的时间延迟,而另一个播放当前声音停止播放时选择的新声音。 使用所有这些不同的工具,无需触摸任何代码,即可在整个游戏中创建自适应音景和不断发展的音乐。
教育新来者
当然,Unity Playground并不适合用于大型视频游戏以及与之竞争的完全身临其境的虚拟体验。 由于此开发包主要面向初学者以及可能有一天继续制作自己的游戏的其他人,因此考虑包括哪些功能变得更加重要。
特定项目所使用的工具及其局限性最终将决定它们创建什么以及如何创建。 如果没有向有抱负的开发人员提供选择,则除非有其他人教他们,否则他们可能会在进一步开发之前错过添加音乐循环或变化的拍摄声音的机会。 对于声音设计师或作曲家而言,这甚至更难,因为他们通常不是开发人员,并且需要学习如何使用更复杂的中间件(Wwise,FMOD等)来访问诸如随机化和动态音乐之类的基本功能。
当然,Unity Playground不提供动画工具或更复杂的功能来实现更深的游戏玩法,但是简单有效的音频功能却提供了一些轻松的优势,并为深度甚至幽默提供了机会(放屁的声音,有人吗?)。 开门的声音就是一个很好的例子。 在Unity Playground中,可以打开或关闭对象,基本上将它们隐藏起来。 如果门只是隐藏的,您将获得视觉反馈。 但是,通过添加开门的声音,您可以弥补动画不足的不足,并为游戏者提供必要的额外反馈,以使他们了解开门的状态。 足迹就是一个很好的例子,因为您认为角色实际上正在移动和“行走”。 风啸叫,遥远的怪物的咆哮和回声的水滴告诉您,即使屏幕上没有水或鬼影,您看到的地牢又湿又可怕。 如前所述,没有相关的声音,什么也不会真正发生。
正如我所看到的,Unity Playground旨在简单介绍游戏开发,但仅提供用于游戏设计和简单编程概念的工具。 但是,借助我在Melodrive上组合的工具,有抱负的声音设计师和游戏作曲者也可以进入交互式/自适应音频并尝试一些想法。
最后,这并不是要创建出色的AAA游戏或高级音频系统,而是要为用户提供音频工具,使项目变得更加有趣和生动。 通过从一开始就提供这些功能,而无需编写代码,则更有可能探索自适应音频。 同时,这也有助于提高交互式音频和音乐的最低预期水平以及为何如此重要。
希望这意味着未来的作曲家和声音设计师将不必向开发人员解释为什么他们需要多种脚步声音。 最终,我希望其他人会发现这些工具对他们自己的小型项目有用,并且它将激发并传播我对自适应音频的不可思议的热情。
该软件包可免费使用,并且还附带了许多音频资产。 从Unity Asset Store或我们的Github获取它们,然后升级您的Unity Playground音频游戏。