我是一个独立开发者,正在使用Godot 4开发赛车游戏Oversteer,Claude提供了帮助。直到上周,游戏都没有声音,我的目标是为游戏中的8辆车创建各种发动机音效。
我的第一份尝试是从Ableton中pitch-shift的3个循环——一个来自royalty-free的V8音频样本,另外两个是自己制作的合成样本。结果听起来很糟糕,后来我发现这是众所周知的原因:赛车游戏不应该这样做。Claude的研究表明,专业的游戏工作室会记录发动机在多个稳定的RPM下,开启和关闭油门,然后在每个记录之间进行平滑过渡。这样做,仅pitch-shift的幅度只有几百分之一。这种方法需要20-30个清晰的记录,每个发动机。我的游戏中有8辆车,没钱租借一个录音棚来进行这样的录音。
我记得以前在YouTube上看过一个惊人的项目:Engine Simulator by Ange Yaghi(github.com/ange-yaghi/engine-sim,MIT许可)。这是一个真正的物理模拟发动机——活塞几何、活塞定时、燃烧、气流——而不是播放样本来模拟声音。发动机是文本文件:活塞径、活塞行程、银行角、活塞销、点火顺序。如果你没看过他的视频,我强烈推荐你去看看。
这个应用程序是一个实时GUI。Claude读了源代码, fork了它,并且:
- 添加了一个无头构建,去掉了渲染器、DirectX、SDL2和Boost。
- 替换了音频线程为一个同步render-to-WAV路径(没有实时约束,没有丢失样本)。
- 添加了动态命令脚本:启动、保持精确的RPM,完全油门,关闭油门,限速器,启动/关闭,和一个每个缸的诊断来确认所有的点火都正常。
然后,对于每个发动机:空载 + 15个全油门保持 + 9个过载保持(大约6%间隔),限速器,发动机咆哮,启动,关闭,和一个RPM的清单。一个脚本将它们剪辑成平滑过渡的,音量匹配的循环。一个工作池在约20分钟内渲染了43个(是的,43个)发动机。
由于模拟只需要几何,Claude写了一个生成器,使用活塞布局规则来构建发动机文件。所有我做的就是要求Claude研究了我感兴趣的几种发动机的规格(包括模拟中默认的发动机),然后它就能准确地重现它们。共享销V发动机可以免费获得它们的真实的不均匀火花——Viper的90°/54°的“嘶嘶声”就直接来自数学。目前的音频库:AMG V8、BMW S65/N55、Coyote、GM卡车V8、两台V10、三台V12、Porsche平六缸、直八缸、摩托车发动机和一些旋转引擎模拟。
在Godot中,我们使用一个RPM × 加载混合网格:在油门梯度上进行一个平滑过渡,在关闭油门梯度上进行一个平滑过渡,混合由油门加载控制,每个带的pitch跟踪只有几百分之一。一个虚拟传动系统将它的RPM和加载传递给它:踏板 + 假的变速箱在地面上,漂移增强器拥有漂移时的转速(限速器在你达到最大值时才会嘶嘶作响并且即将失败)。一个持有的音符在空中滑行。每辆车都有自己的位置声,玩家可以在游戏中听到每辆车的独特声音。
它还不能做的事情:强制增压——本版中没有turbo或supercharger模型,因此增压音和压缩器的过载将在游戏中作为一个单独的资产。公开源代码是2023年冻结的,最新的社区构建是二进制的。
如果你有任何问题或者想对声音进行反馈,我很乐意回答。再次感谢Ange Yaghi对模拟的贡献;我只是添加了一个动态测试和录音设备。
如果你想跟随Oversteer的开发过程,请加入这个Discord:https://discord.gg/VVEWFHAV7
评论 (0)