补记 MIGS 2016 上的演讲见闻

最近一次的蒙特利尔国际游戏峰会 MIGS 2016过去一阵子了,只有3岁的 MIGS 在规模上无法跟 GDC 这样的老字号相提并论,不过每年还是有些有用的技术演讲,在此追记一下自己去过那几场的要点,主要是音频专场。

Leonard Paul “用 Pure Data 为游戏实现 Procedural Audio”

音频设计师和教师 Leonard PaulUnity 示例游戏作为蓝本介绍了用 Pure Data(PD)实现 procedural audio(下称 PA)音频设计一些可能性。会后他还发布了这次演讲的幻灯录音

在这个例子中 Leonard 展示了几个 PD patch。通过自己设计实现从 PD 到 Unity 的一整套 OSC(Open Sound Control)消息服务机制,建立了一条简单的音频原型迭代的管线:在 PD 中创建和修改设计,在 Unity 中测试,两端通过 OSC 沟通来试听和调整混音等。演示的声音大多采用简单的加法/减法/模态(Modal)实时合成方法,坦克碰撞声采用了 Karplus-Strong 算法。

关于 PD 生态的现状,Leonard 说 libpd 的性能还达不到游戏要求的实时性,但 Enzien Audio 的 Heavy 系统的性能很有希望。目前 Heavy 支持大部分 PD 的对象,只有极少数关键对象比如 expr~ 不支持。

Leonard 也表示在游戏项目中选用 PD 这样的系统有一些注意事项:

  • 不应该为 PA 而 PA。从审美上不是所有的游戏都适合 PA,演讲采用的坦克游戏碰巧是美式动漫风,所以适合用常用的合成技术表现;
  • 用 PD “做出声音”只是音频设计流程中的一方面,走这条路还需要自己实现通信协议、混音器、voice 控制,性能优化这些一般中间件里有的东西;
  • 同一个功能可能有不同品质和性能代价的算法实现,可以考虑根据实时性能的波动切换算法以达到最优性价比;
  • 在条件允许下,比如大公司和大型项目中一般还是以中间件为出发点。

感想:利用创意编程工具实现 PA 目前还是一个技术性很强的领域,Leonard 自我介绍时强调自己的编程背景并已经有 20 多年使用 Max(90 年代初还没有 MSP)和 PD 的经验也侧面佐证了这一点。

RJ Mattingly “手工打造游戏音频利器”

RJ Mattingly 是 PopCap 的技术声音设计师。PopCap 现在全面采用 Unity + Wwise 的音频开发流程,在演讲中他介绍了为优化 PopCap 内部工作流程写的一些小脚本工具,基本都用 Python 语言实现。

SoundBank 管线工具

PopCap 的 SoundBank 处理管线见上图。

他们早期基于 Perforce 的流程中声音设计师不但提交 Wwise 工程文件,还提交 SoundBank。这样一来因为 SoundBank 是团队共享的,所以容易出现冲突。RJ 的第一个显而易见的改进便是规定设计师不提交 SoundBank(设计产物),而只提交工程文件(设计本身),并在 Jenkins 管线中通过脚本使用 Wwise 自带的命令行工具 WwiseCli 生成项目的唯一一份 SoundBank,解决了冲突问题。

一个常见的人为错误是在生成 SoundBank 时漏加了文件或者多个 SoundBank 中有重复的音频源文件,这些错误有时几个礼拜之后才会发现。于是 RJ 利用 Wwise 中 SoundBank 生成的后处理 post-generation step 写了一个脚本来分析 Wwise 自动生成的日志,找到与缺少和重复文件相关的信息,并自动群发邮件。这样一来,错误一般都能当天发现并修正。

Event 工具

在性能优化上,Wwise 中虽然有最大复音数限制机制,但有些时候项目会想从 Event 层面来做限制,比如三消游戏《Bejeweled》系列中的爆炸道具如不加限制会引爆上百个事件,目前 Wwise 中没有提供由设计师来指定事件数限制的流程。因为 Wwise 事件下有 Notes 这个属性,因为属性保存在事件所在的 WorkUnit(.wwu)文件中,RJ 于是把 Notes 当作特殊字段来用,写了一个脚本工具在 Notes 中加入自定义的事件限制文本编码,设计师可以在 Wwise 中进一步手动调整,然后工具会分析 .wwu 并生成游戏程序可以读取的 metadata 作为事件限制的参考数据。

动画配声工具

在《Plants vs. Zombies: Heroes》中有 300 多个角色,每个角色有 5-20 个动画序列,所以手工配声工作量巨大。于是 RJ 写了一个 Unity UI 拓展能够改进这个流程,并能够自动比较 Unity 端登记的动画 Event 和 Wwise 设计工具端的 Event,保证在 Unity 端登记的 Wwise Event 确实存在。

