FMOD Studio User Manual 2.02

26. 故障排除

本章列出了在使用 FMOD Studio 时可能会遇到的一些常见障碍,以及克服这些障碍的技巧。

如果遇到问题,并且本章列出的技术都不起作用,请在FMOD 论坛上提出问题,寻求建议和支持。

26.1 项目可以在 FMOD Studio 中试听,但游戏无声

确保所有事件都分配给事件库。事件必须分配给事件库,以便其在构建时包含在这些事件库中。

尝试重建事件库并在游戏中使用重建的事件库。重建事件库可确保它们包含最新版本的项目内容。

重建事件库后,在控制台窗口的日志选项卡中检查错误消息和警告。日志选项卡中的消息可能会描述构建时出现的特定问题或困境,解决这些问题可能会解决困难。

检查是否有任何快照减少项目的总线的数量。如果使总线静音的快照在不应该处于活动状态时处于活动状态,则删除该快照不需要的实例应该会导致该总线的事件再次变得可听见。可通过在快照浏览器中选择快照并按下走带控制中的播放按钮,在调音台窗口中试听一个快照的效果。

检查游戏代码是否正确创建和启动项目事件的实例有关在 FMOD Engine 中播放事件的信息,请参阅FMOD API 用户指南Studio API 指南章节的播放事件部分。

检查游戏代码是否正确初始化了 FMOD Studio 系统。未能正确初始化 FMOD Studio 系统可能会导致游戏中的所有音频完全失效。有关初始化 FMOD Studio 系统的更多信息,请参阅FMOD API 用户指南中的用户指南白皮书。

请检查游戏代码中指定的FMOD_OUTPUTTYPE是否正确,以便在运行游戏的平台上产生声音输出。如果使用的是 ASIO 输出设备,请检查驱动程序是否未被其他应用程序占用,并确保有备用选项可用。

26.2 一些事件在运行时是听不到的

检查受影响的事件是否受到基于距离的衰减。如果事件至少包括以下一项,则可能会受到基于距离的衰减:

空间化效果器效果、对象空间化效果器效果或其他提供空间化的效果。当发送器听者之间的距离大于或等于空间化效果的最大距离属性时,受空间化影响的事件是听不见的。
发散发声器自动将空间化应用于其播放列表。这种空间化的最大距离为 20 个单位,因此可能会导致发声器在距离听者更远的地方听不见。
* 一个距离内置参数可自动控制音量属性。根据所使用的自动控制曲线,音量属性的自动控制可能会在自动控制参数的任何点将音量降低到听不见的程度。

如果受到多种形式的距离衰减,有距离衰减的事件在其他距离也可能是无声的。

检查受影响事件的窃取行为。一个事件的最大实例属性小于∞可能会根据其窃取属性被盗,从而阻止这些实例播放。具有最旧、最安静、虚拟化或最远窃取行为的事件可能会在这些事件的新实例开始时突然结束,而具有最远或没有偷窃行为的事件如果有太多的实例已经在播放,则可能不会启动。

检查受影响事件收发到的组总线的窃取行为。被收发到最大实例属性小于 ∞ 的组总线的事件可能会根据组总线的窃取属性窃取其实例,从而阻止这些实例播放。具有最旧、最安静或最远窃取行为的组总线可能会导致事件实例在这些事件的新实例开始时停止。如果太多正在播放的事件实例被收发到总线中,具有最远或无窃取行为的组总线可能阻止新事件实例启动。

如果想阻止事件的实例因总线实例限制而被盗,请尝试增加总线的最大实例属性,或将更少的事件收发到该总线。此外,将事件的优先级设置为最高可防止其实例被盗,但可能导致其他事件的实例被盗。

如果受影响的事件包含程序员发声器,请确保游戏代码正确接收和处理生成的回调。有关程序员发声器回调的信息,请参阅Studio API 参考FMOD API 用户手册

26.3 事件偶尔会在运行时中途停止

检查受影响的事件是否包含可能导致它们自动停止的内容。如果非持久性事件当前未产生任何输出并且其时间轴上没有更多内容,则它会自动停止。如果受影响的事件在您希望它们不自动停止时自动停止,请更改其内容,以便其在不同的情况下停止。有关事件何时自然停止的更多信息,请参阅试听事件章节的创作事件部分。如果您希望受影响的事件在任何情况下都不会自动停止,请尝试使其持续

