AUDIO SPECIAL: How FMOD managed to repair its tech from UE3 crashes
At GameSoundCon last year we heard the message that a lot of people are using Unreal Engine 3 and a lot of people are using FMOD Designer – but that they don’t work together. We listened to long-time FMOD users who were struggling with Unreal’s built-in audio system and wishing that they could use FMOD Designer on their Unreal projects so they could do all the cool things that FMOD enables.
So, we set about making an integration between FMOD and Unreal. Essentially, that means we’ve written a bunch of code that you can download that makes Unreal use FMOD as its sound engine. This provides some really cool features that then allow you to leverage the power of FMOD from within your Unreal game.
The power of FMOD stems largely from its low-level FMOD Ex engine. This is the heart of FMOD; the thing that’s hidden away behind the scenes in so many games these days. The first thing we did was replace Unreal’s built-in audio engine with FMOD Ex. We didn’t make FMOD run side-by-side with Unreal’s built-in audio engine – we just completely replaced it. This means that you can still use Unreal’s ‘sound cues’ etc. but, under the hood, it’ll actually be using FMOD.
The other major part of FMOD is the Event System. This is what plays back the events that you create with the FMOD Designer tool. It is built on top of FMOD Ex. We added the code to Unreal so that you are able to work with the FMOD Event System using UnrealScript. We exposed all of the features of FMOD’s events, event parameters, categories and interactive music cues so that they can be used by UnrealScript and its programmers can write UnrealScript to work well with all these things. That leaves the coders feeling happy, but what about the sound designers?
The next step was to hook FMOD into the Unreal editor so you could use and manipulate FMOD objects without having to write any code at all. We covered everything from actors to visual scripting, allowing complete control of the playback of FMOD generated content.
One limitation of Unreal’s built-in audio engine is that it can’t play streaming audio direct from disk. Streaming audio is FMOD’s bread and butter so, of course, we implemented it into Unreal. Rather than just tacking our streaming engine on the side of Unreal, we decided to go for a truly integrated solution and route all of our streaming through Unreal’s streaming I/O system. This means that it plays nicely with the rest of the game and that programmers can manage audio streaming the same way they manage any other streaming; only one system to think about.
FMOD Designer is a sound design tool for creating game audio. It’s the user-friendly, ‘sound guy’ front end of FMOD where sound designers can prototype, create and profile game audio without the need for programmer interaction. If FMOD Ex is the engine under the hood, FMOD Designer is very much the sexy, sleek body around it – it drives the game audio, and it’s where all the creativity and experience and mad chops come into play. By making it possible to use FMOD Designer with Unreal, we wanted to enable sound designers to use all their professional audio skills and experience to actually make game audio.
For example, designers can work in a familiar multi-track environment within FMOD Designer to create truly dynamic sound effects. They can use familiar tools such as effects and automation to make sound effects react to what’s happening in the game.
EASY DOES IT
Mixing game audio is also made easy by FMOD Designer. Rather than tweaking individual sounds in the UE3 editor, you can use FMOD Designer’s bulk editor to survey and tweak the volumes for all sounds in the game using mixer-like fader controls.
Well, that’s how we’ve tackled the problem of using FMOD Designer with Unreal. Hopefully we’ve gone some way towards making FMOD Designer a tool that can be used regardless of the game engine you’re working with. Ideally, we’d like to provide similar integrations with all the popular game engines – we already support CryENGINE, Unity, Vision, Torque and BigWorld in addition to Unreal – because, frankly, sound designers shouldn’t be forced to use a particular audio tool just because the graphics guys chose the wrong game engine.