I am trying to load builds from 2 separate FMOD Studio projects together into a single Unity project. These are separate FMOD projects because we are trying to modularize our development into Unity Packages that contain everything related to a package, and this modularization extends to source control and asset management. Maybe having separate FMOD Studio projects is the issue?
Anyway, anytime the second master bank loads, I start getting the following errors (note that the bank loads fine if it is the only bank being loaded):
Unfortunately, this functionality is not supported. We support having multiple master banks from the same project but not from different projects.
If the events in the Unity project are isolated to the banks then you could load and unload the desired projects during run time using: System::unloadAll() and the Studio Bank Loader. Let me know if that would be a viable option.
Thanks for the response. I’d like to present a different use case that, if supported, we could probably make work.
Is there any way that users can generate content (UGC), and share their content to be used in a multiplayer environment? For example, a multiplayer game where users could customize the audio of their character with their own voice (not referring to voice chat), and then I might hear the UGC from a few different users playing at the same time if I am in a shared lobby with those users and the audio playback is triggered.
It seems to me that they would need to pass around an FMOD Studio project and each make their changes in the project before handing it off to the next user, which seems impractical. Is there some way to support this use case in a practical way?
I did see the User Generated Content documentation, but it talks about sharing the project with users, which I assume means that they have to append their content onto prior work. I assume this means that multiple users sharing content to be used together would need to share their modified project with each other in a serial fashion to get all of the changes into a single application?
It doesn’t look like programmer instruments supports adding parameters or events? We need the ability to add parameters, as well as audio files, as well as events, all as user generated content. Basically, entire banks.
We want to inject vehicles into a series of different games as packages, and some vehicles may have different sounds/events/parameters than other vehicles. These packages will come with logic to control the events so that the applications do not need to know what events exist ahead of time. There will be different combinations of vehicles for different applications, so they all need to be able to work together at some point.
I fear we will need to create one really large FMOD Studio project with banks for each vehicle plugin that we want to be able to use together, resulting in a really large project that is not capable of being modularized. If we have a new application that uses 3 of our 20 vehicles, and we want to upgrade FMOD Studio for that application, we are now upgrading FMOD Studio for all 20 vehicles. Then if we need to change an old project using any of the other vehicles, that will need to come with FMOD updates whether we want to do it for that project or not. This may also drive Unity updates, driving countless other updates. Or, we branch off an old version of the project and have to deal with asset fragmentation.
If we could load banks from separate projects, we could selectively update FMOD for vehicles that need it in a particular application without modifying other vehicle projects that don’t need to be in that application. It doesn’t seem like we have much choice at this time. Could supporting banks from separate projects be added to the development pipeline as a feature request?
Thank you for the explanation, apologies for the miss understhanding.
Unfortunately, you are correct. This would require completely new banks unless it was possible to apply the parameters to the programmer instruments beforehand and just limit the users to what is already created.
Not necessarily. You would have to have a project that contains all the banks for the vehicles, however, only the vehicles/banks that are updated would have to be redistributed. If I am understanding correctly, you could change the events/banks as required and then only build those select few banks:
The Master.bank and Master.strings.bank are only required if there are changes to the mixer and/or you wish to use paths rather than the events GUID to reference it. Then you would just have to add/replace the updated banks.
Hopefully, this is the functionality you are looking for. If not, then I can pass on your suggestion to our development team to look into further.
The problem is that the entire project is updated. If I wanted to build banks for vehicles 1, 2, and 3 in a new project with updated FMOD plugins, that is fine. But then if a bug comes back for vehicle 6 in an entirely different application, an old project which has not needed to be updated, I cannot make changes to the bank for that vehicle without exporting a bank using a updated version of FMOD. This could drive cascading updates to plugins/Unity just to resolve a bug that could otherwise have been a simple hot fix.
We also have the issue of needing to pull and store far more assets than needed to make a change to a single vehicle or to create a new vehicle.
It is also more difficult to store a single shared FMOD Studio project in version control with release tagging matching the vehicle releases that they belong to (need to tag multiple repositories for the same release).
Ultimately, these problems may be rare or easy to work around, but allowing the vehicles to have their own separate projects that can live within their respective vehicle repositories and still work together prevents the issues entirely.
Wouldn’t this present the same problem in that every vehicle would contain a different master bank within a different project?
My assumption is that DLC works by replacing the master bank with the newer projects master bank. So I assume that won’t work unless each vehicle builds on top of a previous vehicle (basically meaning all vehicles are a part of the end project that you use anyway).
You are replacing the master bank with a new version of the same project’s master bank, rather than one from a completely different project. The issue is when you are trying to replace it with a completely different master bank.
The important part is using a base project which is then copied for new vehicles.
I haven’t had time to try copying a base project around. Once I heard that loading from different projects wasn’t supported, I combined everything into a single project so that we could move forward and try to hit our deadlines. I’ll post back when I get a chance to try separate projects copied from a same base project.