In the FMOD settings in Unity, the list of target platforms is pre-filled based on the libraries you have installed, and presumably it automagically makes sure the correct platform settings are included in each build.
This is all well and good when I want to distinguish between Android and iOS, but I’m working on a title that needs to support a wide array of iOS devices, some of which have a lot more memory available than others.
I’ve been tasked with reducing the memory footprint on low-end iOS devices, and after my other optimisation efforts, the final step is tanking the Vorbis compression quality, which has the desired result.
But, while I’m OK with users of quite old or low-end devices taking a hit in compression quality, I want high-end iOS devices with more RAM available to use a higher quality setting. There is a Low-End Mobile platform, but judging by the documentation, this means both non-iOS and non-Android devices — the most recent documentation I could find is for FMOD 2.00, so maybe this has changed, but I doubt it.
Is there a way to have two sets of iOS platform settings? We already have a distinction for what these are in our Unity build profiles, so I would just need to be able to manually pair the FMOD platform settings to the Unity build profiles, instead of it being automatically assigned.
I’d appreciate any insights people may have!
Cheers,
Zander
edit: Forgot to note that I’m using FMOD 2.02.28 and Unity 6000.0.26f1
Not exactly. It’s actually filled based on what platforms’ banks exist in your FMOD Studio project’s built banks directory - and those are based on what platforms you’ve defined in FMOD Studio.
Yes.
First, in FMOD Studio, open the preferences dialog and navigate to the “build” tab. You’ll find the list of project platforms.
Then, right-click on the list and select “Add Platform > Mobile.” This creates a new mobile platform with default settings. You can rename it to something else to distinguish it from your existing mobile platform(s); perhaps “high-end mobile” or “powerful iOS device” or something that states the specific models of iOS device you’re targeting.
Every encoding setting in FMOD Studio, from the default encoding setting in the “build” tab to the individual asset encoding settings in the assets browser, are platform-specific. So, if you change the current platform using the drop-down menu in the bottom-right corner of every FMOD Studio window to your new mobile platform, you’ll be able to set the encoding settings for assets on that platform - and you’ll be able to make them completely different to the encoding of your existing mobile platform.
Once you’ve finished specifying your encoding settings for the new mobile platform, all you’ll have to do is build the project (and re-export the banks to the directory your Unity project expects them to be in, if that’s a manual step in your workflow), and both the new platform and your existing platforms should appear in your FMOD settings in Unity.
I haven’t had any trouble with building a separate set of banks with its own encoding settings, but on the Unity end the platforms that I can specify are limited to this pre-defined list
There is only one iOS platform and I cannot make another. Within the settings for iOS I can choose between my two sets of iOS banks as you say, but I cannot make a second iOS platform to assign the other banks to.
Is this settings window the only place where the banks for build platforms is defined? Unity’s Build Profiles window shows how our various other settings are distinguished, but there doesn’t seem to be a way to specify the FMOD platform settings to use in each build profile.
I could assign my different iOS banks to the “High-End Mobile” or “Low-End Mobile” platforms, but I can find no information about which devices these will actually target, and whether I am able to manually assign them to build profiles.
Ah! You’re right. It appears that Unity does not support the creation of multiple different specifications for the same category of platform within a single Unity project, meaning that FMOD’s ability to do so will be of no use. We recommend contacting Unity about this and making a feature request, as wanting to create different builds for high-end and low-end mobile platforms is a common and reasonable use-case.