| Foreword |
|
i | |
| Preface |
|
iii | |
| Who This Book Is For |
|
iv | |
| Online Resources |
|
iv | |
| Acknowledgments |
|
v | |
|
|
|
1 | (16) |
|
A Quick Survey of Game Genres |
|
|
2 | (9) |
|
|
|
2 | (2) |
|
|
|
4 | (2) |
|
|
|
6 | (1) |
|
Turn-Based Strategy Games |
|
|
7 | (1) |
|
|
|
7 | (2) |
|
|
|
9 | (1) |
|
|
|
10 | (1) |
|
A Quick Look Under the Hood |
|
|
11 | (6) |
|
|
|
12 | (1) |
|
|
|
12 | (1) |
|
|
|
13 | (1) |
|
|
|
14 | (1) |
|
|
|
14 | (1) |
|
|
|
15 | (2) |
|
|
|
17 | (36) |
|
|
|
17 | (3) |
|
|
|
18 | (1) |
|
|
|
19 | (1) |
|
|
|
20 | (1) |
|
Compiling Programs Under Linux |
|
|
20 | (4) |
|
|
|
24 | (5) |
|
|
|
24 | (4) |
|
|
|
28 | (1) |
|
|
|
29 | (3) |
|
|
|
29 | (1) |
|
|
|
29 | (3) |
|
|
|
32 | (1) |
|
Debugging Linux Applications |
|
|
33 | (9) |
|
|
|
33 | (1) |
|
|
|
34 | (7) |
|
|
|
41 | (1) |
|
|
|
42 | (1) |
|
Project Management with CVS |
|
|
42 | (7) |
|
|
|
43 | (6) |
|
|
|
49 | (4) |
|
Rapid Text Searching with grep |
|
|
49 | (1) |
|
Updating Source with diff and patch |
|
|
50 | (3) |
|
|
|
53 | (16) |
|
|
|
55 | (4) |
|
|
|
55 | (1) |
|
|
|
56 | (1) |
|
|
|
56 | (1) |
|
|
|
57 | (1) |
|
|
|
57 | (1) |
|
|
|
57 | (1) |
|
|
|
58 | (1) |
|
|
|
58 | (1) |
|
Graphical User Interface Toolkits |
|
|
59 | (2) |
|
|
|
59 | (1) |
|
|
|
59 | (1) |
|
|
|
60 | (1) |
|
|
|
60 | (1) |
|
|
|
60 | (1) |
|
|
|
61 | (2) |
|
|
|
61 | (1) |
|
|
|
62 | (1) |
|
|
|
62 | (1) |
|
|
|
63 | (1) |
|
|
|
63 | (1) |
|
|
|
63 | (1) |
|
|
|
63 | (1) |
|
|
|
64 | (1) |
|
|
|
64 | (2) |
|
|
|
65 | (1) |
|
|
|
65 | (1) |
|
|
|
65 | (1) |
|
|
|
66 | (3) |
|
|
|
66 | (1) |
|
libaudiofile and libsndfile |
|
|
67 | (1) |
|
|
|
67 | (1) |
|
The SDL MPEG Library, SMPEG |
|
|
68 | (1) |
|
|
|
68 | (1) |
|
|
|
69 | (92) |
|
Computer Graphics Hardware |
|
|
70 | (1) |
|
|
|
71 | (1) |
|
|
|
72 | (35) |
|
|
|
74 | (3) |
|
|
|
77 | (6) |
|
|
|
83 | (4) |
|
Colorkeys and Transparency |
|
|
87 | (5) |
|
Loading Other Image Formats |
|
|
92 | (1) |
|
|
|
92 | (5) |
|
Achieving Smooth Animation with SDL |
|
|
97 | (10) |
|
Input and Event Processing |
|
|
107 | (13) |
|
|
|
108 | (4) |
|
Processing Keyboard Events |
|
|
112 | (4) |
|
Processing Joystick Events |
|
|
116 | (4) |
|
|
|
120 | (5) |
|
|
|
125 | (15) |
|
Representing Sound with PCM |
|
|
125 | (3) |
|
|
|
128 | (1) |
|
An Example of SDL Audio Playback |
|
|
129 | (11) |
|
Integrating OpenGL with SDL |
|
|
140 | (4) |
|
|
|
144 | (17) |
|
|
|
146 | (1) |
|
Implementing a Parallaxing Scroller in SDL |
|
|
147 | (6) |
|
|
|
153 | (5) |
|
|
|
158 | (3) |
|
|
|
161 | (76) |
|
|
|
162 | (1) |
|
|
|
163 | (1) |
|
|
|
164 | (6) |
|
|
|
164 | (6) |
|
|
|
170 | (1) |
|
|
|
170 | (17) |
|
|
|
175 | (3) |
|
Achieving Higher Performance with Direct DMA Buffer Access |
|
|
178 | (9) |
|
|
|
187 | (8) |
|
Sharing the Sound Card with ESD |
|
|
195 | (5) |
|
|
|
200 | (6) |
|
Environmental Audio with OpenAL |
|
|
206 | (16) |
|
|
|
207 | (6) |
|
Adding Environmental Audio to Penguin Warrior |
|
|
213 | (9) |
|
Implementing Game Music with Ogg Vorbis |
|
|
222 | (15) |
|
Working with Vorbis Files |
|
|
223 | (4) |
|
Adding Music to Penguin Warrior |
|
|
227 | (10) |
|
Game Scripting Under Linux |
|
|
237 | (34) |
|
|
|
238 | (7) |
|
|
|
241 | (4) |
|
|
|
245 | (7) |
|
|
|
246 | (1) |
|
|
|
246 | (4) |
|
Understanding Commands and Objects |
|
|
250 | (2) |
|
A Simple Scripting Engine |
|
|
252 | (6) |
|
|
|
258 | (7) |
|
Applying Scripting to the Real World |
|
|
265 | (6) |
|
Single Versus Multiple Contexts |
|
|
266 | (1) |
|
|
|
267 | (1) |
|
|
|
267 | (1) |
|
Who's Writing the Script? |
|
|
268 | (3) |
|
Networked Gaming with Linux |
|
|
271 | (44) |
|
'Tis a Big Net, Quoth the Raven |
|
|
272 | (3) |
|
|
|
272 | (1) |
|
|
|
273 | (1) |
|
|
|
274 | (1) |
|
|
|
275 | (17) |
|
|
|
275 | (1) |
|
|
|
276 | (9) |
|
Receiving TCP Connections |
|
|
285 | (7) |
|
|
|
292 | (8) |
|
Multiplayer Penguin Warrior |
|
|
300 | (11) |
|
|
|
301 | (1) |
|
Penguin Warrior's Networking System |
|
|
302 | (9) |
|
|
|
311 | (1) |
|
|
|
312 | (3) |
|
Gaming with the Linux Console |
|
|
315 | (40) |
|
Pros and Cons of the Linux Framebuffer |
|
|
316 | (2) |
|
Setting Up a Framebuffer Device |
|
|
318 | (1) |
|
A First Foray into Framebuffer Programming |
|
|
318 | (8) |
|
Setting Framebuffer Video Modes |
|
|
326 | (11) |
|
|
|
327 | (3) |
|
|
|
330 | (1) |
|
|
|
330 | (7) |
|
|
|
337 | (1) |
|
|
|
337 | (18) |
|
Keyboard Input from a Terminal |
|
|
338 | (10) |
|
|
|
348 | (7) |
|
Finishing Penguin Warrior |
|
|
355 | (24) |
|
|
|
355 | (9) |
|
|
|
356 | (6) |
|
|
|
362 | (2) |
|
Imposing a Sane Rate of Fire |
|
|
364 | (1) |
|
|
|
364 | (11) |
|
|
|
375 | (4) |
|
To Every Man a Linux Distribution |
|
|
379 | (20) |
|
|
|
380 | (1) |
|
|
|
381 | (2) |
|
Linux Isn't Alone: Supporting FreeBSD |
|
|
383 | (1) |
|
|
|
384 | (3) |
|
Graphical Installation Goodness: Loki's Setup Program |
|
|
387 | (6) |
|
Understanding the Linux Filesystem Standard |
|
|
393 | (6) |
| Glossary of Terms |
|
399 | (6) |
| Bibliography |
|
405 | |