XACTing Siphon Spirit

This is a tech-heavy post, specifically regarding XNA, XACT, and the in and outs of video game sound design.
This post isn’t for everyone.

Up to this point…

All the sound in Siphon Spirit has been implemented using the basic soundEffect.Play(); functions for all the sounds within the game, which has given us — specifically me — very little control on the audio within the game.  Play, stop, loop, and volume — all with their own quirks and downfalls. Two audio files played simultaneously would never sync, things looped with an audible seam, and if I wanted to add pitch variations to common sounds, I had to make that many sound files and play them at random.  So, not ideal.

Luckily for us…

XNA Game Studio comes with a built in audio engine with far more flexibility and functionality than can be achieved with code alone.  Seamless looping: check. Automatic pitch variation: check. Ability to pan: check.  Take audio control away from the coder and give it to me, much to his chagrin: check! And, like everything else XNA, it’s free.  Not just free to download and use on projects that will never make money, like fMod and WWise, but free to every XNA project you ever build.

But…

XNA documentation is awful — Not Microsoft-awful, but awful in general — and the sections on XACT are less informative than the rest of it.  To figure any of it out, you have to be both a programmer and a sound guy, and you pretty much have to have the code and the audio library open at the same time to get things working correctly.  In our case, that means I work on the audio library at the same time as our programmer, Curtis, implements the code, and we tackle any bugs that pop up via IM, Dropbox, and Google — because, like I mentioned, XNA documentation sucks, and all of our solutions have actually come from 3rd party / frustrated-user tutorials.  And, like all things Microsoft, sometimes things will work in one build and not in the next, even though nothing was changed.

So…

  • Why not use fMod or WWise? Because we want to make money, but don’t have the initial flow to pay for licensing.
  • Why not use the built in sound functions, and just live with it? Two words… seamless looping.  Actually, scratch that.. more control.
  • What about *insert other audio middleware / library here*? Because, honestly, I don’t know of any other.

In conclusion

XACT will, I believe, reveal itself to be time well spent.  Not only can I put this experience on my resume, but the feel of Siphon Spirit, and any other XNA game I work on will benefit from the headaches I’m suffering through right now. And it’s actually really nice to feel like I’m part of the creative process beyond just the assets  I’ve been creating.

And the real reason I wrote this post…

Was to link this blog post by Kevin Gadd about simple dynamic audio within XACT.  If I didn’t find that, everything XACT related would never have made any sense.  If you found this post because you’re frustrated with XACT, check out that link.

Related posts:

  1. Time to start taking myself seriously.
  2. Global Game Jam, 2010
  3. Oh, wow… you’re still here.
  4. Guerilla Marketing for Modern Composers: First Things First
  5. Siphon Spirit

Tags: , , , , , , ,