|
It's a
great time in game audio these days. As we move forward in the current console
generation, several emerging examples of best practices in audio implementation
have been exposed through articles, demonstrations, and video examples.
Even
though in some ways it feels like the race towards next gen has just begun,
some of the forward-thinking frontrunners in the burgeoning field of Technical
Sound Design have been establishing innovative techniques and pulling off
inspirational audio since the starting gun was fired over four years ago with
the release of the Xbox 360.
It's a
good feeling to know that there are people out there doing the deep thinking in
order to bring you some of the richest audio experiences in games available
today. In some ways, everyone working in game audio is trying to solve a lot of
the same problems.
Whether you're implementing a dynamic mixing system,
interactive music, or a living, breathing ambient system, the chances are good
that your colleagues are slaving away trying to solve similar problems to
support their own titles.
In trying
to unravel the mystery of what makes things tick, I'll be taking a deeper look
at our current generation of game sound and singling out several pioneers and
outspoken individuals who are leaving a trail of interactive sonic goodness
(and publicly available information) in their wake. Stick around for the
harrowing saga of the technical sound designer in today's multi-platform
maelstrom.
Reverb
Reverb is
one area that has been gaining ground since the early days of EAX on the PC
platform, and more recently thanks to its omnipresence in audio middleware
toolsets.
It has
become standard practice to enable reverb within a single game level, and apply
a single preset algorithm to a subset of the sound mix. Many developers have
taken this a step further and created reverb regions that will call different reverb
presets based on the area the player is currently located. This allows the reverb
to change based on predetermined locations using predefined reverb settings.
Furthermore, these presets have been extended to areas outside of the player
region, so that sounds coming from a different region can use the region and
settings of their origin in order to get their reverberant information. Each of
these scenarios is valid in an industry where you must carefully balance all of
your resources, and where features must play to the strengths of your game
design.
While
preset reverb and reverb regions have become a standard and are a welcome
addition to a sound designer's toolbox, there is still the potential to push
further into realtime. By calculating the reverb of a sound in the game at
runtime either through the calculation of geometry at the time a sound is
played or through the use of reverb convolution.
Leading
the charge in 2007 with Crackdown, Realtime Worlds set out to bring the idea of
realtime convolution reverb to the front line.
"When we heard the results of our complex Reverb/Reflections/Convolution
or 'Audio-Shader' system in Crackdown,
we knew that we could make our gunfights sound like that, only in realtime!
Because we are simulating true reflections on every 3D voice in the game, with
the right content, we could immerse the player in a way never before heard."-
Raymond Usher, to Team Xbox

Crackdown
So, what
is realtime Reverb using ray tracing and convolution in the context of a
per-voice implementation? Here's a quick definition of ray tracing as it
applies to physics calculation:
"In physics, ray tracing is a
method for calculating the path of waves or particles through a system with
regions of varying propagation velocity, absorption characteristics, and
reflecting surfaces. Under these circumstances, wavefronts may bend, change
direction, or reflect off surfaces, complicating analysis.
Ray tracing solves
the problem by repeatedly advancing idealized narrow beams called rays through
the medium by discrete amounts. Simple problems can be analyzed by propagating
a few rays using simple mathematics. More detailed analysis can be performed by
using a computer to propagate many rays." - Wikipedia
On the other side of the coin you have the concept of convolution: "In audio signal processing, convolution
reverb is a process for digitally simulating the reverberation of a physical or
virtual space. It is based on the mathematical convolution operation, and uses
a pre-recorded audio sample of the impulse response of the space being modeled.
To apply the reverberation effect, the impulse-response recording is first
stored in a digital signal-processing system. This is then convolved with the
incoming audio signal to be processed." - Wikipedia
What you end up with is a pre-recorded impulse response of a space being
modified (or convoluted) by the ray-traced calculations of the surrounding physical
spaces. What this allows the sound to communicate in realtime is a greater
sense of location and dynamics as sound is triggered from a point in 3D space,
and sound is reflected off of the geometry of the immediate surrounding area.
You can
hear the results of their effort in every gunshot, explosion, physics object,
and car radio as you travel through the concrete jungle of Crackdown's Pacific City. It's worth noting that Ruffian
Games' Crackdown 2 will be hitting
shelves soon, as will Realtime Worlds' new MMO All Points Bulletin.
With a future for convolution reverb implied by
recent news of Audiokinetic's Wwise toolset, let's hope the idea of realtime reverb
continues to play an integral part in the next steps towards runtime
spatialization.
|
I have found IR Reverb plugins, for example Audio Ease Altiverb, to be quite expensive on even the meanest CPUs, particularly relative to the non-IR plugs. I imagine that during game play, the convolution process must be reworked constantly to match locality, and in some cases, for example when a sound occurs in an adjacent but acoustically different space, there may be need for more than one IR for the convolution process at one time. For these reasons I am struggling to understand how such a potentially CPU heavy process can work, or have I missed the point as well as lose the plot?
Thanks again for a great feature - Ro
Roland, I definitely feel for you on the CPU issues, particularly while working with an online game development team. We always need to think specifically about the balance between pre-processed and dynamically processed content.
Unfortunately I can't comment too much on the "how" of it working other than to say that games like Crackdown and more recently Prototype are pulling it off. My guess is, as Jen alluded to, that they struck a balance between CPU performance and processing capability. Without any additional technical information available one can only posit that they may have traded off the frequency of updating an objects position, or possibly the quality level of the convolution to find a "happy place" for their runtime.
Anyone wanna chime in with some meaty details? :)
Thanks for taking a look!
Great article Damian! Keep it up!
"A great example of the power of the Cell processor is that MultiStream can process 50 * 2 second convolution reverbs on one SPU in realtime. MultiStream can also decode approximately 400 MP3's on a single SPU in realtime." -- Jason Page, SCEE (Sony Computer Entertainment Europe).
http://www.gamasutra.com/view/feature/3814/nextgen_audio_squareoff_.php?page=3
I know that with a lot of the smaller budget titles use Convolution for space or speaker modeling but don't do it on a real-time basis, most of the processing occurs in the DAW and the files are pre-processed when they're accessed in game. Having the ability to manipulate these environments (or use them) in real-time world would be very taxing as plugins (like Pro Tools TL SPACE or Logic's Space Designer) can take up to 5% of processing power on dedicated audio systems.
Sorry I couldnt provide more information to you which you requested.
To me the fundamental trend in the last years and ongoing is to enchance the creativity, responsibility, capability, and possibility of the Sound Designers through technology. All the tech we see and which I develop ultimately serves the Designers to bring their "vision" (pun intended) into the game and to the player. Tech for its own reason is useless, imho.
Cheers
Thanks, I learned it from watching you!
@Tomas
Well, as long as you were busy enabling creative audio tech I think we can all forgive you. :)
I also think you have nailed it in your comment, all the features and functionality in the world don't mean a thing if you can't access them -and iterate on them- in the toolset/ pipeline.
There have been many cases where we (as Sound Designers and Implementers) have been limited by this disconnect; it's not that parameter values, game states, or geometry information isn't available, it's that there is often no way of hooking into it for sound without valuable programmer resources.
I continue to look forward to the further refinement of this aspect of the audio pipeline.
Thanks to everyone for furthering the discussion.