Imagine I want to make a multiplayer game where you can spend points in different senses.
If you spend more points of evolution in the sense of hearing sounds around you, you can heard them before other players.
Is it possible to change the Sound Attenuation of all sounds on a game meanwhile you play?
Maybe create two variables called Inner Radius Sounds and FallOff Radius Sounds and add more value if you spend points on hearing sense?
If its possible, how would you make it?
Ok, found a way thnx to Bartosz Kamiński.
He suggested me to use AdjustAttenuation node so inside character blueprint I created a variable called HearingSenseLevel (0, 1, 2, 3) and each level have different Sound Attenuation Settings inside map blueprint. This settings will affect an specific audio component from Persistent Level and works fine.
Now I have two more questions:
Can I affect all audio components from Persistent Level or from the game? Somekind of global audiosettings or MasterSoundSystem.
As I will also need to affect sounds from each characters/players like footsteps, breath when sprinting, attack sounds, roaming sounds… Is out there any other way to loop for all audiocomponents from characters to modify them?
Which way could be the best one for all this?
Was thinking on:
GetAllActorsOfClass Characters and ForEachLoop modify the sounds related with each player
GetAllActorsOfClass AmbientSound and ForEachLoop modify the sounds from the map
This would need to be a C++ feature to scale all attenuation calculations uniformly. I also don’t think it’d sound very good as attenuation radii is a delicate thing that will fundamentally affect your mix and voice-concurrency in odd ways.
Note that something exists that kinda does this. Check out the SetGlobalListenerFocusParameters BP function. It’ll apply a focus feature on all sounds w/ attenuation. Might do something like what you’re trying to do… might not.