设计师往往喜欢把 Unity 的动画导出成视频文件然后到 DAW 中配声,但 Unity 没有这种导出支持。于是 RJ 写了工具自动导出动画成视频,方法是:将动画帧自动截屏成图片,再用 ffmpeg 的命令行工具将这些图片批量组装成视频文件。

Benoit Alary “用于虚拟声学空间的沉浸式混响”

Audiokinetic 的 Benoit Alary 做了关于 Audiokinetic 研发的新互动混响插件(代号 SynthSpace)的演讲,作为早先这篇博客的展开并演示了原型效果。

传统混响技术有其局限性。参数混响比如 FDN 算法族 难以加入逼真的互动效果,比如玩家在室内走动时,很难根据玩家离墙的远近自动调整早期反射效果。而在其它方面相对参数混响有优势的卷积混响如果想要克服这一点,则需要录制多个冲激响应(IR)来捕捉整个空间。暴雪在《Overwatch》中为了改进这点研发了自己的内部 Wwise 插件 Quad Delay 用来加入与环境互动的反射效果,见他们的 GDC 2016 演讲

以往在解决这个问题上有两派:

  • 几何方法:将混响问题中的声音传播退化为类几何光学问题,研究从声源出发的理想射线在封闭空间中的几何反射。但这种简化做法不考虑声波的干涉等性质,如果用于整个混响过程,则效果有局限。
  • 波方法:直接模拟声波传播,考虑所有波的性质包括干涉。这种做法运算量巨大,目前唯一实际的做法是离线计算好各种参数并储存为数据库供应用程序实时检索使用,但对设计流程来说离线计算的开销可能就是小时甚至天的数量级。另一个问题是,波方法需要每秒 4 万次以上的反射取样,因此在数字音频采样率的限制下对高频的表现不会很好。

在游戏等媒体应用中,实际需求往往并不是完全逼真地模拟现实中的混响,而是需要给音频设计师足够的控制来达到某种艺术效果。

目前的趋势是混成混响(Hybrid Reverb)技术:拆分混响过程,利用几何方法来控制早期反射(early reflection),而用传统混响来控制后期混响(late reverb)。

SynthSpace 的这款 Wwise 混音器插件就是给高品质混响用户群特别是 VR/AR 项目准备的实用工具。

它的用法是在一条混响总线上加入此插件,实时接收游戏发送的空间鞋盒(shoebox)模型以及发声体和听者在空间中的位置,基于这些数据进行实时反射计算,取代参数混响中的 Pre-Delay 参数,设计师可以在 Wwise 中对反射等效果和性能需求做精确的设计,再结合其它混响效果实现完整的互动混响。《Overwatch》的 Quad Delay 插件是基于 4 个平面方向的环绕声方案,相比之下,SynthSpace 支持 6 个方向的三维空间,因而也支持 spatial audio,在传统游戏和 VR/AR 中都有用武之地。

演示用到了 Wwise 后续将发布的全新 3D 测试游戏地图,将作为 Cube Demo 基础上更适合测试声学效果的 demo 安装包。SynthSpace 将于 2017 年内面世,到时候可能会有正式的新名字。

Olivier Deriviere “环境音乐,互动配乐的下一步?”

Olivier Deriviere 之前在 《Remember Me》(2013) 中将战斗音乐的互动性推到了新高度,这次他介绍了在万代南梦宫新作《Get Even》中的新实验:利用 Wwise 和 3D Audio 将环境声和音乐融为一体。之前在《DOOM》(2016)中已嗅到这种味道。这场据说是这届 MIGS 上最值得去的音频演讲,可惜没有去成,不过游戏在 GDC 2017 上会有首秀,很期待。

Wolff Dobson “机器学习、游戏和你”

这是去的唯一一场非音频演讲。来自 Google 机器学习组的 Wolff Dobson这场大半是科普机器学习特别是深度学习及其新进展,也指出了游戏中机器学习的一些应用的可能性和已经用到的场合:

  • 分析玩家的入坑、内购、弃坑规律,在预测到可能行为时推送合适的内容促进留存率;
  • 分析游戏中玩家聊天记录判断情绪;
  • 分析监测作弊行为;
  • 分析玩家的玩法特征,让游戏内容作出适配;
  • 分析电影中的真人动作和物理系统来自动生成游戏物理系统和动画;
  • 分析玩家的操作和策略,利用强化学习给玩家策略建议;
  • 分析生物面部特征,做出更自动化的捏脸系统;
  • 自动生成内容:关卡、对白、NPC。

他也强调“玩家的乐趣”是终极目标,而不是为了机器学习而学习。比如,在角色扮演和第一人称游戏里面玩家的视野和注意力受限,所以镜头外的 AI 其实必要性不大,因为玩家要么注意不到,要么可能把 NPC 在 GPS 上的“出色”表现理解为是机器作弊。

他也提到了一些游戏以外的机器学习应用:

图片低清转高清

实时混合油画滤镜


自动生成卧室照片、唱片封套(之前我在朋友圈转过)

自动垃圾分类