|
|
1 | (6) |
|
1 The Genesis of Audio in Games |
|
|
1 | (2) |
|
2 From Sample Playback to Procedural Audio |
|
|
3 | (2) |
|
|
5 | (2) |
|
|
5 | (1) |
|
|
6 | (1) |
|
2 The Role of Audio in Interactive and Immersive Environments |
|
|
7 | (17) |
|
1 Inform, Entertain, Immerse |
|
|
7 | (10) |
|
|
8 | (1) |
|
a Geometry/Environment: Spatial Awareness |
|
|
9 | (1) |
|
|
10 | (1) |
|
|
10 | (1) |
|
d User Feedback and Game Mechanics |
|
|
11 | (1) |
|
|
12 | (1) |
|
|
12 | (1) |
|
|
13 | (1) |
|
|
14 | (3) |
|
2 Challenges of Game Audio |
|
|
17 | (7) |
|
|
17 | (1) |
|
2 Repetition and Fatigue Avoidance |
|
|
18 | (1) |
|
3 Interactive Elements and Prototyping |
|
|
19 | (1) |
|
|
20 | (1) |
|
5 Environmental Sound Design and Modeling |
|
|
21 | (1) |
|
|
21 | (1) |
|
7 Asset Management and Organization |
|
|
22 | (2) |
|
3 The Game Engine Paradigm |
|
|
24 | (19) |
|
|
24 | (11) |
|
The Unity 3D Project Structure |
|
|
25 | (1) |
|
|
26 | (1) |
|
a 2D, 3D and Cartesian Coordinates |
|
|
26 | (1) |
|
|
27 | (1) |
|
|
28 | (1) |
|
|
28 | (1) |
|
|
29 | (1) |
|
|
29 | (1) |
|
a Everything Is an Object |
|
|
30 | (1) |
|
|
30 | (1) |
|
|
30 | (1) |
|
|
30 | (1) |
|
|
30 | (1) |
|
|
31 | (1) |
|
|
31 | (1) |
|
|
31 | (1) |
|
|
31 | (1) |
|
|
32 | (1) |
|
|
32 | (1) |
|
|
32 | (1) |
|
|
33 | (1) |
|
|
33 | (1) |
|
|
34 | (1) |
|
|
34 | (1) |
|
|
35 | (8) |
|
|
35 | (2) |
|
|
37 | (1) |
|
|
38 | (1) |
|
Rigidbodies and Collision Detection |
|
|
38 | (1) |
|
|
38 | (1) |
|
|
39 | (1) |
|
|
39 | (1) |
|
|
40 | (1) |
|
|
41 | (1) |
|
|
42 | (1) |
|
4 The Audio Engine and Spatial Audio |
|
|
43 | (27) |
|
1 Listeners, Audio Clips and Audio Sources |
|
|
43 | (10) |
|
|
43 | (1) |
|
|
44 | (1) |
|
|
45 | (1) |
|
2 Audio Source Parameters |
|
|
46 | (1) |
|
3 Attenuation Shapes and Distance |
|
|
47 | (1) |
|
|
48 | (2) |
|
b Sound Cones -- Directional Audio Sources |
|
|
50 | (1) |
|
|
50 | (1) |
|
d Volumetric Sound Sources |
|
|
51 | (1) |
|
|
51 | (1) |
|
4 Features of Unity's Audio Engine |
|
|
52 | (1) |
|
|
52 | (1) |
|
|
52 | (1) |
|
|
53 | (1) |
|
2 Audio Localization and Distance Cues |
|
|
53 | (17) |
|
|
54 | (1) |
|
|
54 | (1) |
|
b Dry to Reflected Sound Ratio |
|
|
55 | (1) |
|
c Low Pass Filtering With Distance |
|
|
55 | (1) |
|
|
56 | (1) |
|
|
56 | (1) |
|
a Localization on the Horizontal Plane |
|
|
56 | (2) |
|
b Localization on the Vertical Plane |
|
|
58 | (1) |
|
|
58 | (1) |
|
a Object-based Audio and Binaural Renderings |
|
|
58 | (3) |
|
|
61 | (1) |
|
c Multichannel Audio and Ambisonics |
|
|
62 | (6) |
|
4 Optimizing Sound Design for Spatialization |
|
|
68 | (1) |
|
a Putting It all Together |
|
|
68 | (1) |
|
b Working With 2D and Multichannel Audio |
|
|
68 | (1) |
|
c Working With Ambisonics |
|
|
68 | (1) |
|
d Working With Object-Based Audio |
|
|
68 | (2) |
|
5 Sound Design -- The Art of Effectively Communicating With Sound |
|
|
70 | (45) |
|
1 The Art of Sound Design |
|
|
70 | (16) |
|
1 A Brief History of Sound Design |
|
|
70 | (2) |
|
2 Sound Design -- Basic Considerations |
|
|
72 | (1) |
|
|
72 | (2) |
|
b Sound Design Guidelines |
|
|
74 | (2) |
|
3 Getting the Right Tools |
|
|
76 | (1) |
|
|
77 | (1) |
|
|
77 | (1) |
|
|
78 | (1) |
|
|
78 | (1) |
|
|
78 | (2) |
|
|
80 | (1) |
|
|
80 | (1) |
|
a Microphone Choice: Dynamic vs. Condensers |
|
|
80 | (2) |
|
|
82 | (1) |
|
5 Sound Design -- Before You Start |
|
|
82 | (1) |
|
a Always Use High Quality Material |
|
|
83 | (1) |
|
|
84 | (1) |
|
|
84 | (1) |
|
d Listen for the Expected and the Unexpected |
|
|
84 | (1) |
|
|
85 | (1) |
|
|
85 | (1) |
|
|
86 | (1) |
|
h Experiment, Experiment, Experiment |
|
|
86 | (1) |
|
|
86 | (29) |
|
|
86 | (1) |
|
|
87 | (1) |
|
a Playback Speed Modulation |
|
|
87 | (1) |
|
|
88 | (1) |
|
c Fast Fourier Transform-Based Algorithms |
|
|
89 | (1) |
|
|
89 | (1) |
|
|
90 | (1) |
|
|
91 | (1) |
|
|
91 | (1) |
|
|
92 | (1) |
|
|
92 | (2) |
|
a Blending Through Bus Compression |
|
|
94 | (1) |
|
|
94 | (1) |
|
|
95 | (1) |
|
|
95 | (1) |
|
a Equalization for Sound Design |
|
|
95 | (1) |
|
|
96 | (1) |
|
6 Harmonic Generators/Aural Exciters |
|
|
97 | (1) |
|
7 Granular Synthesis and Granulation of Sampled Sounds |
|
|
97 | (1) |
|
a Granular Synthesis Terminology |
|
|
98 | (1) |
|
b Sound Design Applications of Granular Synthesis |
|
|
99 | (1) |
|
|
100 | (1) |
|
a Ring Modulation/Amplitude Modulation |
|
|
100 | (1) |
|
b Comb Filtering/Resonators |
|
|
101 | (1) |
|
|
102 | (1) |
|
|
102 | (3) |
|
|
105 | (1) |
|
c Reverberation for Environmental Modeling |
|
|
106 | (1) |
|
d Reverberation as a Dramatic Tool |
|
|
107 | (1) |
|
|
107 | (2) |
|
|
109 | (1) |
|
b Speaker and Electronic Circuit Emulation |
|
|
109 | (1) |
|
c Filtering/Very Small Space Emulation |
|
|
110 | (1) |
|
|
110 | (1) |
|
11 Time-Based Modulation FX |
|
|
110 | (1) |
|
|
110 | (1) |
|
|
111 | (1) |
|
|
112 | (1) |
|
|
112 | (1) |
|
|
113 | (2) |
|
|
115 | (32) |
|
1 Setting Up a Sound Design Session and Signal Flow |
|
|
115 | (11) |
|
|
116 | (1) |
|
|
116 | (1) |
|
|
116 | (1) |
|
|
117 | (1) |
|
|
117 | (1) |
|
e Metering: Pre-Fader vs. Post Fader |
|
|
117 | (1) |
|
|
118 | (1) |
|
|
118 | (1) |
|
|
118 | (1) |
|
|
118 | (1) |
|
3 Clipping Is Easy -- Mind the Signal Path |
|
|
119 | (1) |
|
|
120 | (2) |
|
4 Setting Up a Basic Session for Linear Mixes and Cut Scenes |
|
|
122 | (1) |
|
a Music, Dialog and Sound Effects |
|
|
122 | (1) |
|
b Inserts vs. Effects Loops for Reverberation |
|
|
122 | (1) |
|
c Setting Up the Mix Session |
|
|
123 | (1) |
|
d Master Output and Sub Maste |
|
|
124 | (1) |
|
e Submixes and Effects Loops |
|
|
124 | (1) |
|
|
125 | (1) |
|
2 Practical Sound Design and Prototyping |
|
|
126 | (21) |
|
|
126 | (1) |
|
|
126 | (1) |
|
|
127 | (1) |
|
|
128 | (4) |
|
|
132 | (1) |
|
|
132 | (1) |
|
b Selecting Your Material |
|
|
133 | (1) |
|
c Processing and Preparing Your Material |
|
|
133 | (1) |
|
|
134 | (2) |
|
|
136 | (1) |
|
a Primary vs. Secondary Sounds |
|
|
137 | (1) |
|
|
137 | (1) |
|
c Working With Vocal Recordings |
|
|
138 | (3) |
|
d Working With Animal Samples |
|
|
141 | (2) |
|
e Working With Non-Human or Animal Samples |
|
|
143 | (1) |
|
4 An Adaptive Crowd Engine Prototype in MaxMSP |
|
|
143 | (4) |
|
|
147 | (26) |
|
|
147 | (4) |
|
|
148 | (1) |
|
|
148 | (1) |
|
3 Basic Object-Oriented Programming Concepts |
|
|
149 | (1) |
|
a Procedural vs. Object-Oriented |
|
|
149 | (1) |
|
b Encapsulation and Inheritance |
|
|
150 | (1) |
|
2 An Intro to C#: Syntax and Basics |
|
|
151 | (9) |
|
|
151 | (3) |
|
2 Variables, Constants, Data Types Operators, Arrays and Lists |
|
|
154 | (1) |
|
|
154 | (1) |
|
|
154 | (1) |
|
|
155 | (2) |
|
|
157 | (1) |
|
|
158 | (1) |
|
3 Accessing a Function From Another Class |
|
|
159 | (1) |
|
|
160 | (13) |
|
|
160 | (3) |
|
2 Play() vs. PlayOneShot() |
|
|
163 | (1) |
|
|
164 | (2) |
|
|
166 | (1) |
|
5 Detecting Keyboard Events |
|
|
167 | (1) |
|
|
168 | (1) |
|
a Timing -- Frame Rate vs. Absolute Time |
|
|
168 | (2) |
|
b Linear vs. Logarithmic Amplitude |
|
|
170 | (3) |
|
8 Implementing Audio: Common Scenarios |
|
|
173 | (41) |
|
1 Before You Start: Preparing Your Assets |
|
|
173 | (1) |
|
|
174 | (40) |
|
1 Creating Ambiences and Loops |
|
|
175 | (1) |
|
|
175 | (1) |
|
b Creating a Simple Loop -- Looping Techniques |
|
|
176 | (2) |
|
|
178 | (1) |
|
2 Implementing Our Loops in a Unity Level |
|
|
178 | (1) |
|
|
178 | (2) |
|
|
180 | (1) |
|
c Working With the Time Property to Avoid Phasing Issues |
|
|
181 | (1) |
|
|
182 | (1) |
|
a A Simple Random Emitter Algorithm |
|
|
183 | (1) |
|
|
183 | (5) |
|
4 Ambiences, Putting It All Together |
|
|
188 | (1) |
|
|
189 | (1) |
|
a Creating Variations With Footsteps Samples |
|
|
189 | (1) |
|
b Case 1: Swapping Audio Clips |
|
|
190 | (2) |
|
c Case 2: Using PlayScheduled() |
|
|
192 | (1) |
|
|
193 | (1) |
|
|
193 | (2) |
|
b Velocity-based Sample Selection |
|
|
195 | (2) |
|
7 Ray casting and Smart Audio Sources |
|
|
197 | (1) |
|
a Implementing Occlusion With Ray casting |
|
|
197 | (2) |
|
b Avoiding the Pebble Effect |
|
|
199 | (2) |
|
|
201 | (3) |
|
|
204 | (2) |
|
|
206 | (4) |
|
|
210 | (1) |
|
a Creating a Smart Intermittent Emitter Prefab With Occlusion |
|
|
210 | (1) |
|
b Instantiating a Prefab From Scripting |
|
|
210 | (1) |
|
c Destroying an Object Instantiated From a Prefab |
|
|
211 | (1) |
|
d Instantiating Audio Emitters at Random Locations in 3D |
|
|
212 | (2) |
|
|
214 | (24) |
|
1 What Is Environmental Modeling? |
|
|
214 | (10) |
|
|
215 | (1) |
|
a Pre-Computed vs. Real Time Computation |
|
|
216 | (1) |
|
b Absorption Coefficients |
|
|
216 | (1) |
|
c Environmental Modeling With Reverberation in Unity |
|
|
216 | (1) |
|
d Unity's Reverberation Parameters |
|
|
217 | (2) |
|
2 Best Practices for Environmental Modeling |
|
|
219 | (1) |
|
a Late vs. Early Reflections |
|
|
219 | (1) |
|
|
219 | (1) |
|
|
220 | (1) |
|
d High Frequencies vs. Low Frequencies |
|
|
220 | (1) |
|
3 Reverb Zones, Effects Loops and Audio Reverb Filters |
|
|
221 | (1) |
|
|
221 | (2) |
|
b Adding Reverb as an Effect Loop Using the Mixer |
|
|
223 | (1) |
|
|
224 | (1) |
|
|
224 | (6) |
|
1 Filtering as a Product of Distance |
|
|
224 | (1) |
|
a Adding a Low Pass Filter That Will Modulate its Cutoff Frequency Based on Distance |
|
|
224 | (1) |
|
b Width Perception as Product of Distance |
|
|
225 | (2) |
|
c Dry to Wet Ratio as a Product of Distance |
|
|
227 | (2) |
|
d Distance Simulation: Putting It All Together |
|
|
229 | (1) |
|
|
230 | (8) |
|
1 Occlusion, Obstruction, Exclusion |
|
|
230 | (1) |
|
|
231 | (1) |
|
|
231 | (1) |
|
|
232 | (1) |
|
|
233 | (1) |
|
|
234 | (4) |
|
10 Procedural Audio: Beyond Samples |
|
|
238 | (13) |
|
1 Introduction, Benefits and Drawbacks |
|
|
238 | (4) |
|
1 What Is Procedural Audio? |
|
|
239 | (1) |
|
a Procedural Audio, Pros and Cons |
|
|
239 | (2) |
|
b Approaches to Procedural Audio |
|
|
241 | (1) |
|
2 Practical Procedural Audio: A Wind Machine and a Sword Collision Model |
|
|
242 | (9) |
|
1 A Wind Machine in MaxMSP With Subtractive Synthesis |
|
|
242 | (3) |
|
Making the Model Flexible |
|
|
245 | (1) |
|
2 A Sword Maker in MaxMSP With Linear Modal Synthesis |
|
|
246 | (2) |
|
|
248 | (1) |
|
|
249 | (1) |
|
|
250 | (1) |
|
Making the Model Flexible |
|
|
250 | (1) |
|
|
251 | (25) |
|
1 What's in a Mix? Inform and Entertain (Again) |
|
|
251 | (8) |
|
|
251 | (2) |
|
2 Music, Dialogue and Sound Effects |
|
|
253 | (1) |
|
3 Planning and Pre-Production |
|
|
254 | (1) |
|
|
254 | (1) |
|
|
255 | (1) |
|
|
256 | (2) |
|
d Passive vs. Active Mix Events |
|
|
258 | (1) |
|
|
259 | (7) |
|
1 Adding Groups to the Unity Mixer |
|
|
259 | (1) |
|
2 The Audio Group Inspector |
|
|
260 | (1) |
|
3 Working With Views and Colors in the Unity Mixer |
|
|
261 | (1) |
|
|
262 | (1) |
|
4 Adding Effects to Groups in Unity |
|
|
262 | (1) |
|
5 Inserts vs. Effect Loops |
|
|
263 | (1) |
|
6 Setting Up an Effect Loop for Reverberation in Unity Using Send and Receive |
|
|
264 | (1) |
|
Note on Adjusting Levels During Gameplay |
|
|
265 | (1) |
|
|
266 | (1) |
|
Setting Up a Ducking Compressor in Unity |
|
|
266 | (1) |
|
3 Snapshots, Automation and Game States |
|
|
266 | (5) |
|
|
267 | (1) |
|
2 Recalling Snapshots via Scripting |
|
|
268 | (2) |
|
3 Editing Mixer and Plugin Parameters via Scripting |
|
|
270 | (1) |
|
4 Exposing a Parameter: Controlling a Volume Slider |
|
|
270 | (1) |
|
|
271 | (5) |
|
|
273 | (3) |
|
|
276 | (11) |
|
1 Digital Audio: A Quick Review |
|
|
276 | (2) |
|
|
276 | (1) |
|
|
277 | (1) |
|
2 Data Reduction Strategies |
|
|
278 | (4) |
|
1 Speech vs. Generic Audio |
|
|
279 | (1) |
|
|
279 | (1) |
|
|
280 | (1) |
|
|
280 | (1) |
|
|
280 | (1) |
|
|
280 | (1) |
|
|
281 | (1) |
|
|
281 | (1) |
|
|
282 | (1) |
|
e Adaptive Differential Pulse Code Modulation |
|
|
282 | (1) |
|
3 Data Reduction Good Practices |
|
|
282 | (1) |
|
4 Data Reduction Options in Unity |
|
|
283 | (4) |
|
|
283 | (1) |
|
|
284 | (1) |
|
3 Compression Formats Options |
|
|
285 | (1) |
|
|
286 | (1) |
Index |
|
287 | |