检查受影响事件的窃取行为。最大实例数属性小于 ∞可能会根据其窃取属性窃取其实例,这可能会阻止被窃取实例播放完毕。当这些事件的新实例开始时,具有最古老、最安静、虚拟化或最远窃取行为的事件可能会突然结束。

检查受影响事件收发到的组总线的窃取行为。收发到最大实例属性小于 ∞ 的组总线的事件可能会根据组总线的窃取属性窃取其实例,从而停止被窃取实例播放完毕。当新事件实例被收发到该总线时,具有最旧、最安静或最远窃取行为的组总线可能会导致事件实例停止。

在项目中搜索可能会停止受影响事件的命令发声器可通过在事件浏览器中右键点击该事件,并从右键菜单中选择“查找引用>在事件中”,来搜索引用某事件的发声器。如果命令发声器在不应该停止事件时停止事件,请调整其位置和触发条件以确保它仅在适当的时间停止目标事件。

检查游戏代码是否正在停止受影响的事件。如果游戏代码旨在停止某些事件,请确保在正确的情况下进行。有关在代码中停止事件的信息,请参阅Studio::EventInstanceStudio API 参考章节FMOD API 用户手册的子章节。可通过使用实时更新记录分析器会话来查看是否以及何时正在调用Studio::EventInstance::stop()命令。

26.4 事件在运行时过于确定

确保游戏代码正在设置 FMOD Engine 的随机种子。如果代码没有为 FMOD Engine 的随机数生成设置种子,当Studio::System 被初始化时,FMOD Engine 将默认为种子为 0。每次使用相同的种子会导致每次都生成相同的随机数,这对于调试很有用,但对于某些游戏来说可能并不理想。有关设置随机种子的信息,请参阅FMOD_ADVANCEDSETTINGSSystem::setAdvancedSettings系统核心 API 引用章节FMOD API 用户手册

如果游戏代码正在设置 FMOD Engine 的随机种子,请确保每次运行游戏时都设置不同的种子。每次初始化“Studio::System”时都使用相同的种子,每次都会产生相同的行为。保证不同种子的一种常用方法是使用当前时间。

26.5 音乐轨道不同步

确保音乐资源没有设置为流媒体加载模式。流媒体声音依赖于一次加载、播放和卸载音频文件,这意味着流媒体音频无法安排在一个精确的时刻。此外,大多数平台只能支持非常少量的并发流媒体,如果超过该数量就会产生断断续续的输出。将受影响的资源切换为非流媒体传输会导致将整个资源加载到内存中,但会提高其调度的精度。

尝试将受影响事件的优先级宏控制设置为最高。FMOD Engine 的低级语音限制系统会自动剔除听不见的声音以保持较低的资源消耗,然后在这些语音变得听得见时恢复它们。如果音乐事件中的声音以这种方式恢复,该声音可能会从头开始,并与其他播放的音乐不同步。将事件的优先级设置为最高可防止其声音被剔除,即使这些声音是听不见的。

26.6 没有办法打开或提取事件库文件。

使用原来的 FMOD Studio 项目构建新版本的事件库**事件库文件不是可以被解压或提取以重新创建其来源 FMOD Studio 项目的压缩存档。它们是专有的二进制格式,其构建过程不可逆。

26.7 停止时快照不会逐渐释音。

