Just curious as to whether anyone else has managed to get Wwise to work with visionOS.
Wwise currently offers “preliminary support” for visionOS, but this entails building the integration manually from a source project, and I’m not sure whether it is even viable for this to work with Unity.
I have attempted some workarounds using the visionOS project that Wwise provides, but have hit a bit of a wall in getting this to run in the Simulator.
I don’t know if anyone from Unity can confirm whether they would expect this to work in it’s current iteration, or whether there would need to be some input from the Unity team to support this.
I have Wwise running perfectly in simulator and device just by linking the iOS library in (I’m on 2021.1.7.7796 fwiw) and making a copy of the iOS C# files, changing the ifdef from UNITY_IOS to UNITY_VISIONOS. Obviously there’s no spatial audio support with this, just regular stereo output.
I have it working via their “preliminary support”. In order to use plugins that weren’t included with the source, I statically linked the iOS version of those into the Unity plugin. All seems to work, including ambisonics and object based spatialisation.
Edit: main road blocks to get this to work was
a) the missing plugins which the Unity integration plugin attempted to link. For that I just copied the iOS .a libs and that solved it.
b) Xcode refused to correctly search for headers in the WWISESDK folder. Deleting the space in the folder name ([sigh]) made Xcode able to search and find. The SDK folder macro is defined at the bottom of the Build Settings tab.
Thanks for the input from both of you! Unfortunately, I am still having problems. I can’t help but think I’m missing something obvious.
You both mention linking the iOS version of the libraries. Is this done in Unity or on the Xcode side? I think this is the part that I’m missing.
For clarity, this is what I’ve tried:
- I am using Wwise 2022.1.8.8316 (as advised by Wwise).
- I have made a copy of the iOS plugin files from the project in Assets/Wwise/API/Runtime/Plugins/ and added these to a newly created VisionOS folder. I have also tried building these from the source visionOS project (in Wwise/SDK/source/SoundEngine/AllvisionOSSoundEngine.xcworkspace) and adding the generated .a files to the Unity project manually, however neither of these approaches seem to be correct.
- I made copies of the iOS platform C# files in the “Generated” folder, adding them to a “VisionOS” folder, then changed the UNITY_IOS defines to UNITY_VISIONOS defines. (I also suffixed the files with _VisionOS, although I don’t think that does anything, but this looks the same for tvOS too so I tried to mirror the approach)
- In the “Handwritten” scripts, I added UNITY_VISIONOS to the defines for iOS and tvOS that already exist.
- I have ticked the VisionOS platform for the copied Library in the Plugins/VisionOS folder (I have tried this individually with Debug,Profile and Release versions)
This allows me to build and run in Xcode, but I have an error that mentions “120 duplicate symbols for arm64”. But it gives me no info on what the duplicates actually are. I assume that this is related to me not linking the library properly, as deleting the Wwise plugin removes the error.
I have also tried it without having the plugin ticked in Xcode, but predictably, this results in a “symbol not found” error when Wwise tries to initialise.
I have appealed to Wwise directly for help, but haven’t got any response. Any help you could offer would be much appreciated!
Sounds like you’re close – the “duplicate symbols” issue is due to Unity using
all_load linker flag in simulator builds, can be resolved as described here VisionOS build issues in 2022.3.12
@Alex_StudioDrydock, you’re a hero!
Wwise will load correctly after changing the linker flags as you suggested in the other thread, as I’m also using 2022.3.11f1.
The game isn’t finding the Wwise events now, but I’m hoping that I can resolve that myself.
Thanks again for the help!
Now that communication initialization has randomly fixed itself (?) and I’ve been able to connect the Wwise profiler, I have to conclude that I was fooled wrt spatialization. The mix is stereo and the sound is spatialized from the “loading” window, which doesn’t go away. Looking at symbols defined in the Unity plugin I don’t see anything related to audio objects and initialisation settings unfortunately. Will keep digging and update here.
So when building from the preliminary support, you are getting a stereo output but spatialised in the immersive space? (i.e. your game/app window is the origin of spatialised audio rather than the spatial settings you have within the game world itself?)
That’s correct. I have confirmed with AudioKinetic that this prelim support does not include 3D audio features, but a release this week should.
Just out of interest, in case it’s affecting anyone else.
I was having an issue with the game loading Soundbanks. Most of our Wwise setup is pretty standard/default. I fixed this in the Simulator by adding an additional UNITY_VISIONOS define in the AkBasePathGetter script (where there is a UNITY_IOS define around setting the base path).
Unfortunately this issue persists on the device even with this fix in place. Is there a specific gotcha to look out for here? The Xcode project seems to have the Soundbanks in the correct place: “Data/Raw/Audio/GeneratedSoundBanks/iOS/” but it logs out that it can’t find them there on the device.
This confused me to no end. I ended up removing the GeneratedSoundBanks part of the path (iirc both in the Wwise project and Unity project settings) and it would then find the sound banks. Mind you I also added a VisionOS platform in both to keep them separate.
I remember it randomly not working, in particular the simulator would have trouble finding the sound banks. Mostly it’s worked on device.
BTW new Wwise with 3d audio support is out since Thursday (I think). I will be updating to that this/next week. Will update here how it goes.