Wondering if there are any generally good practices regarding setting up a situation such as this. Say you have a game that makes use of multiple different game mixes – narrow mix, wide (cinema) mix, headphone mix, and so on.
What is generally the best way to create or ‘author’ these separate mix states from (I assume) Fmod Studio’s mixer interface.
Thank you in advance for any insightful answers!
- You must login to post comments
There’s no real “best way” of doing this, but it would be recommended for a proper separation of mixes to have separate banks.
In your Preferences > Build platform list, you can have multiples of the same platform with different surround speaker modes. So it may look something like:
- Desktop (narrow)
- Desktop (cinema)
- Desktop (headphone)
You can then switch to these mix modes in the FMOD Studio application to audition by clicking on the “Platform” dropdown in the bottom right corner of the screen.
In order to avoid multiplying the amount of asset data with each built bank, you would also need to enable the “Build metadata and assets to separate banks” option in Preferences > Build. This way you can have all the assets used across all platforms but the metadata banks will determine the output type.
I hope this has been helpful.
Richard, thanks so much for the insightful reply!
The only question I have remaining then is when working with separate banks in the case of different mixes – how does that now affect any of your project’s existing banks?
If I’m using the banking system to generally separate and segregate event’s locations in memory for the purpose of minimizing RAM useage and hard disk streaming and things of that nature, how would these separate banks for mix states then come into effect?
So if I were implementing in Unity or Unreal, would I tell either engine to also make use of these specific mix state banks in addition to the banks the game is already using?
The separate banks will be for storing the assets (sample data) and the metadata respectively. So the actual audio files to play are kept in one bank. The metadata bank will contain all other information pertaining to the events and signal chains, including the output format.
The metadata banks are very small in comparison to the asset banks. If you don’t separate them out like this, then both the assets and metadata are bundled into the same bank, meaning for each platform you will have the same assets present in each platform’s bank which will take up a lot of space. So you can have one asset bank that that is shared across multiple platform metadata banks.
Taking the Examples project as an example – having metadata and assets in the same bank will result in each platform being 27.3MB, a total of 81.9MB for 3 different mix banks. However, with separated assets and metadata banks, this would be 115KB for each group of platform metadata banks, plus 27.2MB for the shared asset banks – a total of 27.3MB. So for the same space of *one* platform’s group of bundled banks you can have three mixes.
In game (regardless of Unity or Unreal) you would only need to load the asset banks once needed but you can load and unload the different mixes when required. If an event instance is already in play, it will be destroyed once the bank is unloaded, so it would be advisable to only allow changing mixes from a settings menu before starting the game. You could have a system in place that memorizes all playing event instances and their timeline positions & parameter values and restart all of them if the mix bank is changed.
I hope this helps.
Excellent! Thank you very much Richard.
- You must login to post comments
Please login first to submit.