又及:我是怎么克服恐惧,真正爱上写插件的。
照片:这就是我,在自己家,挣扎于在虚拟现实 和“编程现实”间的。
引言
“好的,那这家伙要推销啥?”我听见你这么问道。问得好(哈哈)。毕竟,为各种音频API构建DSP插件就是我吃饭的手艺。但是正是这样的经验教会了我,对于任何当代的电子游戏,专门定制DSP是多么重要。
常见的情况
如果你是声音设计师,你很可能有想过 能用上些还不存在的神器 。也许已经有个很接近的东西,但又太贵了(¥¥¥方面或者是CPU方面)。也许由于某些商业原因才没人做——太艰深太小众。我就这么说吧: 人不太会随便冒出一个完全原创的插件创意。他们脑海中的那东西还不存在很可能是原因的,而且原因很平常。
如果你是音频程序员,毫无疑问你至少考虑过为了个人发展写写DPS插件,又或者你已经用过一些已经证明了商业价值——虽然你当时还不太懂(我当然也经历过)——的第三方商用插件。但令人惊讶的是,游戏行业内很少有音频程序员有过从头开始写定制DSP插件的经历。它一直被视为一种“黑魔法”。
启蒙的关键其实就是问出正确的问题,那么我们首先这么问吧:为什么会存在第三方商用DSP插件?
- 最显然的原因当然是Audiokinetic支持插件啊!虽然这肯定有助于他们自己开发内置音频效果器,但更幸运的是插件也对所有用户开放,为此我们都应该永世感恩。
- 某个科技公司拥有一些专有音频DSP技术,他们想要向游戏开发者授权,而因为Wwise是广受欢迎的中间件解决方案,所以最好的方式就是将该技术打包为Wwise插件。
- 某个游戏主机平台供应商拥有一些特别的音频硬件,让游戏工作室使用该硬件最简单的方法就是编写一个Wwise插件。
- 后两个原因的任意组合。
白板:开发流程的最初阶段
请注意,游戏开发者很少有知道这些插件是如何制作的。除开 使用 Audiokinetic自己的效果器套件,你很少会需要写插件。如果有这种机会,一般要么是你的工作室决定要支持某个平台(该平台的供应商也对你提供某种支持),要么有人向你展示了很多可能有用的售后部件。
首先我要说明我对这些第三方供应商没有不敬的意思,但如果我们在说图像领域的问题,假如你的工作室只去使用内置或第三方着色器,这能接受吗?大概不能吧,因为我们不时都在见证这一点:电子游戏需要有自己的视觉美学才能脱颖而出,而实际上,也有各种各样的性能原因导致需要为游戏定制着色器。
在我看来,游戏音频也是一样的。
那么又有一个问题了:为什么游戏工作室不自研Wwise插件呢?
- 一般来说,工作室没有这样的内部专业知识。这点确实遗憾,有底层DSP知识的游戏音频程序员“像鸡的牙齿一样难找”,或者用些别的俏皮话也可以形容,我就不重复了。
- “根本没有时间,我们可是在做游戏呢!”不是每个人都是你一样的音频专家,团队的其他人可能一开始不理解你想做什么。素材创造和声音设计的预算可能是已经定了的,但DSP开发时间的申请需要足够的理由。
- “为什么我们不能照以前那样做就好?”本来这个行业就是脱胎于技术创新,这么看来工作室算是非常偏向于规避风险了。游戏工作室都有自己的舒适区,很多工作室都流连其中慢慢腐朽,甚至灭亡。
白板:开发流程的后期阶段
我对于刚才的三点有些个人看法,有些人可能不太喜欢;但既然讲到这里了,我们就一口气说了吧。
实际上有数以千计的软件工程师有丰富的底层DSP编程经验 。他们很多在别的行业工作,比如车载系统、影院、以及音乐制作工具。你们在游戏业见不到他们是因为很多工作室招程序员时的能力评估主要考的是玩法和玩法相关领域的上。因此,在游戏业能成功入职的音频程序员通常是学会了怎么过这些标准玩法代码考试的那些人。他们中有一些人也有DSP技能。
白板:找个借口用用维恩图解
说到音频代码开发预算,关键就在于游戏种类以及你现有的技术。我就不说我觉得什么游戏种类需要更多或更少音频代码开发了,不过还是抛砖引玉一下:
游戏音频越有沉浸感,玩家对于图像渲染的问题就越不敏感。(1)
考虑制作一款VR游戏?那刚才那句话的程度还要乘以8。(2)
最后一点比较有争议,因为电子游戏业风险比较高,所以如果工作室已有一个证明有效的工作方式,他们就会墨守成规地工作,这点无可厚非。但硬币的另一面是:守着成就停滞不前也是一个很大的商业风险。只要有一个别家工作室发售一款革命性的游戏,实质性地提高了质量的标准,那就足以和竞争对手拉开距离,让对手的下几作游戏疲于奔命了 。尤其是如果你在做一款3A大作,那很显然核心思想就是要制作出各方面都是顶尖的杰作,不是吗?如果你让别家抢了先,那你的下一款游戏可能就麻烦了。哪个游戏开发者不想远远甩开竞争对手呢,不管是在图像上,物理引擎上,AI上,还是任何别的上?如果科学实验展示了玩家在玩游戏过程中听到的东西对他们的体验至关重要,那么开发新的音频技术也会有很大的收益。我刚刚是不是提到了VR音频?现在这方面已经堪比淘金热了。
白板:效果器插件如何插入Actor-Mixer Hierarchy的元素中
源插件
跟效果器插件一样,源插件可以被插入到任何元素的效果器页面。但是,它们是用于将声音注入系统的,这也就是为什么它们通常是位于 Actor-Mixer Hierarchy里的元素中。技术上你是可以把它们放到Master-Mixer Hierarchy里的元素中的,但这样的话它们就会持续播放(某些情况下可能这正是你想要的), 一个显而易见的用途就是信号发生器或某种合成器;但同样的,你也可以使用源插件从完全不同的底层配置环境中流播放音频。如果你想制作一个程序声音效果,那这里就应该是你的起点了。
白板:如何将音频注入到层级中的某处
音频设备(也就是Sink)插件
虽然传出的声音通常是解析到系统OS输出,但却又不一定如此。Sink插件 让你能从元素中抽取声音发送到另一个底层配置环境中。想让你的游戏以某种方式响应声音吗?那这就是你要的插件类型。
白板:怎样从层级中的某处提取音频
混音器插件
和其它三者不同,混音器插件只能置于主混音器(Master-Mixer)元素的混音器插槽中。它们和效果器插件类似之处在于它们也会将自己插入到元素的信号通路上 ,而区别在于它们会参与将声音对象转变为独立扬声器声道的渲染过程。如果你打算实现自己的3D声像摆位器或处理器,该处理器需要了解在其它Master-Mixer元素中的实例,那么你的插件就应该属于这种形式。
白板:混音器插件如何插入到Master-Mixer Hierarchy的上册设计元素中
你已经了解了在 Wwise 中自定义音频处理的各种方式。现在,我们来聊聊怎样说服你的项目组接受让你动手创新!
像我之前那样去描述那些插件有一定的问题:这都是些干巴巴的解释,难以引起你项目团队的兴趣,他们不了解音频制作。我相信通过快速原型或讲解概念的方式来推销你的DSP创意会更好。
例子
在《Guitar Hero Live(吉他英雄)》中,进入麦克风的声音需要追踪音高,以便显示演唱者表现的准确度并为其打分。很显然,之前的《Guitar Hero(吉他英雄)》、《Sing Star(歌星)》、 《Rock Band(摇滚乐队)》或者说任何最近的卡拉OK系统都做了这个功能。如果你要做另一款支持语音的节奏动作游戏,那么关键就是将该功能视为“最低发售要求(minimum shippable requirement)”或MSR。制作团队不该吃惊也不需要知道音频程序员想在信号矩阵中使用原形物质(protomatter)的邪恶计划。这可能是解决某些问题的唯一方式。
说到科幻,在《Elite: Dangerous(精英:危机四伏)》中,当你在游戏中语音聊天时,对话是做了处理的,所以收话方听起来就像是阿波罗号任务对话一样。这一点让与其他玩家飞行员聊天感觉上非常非常“有宇航员感”。所以,主观描述下该项工作的可能就会是“让语音聊天的声音听起来感觉玩家就是阿波罗号的宇航员”。到底需要哪些Wwise插件的组合才能做到这一点就要看音频设计师和程序员了。 项目组只需要知道需要多少时间预算即可。
快速原型
已经有一些模块化的声音设计工具, 可以理论上展现出你的插件创意,而又不需要直接陷入冗长的编程 。它甚至都不一定需要在游戏中能工作。只要你的原型能现场展示而且能响应控制,大家就都能达成一致了。你之前有没有玩过这些工具?
- [开源] Pure Data
- 与此同时,看看Enzien Audio’s “Heavy” 工具集–它会编译Pd patch,而且他们刚添加了一些对Wwise的支持!
- [Cycling ‘74] Max
- [Native Instruments] Reaktor
- [Plogue] Bidule
而且,当着手实现的时候,你的原型已经给了一个清晰的答案,告诉你需要哪些参数,它们的范围又是多少。说真的,在你真正开始使用插件之前,一定要把这些都弄清楚。你会感谢我的。
照片:预先规划不会花太多精力,但合理地准备些饮料饼干是很重要的
你的创意已经批准了,现在需要些DSP方面的帮助
如果有程序员觉得自己对某个编程技巧无所不知的话,那他就太自大了。而且,在我的脑海里,有机会学习新东西通常是作为程序员至少一半的意义所在。虽然在网络上有些零零散散的关于音频编程的解释,但目前据我所知以下书籍中的信息最有用。
柯蒂斯.罗兹(CURTIS ROADS)《计算机音乐教程(THE COMPUTER MUSIC TUTORIAL)》
这本书主要是讲创意的,因为书里很少有数学计算也基本没有代码示例。但是,尽管该书(在技术层面上)非常粗浅,覆盖的方面却非常广泛,因此非常适合用于将数字音频概念介绍给那些还未启蒙的人。我会把这本书推荐给想要学习上层概念的声音设计师和程序员们。
乌多.佐则(UDO ZÖLZER)《DAFX - DIGITAL AUDIO EFFECTS(数字音频效果)》
和前一本书完全相反,这本书专注于构建特定DSP模块的标准蓝图。如果你需要一本旁征博引的现代技术参考,那么买这本书可能会是你很长一段时间内最明智的一笔投资。虽说它在描述DSP技巧时经常跳过一些细节,但在实现方面,90%的情况下它能帮你实现90%的任务。
哈尔.张伯伦(HAL CHAMBERLIN)《MUSICAL APPLICATIONS OF MICROPROCESSORS(微处理器的音乐应用)》
这很可能是同类书籍的开山之作。哈尔.张伯伦很显然在使用八十年代的微型计算机构建合成器。这本书现在依然具有价值本身就证明了数学是超越时间的。该书已经绝版很久,但二手还是能买到,偶尔也会有比较便宜的价格。如果有机会,你一定要买下来,但是最精彩的部分可能还是要在接下来的推荐中去找。
比特.弗雷(BEAT FREI)《DIGITAL SOUND GENERATION(数字声音生成)》(1)&(2)
该书和《DAFX》很大程度上是一样的——从技术上精确描述了很多DSP模块。同时,它还是免费的,太棒了。一般的书免费也就算了,我的天哪这本居然免费!
PRESS, FLANNERY, TEUKOLSKY, VETTERLING "NUMERICAL RECIPES - THE ART OF SCIENTIFIC COMPUTING"
这就是那种很多科学和工程人士在大学期间会买的权威参考书。我的书是Pascal版——很显然我比看起来要老多了。最新版号称是完全针对C++重写,但这不是重点。重点在于,如果你需要从头开始写一个傅里叶变换程序,那这本书应该就是你的起点。
白板:很多形式的数值秘诀已经存在了许多年
最后,一些友好的建议……
知道你知道什么,知道你不知道什么
复杂的信号处理技巧经常能分解为许多简单信号处理阶段组成的网络。所以先理解这些阶段,并先解决你经验最浅的部分,然后再投入到实现工作中。这是非常简单的降低风险的方式。
白板:对苏格拉底进行释义,以免出现过多误解改变主意绝对没什么好羞愧的
除非你在复制做过的东西,否则声音处理的创意都会随着你工作的过程而演进。保持灵活性,尽量不要一开始就实现太多东西。你需要先小步前进,实验一点点并看看和想象的结果是否接近,否则你最后出来的结果可能会不对。先演示,再迭代。我保证,如果你给自己一些时间来逐步逼近某个高级概念,最终的结果会更令人满意。
给你的插件创意它应得的爱
随着游戏进入开发后期,优先级可能会出现重大改变。你可能很熟悉这样的场景:开发从主动出击转为被动响应。这种环境可能会影响到你的插件开发。而且,如果坐视不理太久,那你的插件就可能永远达不到应有的高度 。DSP很难做好,因此,保持专注是必须品而不是奢侈品。把目标定位在开发的早期完成这一工作,那它就会得到它应得的爱。
参考文献
[1] http://captivatingsound.com/phd-thesis-captivating-sound-the-role-of-audio-for-immersion-in-games/
[2]不是7,不是9,就是8。好吧,这个系数可能是我编的,但这个理论还是成立的。
评论