赛车游戏中如何模拟真实声音?
1,在规划阶段,我们会把游戏中的引擎转速分成多个区间。例如,所需的发动机转速将达到1000-7000转/分。比如分为三段,我们就定义1000-3000为低速,3000-5000为中速,5000-7000为高速。
2.分别制作2000转/分、4000转/分、6000转/分三个中间转速的音频循环样本(取值是为了简化说明,实际操作中不一定使用中间转速)。
3.控制参数在游戏中实时传输。首先判断车辆发动机运行在哪个速度区间,从而循环播放相应区间的样本。同时,这些参数也决定了样本的音高调制比。比如1000rpm,实际播放的是2000rpm的样本音高降低100%的结果(还是那句话,为了简化解释,所谓的“音高”不是很科学,但我们感觉变化最明显的确实是音高的增减)。
上面的例子是两个主流音频中间件Wwise和Fmod的形式:
Wwise中相应的功能模块是混合容器和RTPC(实时参数控制)。游戏中实时发送的速度信息决定了播放的样本及其相应的音高变化。
在现有的基础上,目前的结果会经过均衡器、失真等音频效果器的处理,从而表现出不同的负载情况(比如空载、高速时失真会明显增大),原理也是实时发送控制参数。有些发动机在不同负荷下音色变化很大。如果对性能有需求,需要记录发动机在不同转速区间不同负荷的样本。这是一个多音轨多参数的音频事件问题,具体制作过程就不进行了。
这种方案最大的问题是没有线性的表现出发动机转速声音从1000到7000的变化,或者说是伪线性的。所以为了尽可能还原真实的发动机声音,在实践中也可以根据不同的情况将速度/负载拆分成二三十个样本,所以音频设计师往往需要花费大量的精力来处理不同速度之间的衔接,调整音高升降比,样本之间的响度关系,负载之间的切换等等。更大的问题是,根据不同的算法,音高升降过程中的效果并不完全一样,所以这个环节很容易磨损。比如我小时候特别喜欢玩《极品飞车2》。现在听起来最假的就是发动机加速时的声音。