Hello! I am wondering if anyone has a definitive guide for including in WWISE plug-ins (AkDelayFX, AkFlangerFX, etc. ), into an Unreal Engine 4 project in packaged builds? Or save that, just some advice for me. Here is what I know so far:
- I have basic WWISE integration into my project. All builds work on a base level.
- Trying to use some of the Ak Plug-ins, I see that they are all able to work by default in Editor and Standalone Non-packaged builds. Great!
- In packaged builds only, I get the "missing plug-ins" spew, and discover that you need to include plug ins explicitly only for packaged builds. Makes sense! Happy to do so!
From here, I have tried a few things, I would give feedback that all the instructions point out to do two things (1. Include the AkPlugin in your project, or in AkAudioDevice.cpp and 2. Link the .lib in via an added call to AddWiseLib() in the Ak.build.cs file), but doing those two things alone have brought me pain, and it does not appear to be as straightforward as it is implied (also, the WWISE official sample project for UE does not appear to include any of these plugins.. which would also be a great thing to have! ).
Here are the various things I have tried:
- Including the "#include <AK/Plugin/AkDelayFXFactory.h>" in game code:
- Comes up with well documented Windows TEXT() Redefinition compile errors. Attempted to fix these with a "Header Sandwich" of the pre/post windows include header files, but I was unable to get it working. Seems like an issue with WWISE UE Plugin that needs to be fixed? But I couldn't say for certain.
- Instead fell back to this FAQ, and KIND OF got things working: https://www.audiokinetic.com/library/2016.2.6_6153/?source=UE4&id=using__faq.html ( Note: alot of this seems out of date? )
- I put "#include <AK/Plugin/AkDelayFXFactory.h>" directly in AkAudioDevice.cpp.
- I then went to GetAdditionalWwiseLibs() in AkAudio_Windows.Build.cs and added the "AkDelayFX" lib to the list.
- This actually works!!! :D yay! I do get my plugins in the packaged build! BUT...
- It breaks normal non-packaged builds!! It seems like it might conflict with whatever mechanism is used to always load all plugins in non-Packaged builds?
So I can get it all working in Packaged Builds, or non-Packaged Builds, but not both at the same time! :D Was looking for a UE preprocessor define for Packaged builds ( to maybe just not include the factories outside of prepackaged builds ), but cannot find one.
When I have my fix for the packaged build, the linker error I get for non-packaged build looks like this:
AkAudioDevice.cpp.obj : error LNK2001: unresolved external symbol "class AK::PluginRegistration AkDelayFXRegistration" (?AkDelayFXRegistration@@3VPluginRegistration@AK@@A)
Things that would help me:
- Any link to a definitive guide on how this is done? The latest docs seems to just not work (does anyone test these before publishing?) re: the Windows TEXT() re-definitions. And the closest things I have gotten to work seems terribly outdated.
- UE Preprocessor to conditionally compile on packaged builds or not
- WWISE / AK Preprocessor to conditionally compile on when they decide to include all FXFactories or not.
- Link to any similar code that works!
One would think that this would be a straightforward process, given how prolific UE and WWISE pairings seem to be. Any ideas would be greatly appreciated!
Cheers,
Tim Rawcliffe