If I understand correctly, EFX is based on the location system in that it checks, where the player is and then applies the respective effects to all sounds.
Would it be possible to check instead, which sounds are in an area and apply the respective effects on only these sounds?
No. EFX is an external, third-party system for modeling reverb, and that applies to everything in a 3d space. Game menu is considered 2d so EFX doesn't apply to it. My guess is that we need some kind of invisible gui/windowDef in game that would play "2d sounds" like music, player monologue, player grunts and UI sounds. Thief 3 system wasn't bad in that regard.
On more general note, as we discussed it a bit in another thread, I think the current way we use sounds is a bit messy.
For now, SFX works like master volume, as it turns down player and AI footsteps, voices, music via location system and sounds placed in the speakers within the level, etc. Ambient volume affects both music via location system and sounds placed in speakers on the map, so it's kind of useless.
IMO, from player perspective, we need more self-explanatory system, i.e. channels, and volume sliders like Music, SFX, Speech, and Video. E.g. (as in Dishonored 2):
Music affects menu music and mission background music (i.e. the one played through our equivalent of location system, and not placed in a speaker in the map). SFX slider affects all UI and menu sounds, player footstep sounds, and basically all sounds placed in the map. Speech affects internal monologue, voices of AIs placed in the map, and player grunts.
So in a long run, we'd have sound channels for playing and adjusting the volume properly, and on another level, distnction between 2d and 3d for EFX.
I guess there's no way around it, it will be a pain in the ass to make it work :/
Edit: that would also mean more ordered approach to how we use sounds in our maps. Things like adding music in a speaker and setting it to s_global 1 would be considered a hack, and not the usual workflow.
Edited by Judith, 04 December 2017 - 03:31 AM.