是什么让你做的小游戏听起来怪怪的?

作者:V6.47
2018-08-09
39 31 4

引言

本文章首发于微信公众号“用耳朵玩游戏”。


不管是什么 Game Jam,甚至是小型游戏公司,都会面临同一个问题:策划美术程序到处都是,唯独音频人才奇缺。

于是就总有许多小团队,迫于无奈,让策划/程序/美术兼职搞音频。音效从网上找素材贴上去,音乐去找罐头音乐(便宜使用或者免费的音乐库),甚至直接偷个 MP3 贴过来用。

当然非商业游戏这也不是不可以。但是团队里如果没有专业音频人才,往往会踩到几个坑,让游戏的声音效果听起来感觉怪怪的。今天我来讲讲常见的五个坑,以及如何避免。

* 在这里我们讨论的是,几个人的小团队里没有音频制作人员,没有制作音乐/音效的能力,通过音频资源的选取和接入方式优化来提高声音表现力。

音效单调重复

这个是最最最最常见的问题。金鱼的记忆力是不是只有七秒我不知道,但是人耳的记忆力是只有七秒的。也就是说,任何可能会在短时间内重复的音效,都不应该只有一个素材反复播放,但如果是 CD 几十秒的大招,只用一个音频素材是完全没问题的。

比如 RPG 游戏里最基本的刀剑攻击声音,应当至少有 4 - 5 个不同素材进行随机播放,并且需要保证上一个播放的不会重复。在心理声学中,有一个名词叫做“机关枪效应”,指的是当同一个音效素材在短时间内反复触发时,人耳听起来就会感觉像是机关枪一样的鬼畜效果。

一个听起来很正常的打击声,洗脑循环之后就像机关枪了

如果实在是条件有限,没有音效设计师来提供不同变化的素材,可以通过在一定范围内随机音高和音量的方式避免重复,程序上实现也很简单。

没有声音数量限制

比如你做了一个模拟养鸡场的游戏。里面母鸡每过一分钟会下一个蛋,蛋过一分钟会孵化成小鸡,小鸡过两分钟会长成母鸡。

Google 了一下,居然真有这种游戏

一开始,你的游戏只有一只母鸡,她下蛋的时候会咯咯叫一声。生了一个蛋,蛋孵化的时候小鸡唧唧叫一声,听起来感觉挺酷的。

随着玩家的鸡越来越多,有 32 只母鸡同时下了一个蛋,32 个蛋同时孵化,然后玩家的音箱就炸了。

就算这 32 只母鸡不同时下蛋,下蛋的间隔在一分钟的基础上随机浮动几秒,玩家的耳朵还是会被此起彼伏的鸡叫声弄得心神不宁。

科学研究表明,人对于不断重复的声音的容忍度,远远低于不断重复的图像。

怪不得有人打呼噜的时候我就睡不着 (╯‵□′)╯︵┻━┻

还有研究发现,人耳最多只能追踪到两个半声音的方位并和图像对应。第三个声音人耳能够听出其存在,但来不及判断其方位。

一个人在走路,可以听出两只脚的脚步声;两个人在走路,可以听到四只脚;三个人在走路,听到的就是“一群人在走路”的脚步声了。

听一个人在说话,可以理解全部内容;听两个人同时说话,可以勉强理解两个人说的话;三个人各说各话,听起来就是一团浆糊。

应用在游戏音频里面也是一样,一般有许多个同样的声音出现,就不再播放各自单独的声音,而是“一群声音”

如果没有条件单独制作“一群声音”的话,可以设置一个当前可播放该声音的上限。每播放一个声音,就会记录 +1,每结束一个声音,记录 -1。当超过上限的时候,把最先播放或者距离最远的那个声音干掉。

在 Unity 引擎里,实现的方式也很简单,需要把触发的声音做成一个单独的 Prefab,然后每次触发就在发生的位置生成一个并且把该对象存进声音管理器脚本里。如果声音会跟着发声对象移动,就挂在发声对象下面作为子物件。如果是时间先后判定就用 Queue 来存,需要干掉的时候把队列最头上的 Destroy;如果是距离判定就可以用 Array/List 来存,在超出上限的新声音触发时,扫一遍现有的声音的距离,Destroy 最远的那个。

代码我就不发上来了

音效素材混响不对

在网上找的音效素材,尤其是枪声这种,一般要么听起来很干,要么听起来很湿(混响足)。干的素材一般是直接采样录制的,需要音效设计师加上各种效果器混响来处理,湿的素材则是处理好发上网分享的,但是不一定适用于所有情况。

