C++ 游戏开发声音框架

C++ 游戏开发声音框架,c++,openal,audio,C++,Openal,Audio,我正在与一个团队合作,该团队正在为各种2D和最终3D迷你游戏构建引擎。我们面临的问题是一个可靠的、跨平台的、可靠的API。显然,DirectX是不可能的,因为我们需要跨平台的功能。SDL很好,工作也很好,但让我们面对现实,SDL_Mixer的功能有点有限。我们目前正在使用它,但当我们最终扩展到3D时,这将是一个问题 我一直在搞OpenAL,但我发现的大多数文档都已经过时了,而且似乎没有那么好用。我愿意学习OpenAL,并努力克服它,但我想更确定一点,我不是在浪费时间。不过,除了DevMaster

我正在与一个团队合作,该团队正在为各种2D和最终3D迷你游戏构建引擎。我们面临的问题是一个可靠的、跨平台的、可靠的API。显然,DirectX是不可能的,因为我们需要跨平台的功能。SDL很好,工作也很好,但让我们面对现实,SDL_Mixer的功能有点有限。我们目前正在使用它,但当我们最终扩展到3D时,这将是一个问题

我一直在搞OpenAL,但我发现的大多数文档都已经过时了,而且似乎没有那么好用。我愿意学习OpenAL,并努力克服它,但我想更确定一点,我不是在浪费时间。不过,除了DevMaster教程之外,我还没有看到太多让我震惊的文档。如果有人有比我发现的更好的材料,那就太棒了

我也见过像FMOD这样的项目,尽管有许可证,但看起来还是不错的。然而,与OpenAL一样,它们几乎没有现成的文档。诚然,我可以通过代码推断出我的选择,但考虑到我最终可能会为此付出代价,这似乎有点痛苦


不管怎样,想法、评论、担忧?非常感谢

Bass库可以在Mac和Windows上运行,并且有很好的文档和SDK示例:


我最近在一个AAA PC标题上工作,该标题使用FMOD。我们的音频程序员很喜欢它,而且工作效率很高,所以我对FMOD赞不绝口。我们只在Windows上使用FMOD,因此我根本无法谈论它的跨平台方面。

(注意:我有FMOD、BASS、OpenAL和DirectSound方面的经验;虽然我在下面列出了其他库,但我没有使用它们)

两者都很好(事实上我非常喜欢FMOD的文档;为什么你会说它“不存在”?)。还有,还有更多的中间件包

OpenAL被认为是跨平台的,在每个平台上它都有自己的怪癖。它也不是完全开放的。我不确定它的未来是什么;当Creative抓住它时,它似乎被卡住了。不过,最近有一项工作是从头开始构建实现:

还有本机平台API,如DirectSound或XAudio2 for Windows、Core Audio for OS X、ALSA for Linux、控制台专用API等。我认为在每个平台上使用本机API都很有意义;您只需在所需的公共接口下抽象它,并在每个平台上有不同的实现。当然,这不仅仅是使用OpenAL需要做的工作,但是OpenAL在某些平台上甚至不可用,并且在其他平台上有各种各样的怪癖,您甚至无法修复(因为没有可以修复的源代码)。从某种意义上说,授权像FMOD或Miles这样的商业库是一种选择,所有这些依赖于平台的工作都已经为您完成了


我们现在正在工作中使用OpenAL,但正在考虑放弃它,因为它哪儿也去不了,我们无法修复这些怪癖。因此,虽然OpenAL很容易入门,但我认为它不是一个好的选择。

我在已发布的游戏中的一系列平台上使用了DirectX、FMOD和Wwise。我不会在这里谈论DirectX,因为其他人在这里会有很多反馈;-)

以下是您需要考虑的事项:

  • 许可证,我把这个放在第一位,因为这可能会让你做出决定。让你的律师检查一下,确保你了解成本和限制

  • API-FMOD有一个非常干净的、最小的API,非常容易使用。Wwise提供了更多的功能,但是它的API看起来更大、更麻烦,而且概念也很难理解

  • 工具-Wwise有非常复杂的工具,非常适合音频设计师而不是程序员,如果你想给音频设计师大量的直接控制和实验空间,Wwise可能是一个不错的选择。FMOD正在工具部门迎头赶上,但我觉得它的工具更适合程序员

  • 性能-这是你需要自己评估的东西,你不能说任何一个比另一个更好,因为这取决于你的平台和游戏类型。您可能会得到性能统计数据的引用-对这些数据持保留态度,它们可能会以某种方式被理想化。确定您的性能预算(例如,声音每帧2毫秒,X个通道数,X个流数),并对不同的声音格式、采样率和位深度进行一系列测试-绘制这些吸盘

  • 支持-FMOD和Wwise都有很好的支持渠道,技术人员很好。检查支持是否需要额外费用


如果你让我选一个。。FMOD-这真的是一款非常好的产品,这些家伙做得很好。

我已经发布了两款使用Miles音响系统的PC游戏,效果非常好。MSS易于集成、快速、稳定。您从RAD游戏工具获得的支持非常出色。这个库已经在4500多场比赛中使用过,因此它是坚如磐石的。它也很便宜

另一方面,与FMOD或WWise相比,MSS是一个相当低级的库。该库没有为声音设计师提供任何方法来控制音量、衰减、随机化、衰减,或者任何未存储在声音文件本身中的内容。您必须自己编写这些高级功能


这就是我为下一场比赛评估WWise的原因。它的工具集比Miles要发达得多。它需要更长的时间来启动和运行,但到目前为止运行良好。我还不太了解如何使用它来提供建议。

Wwise可能是工作流方面最完整的健全开发解决方案。它的设计方式确实节省了您的编程时间,并为您提供了更多的实验和构建co的可能性