Our use-case was as you described, i.e. to prevent near simultaneous (or simultaneous) events from triggering more than one sound instance and causing volume spikes/distortion. However, once we implemented cooldowns internally we became aware of the undesirable side-effect when it comes to simultaneous instances that are somewhat far apart. Sorry if I made it sound like we primarily used cooldowns for controlling sounds that are located far apart.
The radius was for the circle around each emitter that triggered a cooldown. So if an audio event triggered a cooldown with a radius of 250 distance units, then during that cooldown no other instances of that event would be permitted within 250 units of that particular emitter.
As for stealing, I may be misunderstanding how cooldowns work in Studio. My assumption is that if an event has a non-zero value for the cooldown, that the cooldown takes precedence over Max Instances. I.e. If cooldown is set to 100ms, during that 100ms only 1 instance is permitted and all other subsequent requests to trigger that event are ignored. Once the cooldown has expired, the Max Instances limit takes over and allows additional instances to trigger (as per the Max Instances value). In other words, Max Instances and Stealing work together, but they have no impact on Cooldown (correct?). That’s how our internal cooldown system worked. I.e. If a cooldown was active on the event that we wanted to trigger, then it would be ignored and the call to trigger that event never got passed to FMOD. Unless, of course, the location of the event instance was outside of the cooldown radius setting of the instance that initiated the cooldown.
If my above understanding is correct, then in order for me to prevent two or more instances from triggering simultaneously, while also using Stealing to ensure that distant instances couldn’t block an instance that’s closer to the listener, then I think I would need to disable cooldowns and set the Max Instances to 1, correct?
Just in case it’s helpful, in addition to the scenario where, say, an explosion happens far away and another one happens right up close to the player (simultaneously), the radius feature can also come in handy if the two instances are equidistant from the player/listener, but one is panned hard right and the other is panned hard left (both with some distance attenuation, so that they’re not super loud, but still very audible). If the player looks at the one on the left, but only hears the one on the right (because of the cooldown), then it would read as a bug to the player.
Sorry for the wall of text. Let me know if I anything I wrote is unclear.
Thanks,
Sean