如果快照作为事件触发,请确保快照的强度具有[AHDSR 调制器](glossary.html#ahdsr-modulator)。快照发声器强度属性的调制器仅影响由该快照发声器触发的快照的实例。如果想要快照作为事件触发来播放 AHDSR 调制器的释音周期,则该调制器必须在快照的强度宏上,而不是项目中其他位置快照发声器的强度属性上。

如果快照是由快照发声器触发的,请确保在您希望释音发生时该发声器处于取消触发状态。停止事件不会自动取消触发该事件中的任何发声器。这意味着当包含发声器的事件停止时,快照发声器上的 AHDSR 调制器不会自动进入其释音周期。

如果想要发声器在包含它的事件停止时停止,一种选择是向发声器添加参数触发条件, 将 AHDSR 调制器置于参数的值上,并设置调制器的属性和触发条件,以便停止事件导致参数更改值并取消触发发声器。

如果快照是由快照发声器触发的,请确保事件继续播放直到快照发声器的 AHDSR 调制器的释音周期结束。当一个事件最终停止时,该事件中的任何发声器都会立即停止。设计一个事件,使其仅在发声器的释音周期结束后才最终停止,以确保该发声器的释音周期始终有时间结束。

如果想要事件在发出停止命令时不立即停止,最简单的选择是将 AHDSR 调制器添加到事件的属性之一。事件属性上的 AHDSR 调制器会导致事件停止,即使调制器不会对事件的输出或行为产生有意义的影响。当事件的多个属性具有 AHDSR 调制器时,释音时间最长的调制器将决定事件何时结束。

26.8 FMOD工作室在发布时崩溃。

出现提示时,选择以安全模式重新启动 FMOD Studio。在某些情况下,插件错误或损坏可能会导致 FMOD Studio 崩溃。安全模式可防止自动加载大多数插件。

清空或重命名插件文件夹。在某些情况下,安全模式不会阻止加载所有插件。如果即使在安全模式下崩溃仍然存在,重命名或删除插件文件夹应该会阻止找到和加载这些文件夹中的插件。

可以在以下位置找到插件:

26.9 FMOD Studio 在其他时候崩溃。

如果您使用的是 macOS 并运行辅助功能应用程序,请尝试禁用该辅助功能软件。某些辅助功能应用程序(例如 Karabiner、Teleportd 和 DisableMonitor)可能会干扰 FMOD Studio,从而导致崩溃。禁用这类软件可能会避免崩溃的发生。

如果您使用的是 MacOS X 10.14 版,请打开缩放选项并确保未选中“使用键盘快捷键缩放”和“连续使用指针”设置。这些设置在某些情况下会干扰 FMOD Studio,导致崩溃。切换到“仅当指针到达边缘时”可能会解决这个问题。

26.10 删除“元数据”文件夹后,FMOD Studio 项目将无法打开。

从备份或源代码管理中恢复 FMOD Studio 项目的早期版本。FMOD Studio 项目的“元数据”文件夹中的数据对该项目至关重要,几乎包括项目音频资源以外的所有内容。如果项目的“元数据”文件夹被删除,则必须从备份中恢复或从头开始重新创建该项目。

26.11 没有办法打开或提取事件库文件。

使用原来的 FMOD Studio 项目构建新版本的事件库**事件库文件不是可以被解压或提取以重新创建其来源 FMOD Studio 项目的压缩存档。它们是专有的二进制格式,其构建过程不可逆。

26.12 FMOD.io 窗口在 Linux 下运行时是空白的。

** 启动 FMOD Studio ,将环境变量“QTWEBENGINE_CHROMIUM_FLAGS” 设置为 “--no-sandbox”。** 可通过在终端提示符下键入以下命令来完成此操作:

QTWEBENGINE_CHROMIUM_FLAGS="--no-sandbox" ./fmodstudio

26.13 在 FMOD Studio 中发现了程序错误

请通过阅读本故障排除指南的其他部分来验证问题是否为程序错误。上面列出的一些故障通常被误认为是程序错误。如果其中任何一个听起来像您遇到的问题,并且您能够使用针对该问题描述的方法之一来解决问题,那么您就找到了解决方案。

在 FMOD 论坛中搜索问题。如果其他人遇到了与您相同的程序错误,他们很可能已经在FMOD 论坛上报告过。如果是这样,则有可能有人曾使用过某种解决方案或变通方法解决了程序错误,这些方法可能对您有用。

向 Firelight Technologies 报告程序错误。可通过两种方式报告错误:

无论您选择哪种方法,请务必在消息中包含对程序错误的描述,以及您使用的 FMOD Studio 版本,以及所遇到的行为与所期望的行为有何不同的解释。

无论您以何种方式联系我们,我们都会回复确认我们已收到您的程序错误报告,并询问我们调查该问题所需的任何其他信息。一旦我们了解了错误的性质,我们就会将其添加到我们的错误跟踪器中,并开始着手修复,以在即将发布的 FMOD Studio 版本中发布。

我们还将让您了解我们所发现问题的任何临时解决方案,以便您可以继续工作,直到可以提供真正解决方法为止。