Introduction
Unreal Engine's Steam Audio Plugin was mostly outdated & abandoned. Because of our audio requirements on Project Borealis, I had to update the plugin to the latest release in our own Unreal Engine fork, apply required modifications, and fix bugs caused by that major API update.
You can see quick demonstration of updated Steam Audio working on Project Borealis:
Fixing the Plugin
After huge amount of revamp on plugin's source code, I've created a PR for Epic's repository, and notified related plugin developer in Valve to review my work in https://github.com/EpicGames/UnrealEngine/pull/5940 (It's required to have Unreal Engine repository access to see the contents of github links in this page). After a few weeks, my work got picked up by the developer, and improved further to make it ready for the merge into Epic's repository: https://github.com/EpicGames/UnrealEngine/pull/6203, also I'm credited on the announcement about the update: https://steamcommunity.com/games/596420/announcements/detail/1589135317217982691. PR got merged for Unreal Engine 4.24.0 and it's currently in fully functional state.
My work on the plugin can be summarized as:
Intel Embree support. Steam Audio introduced Intel Embree & TBB support for faster parallel calculation of reverb and occlusion (real time & baked) in one of the recent releases. I modified plugin source code to inject TBB/Embree's dll in runtime & do required calculations.
Unity / Unreal Engine feature parity. Unreal Engine plugin had lots of missing features compared to Unity plugin. I reverse engineered most of the missing features from Unity plugin, and improved them further for Unreal Engine's audio pipeline.
Performance Optimizations. Old plugin had strange method for creating & retrieving configuration values, which may become expensive on runtime. I implemented basic caching methods for configuration values to boost performance in various situations.
Bug fixes. Old plugin had some issues with correctly tagging geometry objects as phonon objects, and also had minor issues with audio reverbation, caused by incorrect audio buffer data read/write implementation. I've had a chance to fix those issues during API version update.
Level transition support. Old plugin didn't have support for changing levels, and was stopping working when a new level is loaded. I've fixed that issue in engine's audio module seperately.
Commentaires