I had the pleasure of working on different indie projects during the past couple of months. Each of them used different game engines to get things done.
In this multi-part series I want to share experiences I made with these tools along some personal thoughts. This will be no thorough test of these environments but rather a quick look at how I felt during development, what I liked and disliked. It’s an excerpt from a personal journey and only as far as I worked with these tools. In the case of Unity 3D it was about 4 months at the time of writing, and ongoing. Let’s dive into Unity 3D!
Please read part 1 to get an idea of what I’m looking for in a game development environment.
About The Unity 3D License
Unity 3D offers a free and multiple paid versions of their software with the free version being limited in features. For example, you can’t use all the cool gfx features such as real-time shadows or deferred rendering, it lacks audio features such as reverb zones and filters, it has no profiler and no external version control capabilities. Which basically makes the free version an environment for a one-man-show. Or you mail project export files back and forth. Happy development when you’re in a team… Have a look at the version differences in the Unity Store.
That means that if you want to develop in a team and use some of the pro features (which in my opinion you’ll find yourself in need of very quickly), you have to buy the pro license for $1500. The good thing is, there are no royalties you have to pay Unity after that. The bad news is, you need to pay more per seat if you want to build your game for Android (another $1500) and iPhone (another $1500$). And if you develop in a team you could either use SVN or the much better integrated Team Server (another $500). So it gets expensive pretty quickly if you’re planning on developing an experimental indie game. But fair enough. So much for the license side of things, let’s get to the audio part already.
Unity 3D was a great disappointment as far as audio goes. Our Son of Nor project picked it because it was very extensible and flexible for programmers. It’s surely a very powerful environment, but it has very few to offer us sound designers. Let’s have a look.
Audio in Unity’s terminology is called Audio Clip (the actual file) and Audio Source (the object you can place in your 3D world that emits sound and has additional parameters, kind of an instance of the Audio Clip). And this documentation here is everything there is to it. It’s not much you say? You’re right. Basically all you can do is set the volume, the pitch, and some attenuation curves using the editor. There is no randomization of any parameters and you can’t combine multiple sounds to a larger ambient sound or more complicated sound construct or sequence.
Working On Sound
The moment you position an Audio Source (basically this is a speaker) in the 3D world and start the game, it plays once or indefinitely (if you enable the loop
feature). In the editor itself, you can only listen to the source sound file (WAV, OGG, MP3), but not to the settings you made regarding pitch and volume. These settings are only audible when running the game. It’s clear the Audio Source is not made for sound designers working on the project but for programmers instantiating Audio Sources in the project where they need it. Unity 3D does not provide any meaningful audio editing environment or audition facility.
I ask myself how sounds get implemented in normal projects. I can’t imagine all sound designers are programmers who just dive into C# and then code triggers, random components and pitch modulators.
Now, I said Unity was very extensible. And it’s true developers can surface all these parameters into a nice UI if they wanted. But then again, why hasn’t Unity done this already? Programmers are not the ones who should implement my sounds and set the parameters, it’s me. And I should not be required to open the C# editor for that.
For me this just doesn’t feel right! Unity should put some audio extensions on their roadmap for the coming versions!
What frustrated me even more was the fact that Unity features an FMOD logo on their website. And it literally says there: „Unity 3 provides some of the world’s strongest audio tools through FMOD. This gives you the world’s leading audio engine, with the world’s best editing tools on top.“ Similar misinformation can be found on FMOD’s website, too: „FMOD also has integrations with the following game engines: Unity (FMOD is the default audio solution).“
I naturally assumed the lack of audio editing features would be compensated for by being able to use FMOD Designer. But don’t bother looking for it. I searched the documentation, I looked in the forums, I even wrote Unity and the FMOD support teams and asked how this was supposed to work. Neither knew anything about an FMOD integration. My theory is Unity uses FMOD’s backend to build projects for multiple platforms, but that’s it. There is no way of integrating FMOD Designer project files in Unity projects even if it looks like it on the website. And this just … really sucks.
Fortunately, there are plugins that step in and provide sound designers with proper tools for manipulating sound parameters. There is Fabric by Tazman Audio for $75 (which seems currently unavailable) and there’s the AudioToolkit by ClockStone Software for $45. We ran into some problems with the Fabric plugin and had several debugging rounds with the developer, who is a great guy. But in the end we decided to give the AudioToolkit a try. I’ll maybe write a separate article about this later.
Both plugins provide sound designers with the ability to work directly in the project, combine multiple sounds and create richer sounds without involving coders. Basically these plugins provide the audio UI that Unity 3D is lacking. But here, too, you can’t audition sounds in the editor, you need to start the game for that.
I was very frustrated in the beginning, having to read forums, searching the net and even writing Unity and FMOD support only to find out that one can’t use FMOD Designer even though their website seems to advertise this integration. Unity 3D offers sound designers super little out-of-the-box. You have to buy extra plugins (and spend even more money) to fill a substantial gap Unity should have addressed in their base package in the first place. I don’t like the implication of this: Unity provides a skeleton product and lets developers sell extensions that fill basic gaps in their product. Maybe you could pull this off, but not at this price tag!
Unity, please fix this.
Read part 2 (UDK) of this series.