Audiokinetic's Community Q&A is the forum where users can ask and answer questions within the Wwise and Strata communities. If you would like to get an answer from Audiokinetic's Technical support team, make sure you use the Support Tickets page.

Wwise 2016.1.1.5823 as a plugin in UE 4.11: broken dependency from game module code

+1 vote

With the Wwise UE integration used as an engine plug-in, dependencies from game module C++ code (as opposed to BP) seem to be broken in a couple of ways:

  1. Cooking optimizes out Wwise data:  This appears caused by UE4.11 attempting to skip data unreferenced by BP as would occur when loading banks and playing events directly from C++.  From the 4.11 release notes “Cook-by-the-book will now skip saving packages that are only referenced through editor-only properties.”  Here are a couple examples of people running into this:

    https://www.audiokinetic.com/qa/2410/packaged-ue-4-11-project-has-random-soundbank-missing

    https://answers.unrealengine.com/questions/409407/unreal-not-loading-wwise-soundbanks.html

    Note the accompanying warning which actually results in a return LINKER_Failed from FLinkerLoad::SerializePackageFileSummary, UnrealEngine\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:                   UE_LOG(LogLinker, Warning, TEXT("Unable to load package (%s). Package contains EditorOnly data which is not supported by the current build."), *Filename );

    Also note this comment from Package.cpp in the same directory: “    // Mark this package as editor-only by default. As soon as something in it is accessed through a non editor-only property the flag will be removed.

  • So, 4.11 assumes a package is editor-only and the logic to handle non-BP dependencies re the use of Wwise Banks and Events doesn’t exist, e.g. using the auto-load attribute on bank uassets doesn’t guarantee their inclusion into the pak.

    The brute-force workaround we’re using for now is to force bLoadedByEditorPropertiesOnly to default to false in Package.cpp; and comment out the failure return in LinkerLoad.cpp around line 1034.  This effectively disables the new “cook by the book” optimization. If anyone knows of a way to flag Wwise bank+events uassets to force them into the final pak, please let us know.

2. Given this post (especially answer point 2), why did AudioKinetic change the to a plug-in model over being a library module? This seems at odds with game module code calling into plug-in functions, such as FAkAudioDevice::LoadBank.

https://answers.unrealengine.com/questions/83155/cannot-find-dll-when-using-an-uobject-exported-via.html

  • We’re seeing various infrequent module-not-unique errors, and would like to confirm that making direct calls from the game module is permissible when using the Wwise UE integration as an engine plug-in.

     

                                                

asked Aug 4, 2016 in General Discussion by Sserpenthraxus_nv (130 points)

Please sign-in or register to answer this question.

...