EFFICIENT SELF-MANAGED AK COMPONENTS

This is a look at an actor component I built in UE5 to better handle virtual voices, improve client performance at high voice counts and also address scalability and workflow concerns. This actor leverages the Wwise API to trigger start/stop events when entering and leaving max attenuation range, as well as setting thresholds at which Wwise occlusion is no longer calculated. This has a two fold benefit of removing those line traces from the audio thread, but also prevents a mix sounding flat as components (sounds) at extreme distances will almost always end up occluded. With LPF also being leveraged on attenuations of spatialised sounds, it simply isn’t necessary to calculate occlusion at these extreme distances.

By adding this actor component to objects that appear in the world (ambience spots, vehicles, weapons, and naything else), we immediately have scalable management for all of these factors. Furthermore, with the support of a quick subsystem that finds all instances of the component in a level, we can prevent all occlusion parameters being updated on the same game tick. By load balancing the parameter updates, we prevent any frame hitches caused by updating all occlusion parameters on the same game tick.

//perf is king

  • Better handling of virtual voices. Wwise isn’t holding onto lots of them

  • Start/Stop driven dynamically by reading attenuation values

  • Occlusion threshold bypass (default and overrides)

  • Occlusion trace bypass bool

  • Tick load balancing event (and LoadBalancedTick Subsystem)

  • Correct handling for player pawn and spectator pawn

Previous
Previous

Ambience // Weather // TIME OF DAY system

Next
Next

Splines // Ambience Subsystem // Awkward shapes