GDC 2008 Dynamic Zone Emitters: Improved

Dynamic Zone Emitters:
Improved Spatialization of Large
Regions
Bryan Pearson
Senior Engineer
Treyarch
GDC 08
Overview

Look at different techniques for representing
large regions of sound
Streams and Rivers
 Rainforests
 Wildfires

Point Emitters
 Line, Spline, and Block Emitters
 Dynamic Zone Emitters

As always...
These are not hard and fast rules
 Use and/or adapt them to suit your game’s
needs
 Jumping off point for drawing your own
conclusions

Point Emitter
Sound spatialized from a single point in space
 Good for small objects
 Also good for distant objects

Point Emitter
Point Emitter
Point Emitter
Point Emitter
Multiple Point Emitters
Multiple Point Emitters
FLANGING!
Line Emitter
Sound spatialized from the single point nearest
to the listener on the line segment
 As the listener moves, the emission point
moves within its range
 Works well for distant objects

Line Emitter
Only works for objects that are perfectly
straight
 Breaks down when you cross over the line
 Sometimes the player can outrun the updating
of the emission point

Line Emitter
Spline Emitter
Not limited to a straight line
 Still breaks down crossing the spline
 Player may still outrun the update

spLine Emitter
Block Emitter
Sound spatialized from the single point nearest
to the listener within the block
 The player can outrun the emission point
update, particularly when inside the block
 Makes the spatialization sound very jerky

Dynamic Zone Emitter
Single sample played from multiple positions
at once
 Defined by:

A samplecount
 A list of coordinates

Dynamic Zone Emitter
qsort the list of coordinates based on proximity
to listener
 For each coordinate within the samplecount

Calculate speaker volumes for the coordinate
relative to the listener
 Add those volumes into temporary memory


Finally, divide the accumulated speaker
volumes by samplecount, to get the averaged
speaker volumes
Dynamic Zone Emitter

Use a special falloff curve to accentuate the
nearby coordinates
Dynamic Zone Emitter
Crossfade coordinates as they come in and out
of range
 Simply halve the contribution of coordinates
that either just entered or just left the
samplecount this frame
 No additional storage needed, just a temp copy
of the list before it was sorted for comparison

Really Dynamic Zone Emitters

Generate our list of coordinates
programmatically

Accurately depict our wildfire as it expands or
contracts
Really Dynamic Zone Emitters

Use a list of objects rather than coordinates


Allows our sample positions to move in realtime
Walla

As members of a crowd move around, the walla
moves with them
Q&A