同样的一个声音,在空旷的原野上,和山洞里面,听到的混响回声是完全不一样的,而这就需要音效设计师去制作不同的素材,或者使用一些实时计算混响的插件,设计不同的声学参数。

Unity 的混响插件,参数我就不一一介绍了

在没有条件制作适应不同声学空间效果的素材情况下,只能靠耳朵去听,尽量选择听起来更接近游戏场景的素材,或者选择尽量听起来干的素材,在混响插件中选择合适的预制。

同一个响声在不同环境下的混响效果区别

音乐进出/衔接突兀

说完了音效,来谈谈音乐。一般来说,只要风格选用适当,找来的音乐贴在游戏里,在效果上都不会有太大的问题,而问题常出在不同音乐的切换上。

对于小游戏而言,一般我们至少需要一个主菜单的音乐,一个游戏场景的音乐,加上一个游戏结束的音乐。经常出现的情况是,这三条音乐单独听起来效果挺好,但是进出或者衔接的时候,就感觉怪怪的。

一般这种情况可以通过两种办法解决。最简单的方法自然就是留出时间进行淡入淡出。Unity 中没有自带的淡入淡出功能,但只需要一个简单的 Coroutine 控制音量即可完成。对于风格/调性相差较大的音乐,让玩家多等一秒钟,花一秒钟淡出之前的音乐,不仅能够使得音乐过渡更加自然,还可以用这一秒钟的时间后台加载游戏其他资源。

如果音乐结束时不使用淡出,而是突然停止,有时候就会听到“噗”的一声。音频文件是由一个个采样点组成的,声卡读取采样点数据告诉扬声器产生相应的振幅。如果音乐突然停止,可能刚好读取到一个较大的非 0 采样点,导致扬声器发生突然的位移,就产生了“噗”的响声。而如果采用了淡出的方式,通过设置音量逐渐变小,采样点的数值也会越来越接近 0,最后音乐停止的时候,不管播放到什么位置,采样点都非常接近于 0,不会产生突然的大幅变化,也就不会听到杂音了。

音乐突然停止与淡出效果对比

直接停止时,可以看到采样点被突然重置为 0,因此产生了“噗”的一声

还有一种情况,就是不同音乐之间没有调性关联,导致衔接的时候和声突兀,产生了一个莫名其妙的突然转调。

如果你听不出来音乐的调子是什么,那就只能靠直觉来判断了,尽量选取调性接近的音乐。把两首在播放器里放在一起,然后不停切换,听听感觉奇不奇怪,或者找个懂音乐的朋友帮忙听一下。

音乐抢戏/节奏混乱

这也是一个非常常见的问题。游戏音乐制作的效果不满意,往往不是音乐太单薄了,而是太丰富了。在选用现有音乐作为配乐的时候,这种问题会更加明显,因为无法对编曲进行任何形式的修改。

一个优秀的音频设计师,一定非常善于在音效、音乐和语音之间找到平衡。这三者之间音量的动态控制,是一门很大的学问。在缺乏音频人员,使用网上素材的时候,往往就会觉得声音听起来很乱。要么音乐的节奏和音效互相打架,要么音乐/音效被对方盖住了听不见。

小游戏一般很少用到语音,就先不讨论语音的情况。在选取音乐的时候,要考虑到音乐播放场景的音效密集程度。虽然鼓点密集的音乐听起来很带感,适合作为战斗场景音乐,但非常可能和音效打架。如果音效非常密集,选用节奏感弱的音乐可能反而更合适。

另一种情况就是音乐的节奏和游戏的节奏对不上,感觉贴合得不紧密。游戏的关卡设计其实很多时候有隐含的节奏。

比如竞速跑酷类游戏,地图上经常会出现各种小道具或者金币可以吃。如果这种反馈道具经常出现,就会形成自己的节奏感。可以录制一个试玩视频,关掉所有声音然后用手敲桌子打节拍,看看什么样的速度可以让大部分反馈道具落在拍子上,然后选一个类似速度的音乐,效果会出奇地好。

个别变态游戏甚至为了对齐音乐,把游戏里面的道具往前往后移了移位置

有个游戏叫《节奏地牢(Crypt of the NecroDancer)》了解一下。


以上五条是我总结的小游戏音频常踩到的坑。当然,可能还会有更多的坑我忘记提到。不过以上五点注意到了,可以至少让你的小游戏在音频上不拖后腿。

有条件还是尽可能拉一个专职的音频一起做游戏吧!祝大家以后的 Game Jam 愉快!