| |
| |
Foreword | |
| |
| |
Preface | |
| |
| |
Acknowledgments | |
| |
| |
About the Cover Image | |
| |
| |
Contributor Bios | |
| |
| |
| |
General Programming | |
| |
| |
Introduction | |
| |
| |
| |
| |
The Science of Debugging Games | |
| |
| |
| |
| |
An HTML-Based Logging and Debugging System | |
| |
| |
| |
| |
The Clock: Keeping Your Finger on the Pulse of the Game | |
| |
| |
| |
| |
Designing and Maintaining Large Cross-Platform Libraries | |
| |
| |
| |
| |
Fight Memory Fragmentation with Templated Freelists | |
| |
| |
| |
| |
A Generic Tree Container in C++ | |
| |
| |
| |
| |
The Beauty of Weak References and Null Objects | |
| |
| |
| |
| |
A System for Managing Game Entities | |
| |
| |
| |
| |
Address-Space Managed Dynamic Arrays for Windows and the Xbox | |
| |
| |
| |
| |
Critically Damped Ease-In/Ease-Out Smoothing | |
| |
| |
| |
| |
A Flexible, On-the-Fly Object Manager | |
| |
| |
| |
| |
Using Custom RTTI Properties to Stream and Edit Objects | |
| |
| |
| |
| |
Using XML without Sacrificing Speed | |
| |
| |
| |
| |
Mathematics | |
| |
| |
Introduction | |
| |
| |
| |
| |
Zobrist Hash Using the Mersenne Twister | |
| |
| |
| |
| |
Extracting Frustum and Camera Information | |
| |
| |
| |
| |
Solving Accuracy Problems in Large World Coordinates | |
| |
| |
| |
| |
Nonuniform Splines | |
| |
| |
| |
| |
Using the Covariance Matrix for Better-Fitting Bounding Objects | |
| |
| |
| |
| |
The Jacobian Transpose Method for Inverse Kinematics | |
| |
| |
| |
| |
Physics | |
| |
| |
Introduction | |
| |
| |
| |
| |
Ten Fingers of Death: Algorithms for Combat Killing | |
| |
| |
| |
| |
Vehicle Physics Simulation for CPU-Limited Systems | |
| |
| |
| |
| |
Writing a Verlet-Based Physics Engine | |
| |
| |
| |
| |
Constraints in Rigid Body Dynamics | |
| |
| |
| |
| |
Fast Contact Reduction for Dynamics Simulation | |
| |
| |
| |
| |
Interactive Water Surfaces | |
| |
| |
| |
| |
Fast Deformations with Multilayered Physics | |
| |
| |
| |
| |
Modal Analysis for Fast, Stable Deformation | |
| |
| |
| |
| |
Artificial Intelligence | |
| |
| |
Introduction | |
| |
| |
| |
| |
Third-Person Camera Navigation | |
| |
| |
| |
| |
Narrative Combat: Using Al to Enhance Tension in an Action Game | |
| |
| |
| |
| |
NPC Decision Making: Dealing with Randomness | |
| |
| |
| |
| |
An Object-Oriented Utility-Based Decision Architecture | |
| |
| |
| |
| |
A Distributed-Reasoning Voting Architecture | |
| |
| |
| |
| |
Attractors and Repulsors | |
| |
| |
| |
| |
Advanced Wall Building for RTS Games | |
| |
| |
| |
| |
Artificial Neural Networks on Programmable Graphics Hardware | |
| |
| |
| |
| |
Graphics | |
| |
| |
Introduction | |
| |
| |
| |
| |
Poster Quality Screenshots | |
| |
| |
| |
| |
GPU Shadow Volume Construction for Nonclosed Meshes | |
| |
| |
| |
| |
Perspective Shadow Maps | |
| |
| |
| |
| |
Combined Depth and ID-Based Shadow Buffers | |
| |
| |
| |
| |
Carving Static Shadows into Geometry | |
| |
| |
| |
| |
Adjusting Real-Time Lighting for Shadow Volumes and Optimized Meshes | |
| |
| |
| |
| |
Real-Time Halftoning: Fast and Simple Stylized Shading | |
| |
| |
| |
| |
Techniques to Apply Team Colors to 3D Models | |
| |
| |
| |
| |
Fast Sepia Tone Conversion | |
| |
| |
| |
| |
Dynamic Gamma Using Sampled Scene Luminance | |
| |
| |
| |
| |
Heat and Haze Post-Processing Effects | |
| |
| |
| |
| |
Hardware Skinning with Quaternions | |
| |
| |
| |
| |
Motion Capture Data Compression | |
| |
| |
| |
| |
Fast Collision Detection for 3D Bones-Based Articulated Characters | |
| |
| |
| |
| |
Terrain Occlusion Culling with Horizons | |
| |
| |
| |
| |
Network and Multiplayer | |
| |
| |
Introduction | |
| |
| |
| |
| |
General Lobby Design and Development | |
| |
| |
| |
| |
Thousands of Clients per Server | |
| |
| |
| |
| |
Efficient MMP Game State Storage | |
| |
| |
| |
| |
Practical Application of Parallel-State Machines in a Client-Server Environment | |
| |
| |
| |
| |
Bit Packing: A Network Compression Technique | |
| |
| |
| |
| |
Time and Consistency Management for Multiserver-Based MMORPGs | |
| |
| |
| |
| |
Audio | |
| |
| |
Introduction | |
| |
| |
| |
| |
A Brief Introduction to OpenAL | |
| |
| |
| |
| |
A Simple Real-Time Lip-Synching System | |
| |
| |
| |
| |
Dynamic Variables and Audio Programming | |
| |
| |
| |
| |
Creating an Audio Scripting System | |
| |
| |
| |
| |
Implementing an Environmental Audio Solution Using EAX and ZoomFX | |
| |
| |
| |
| |
Controlling Real-Time Sound Synthesis from Game Physics | |
| |
| |
| |
| |
About the CD-ROM | |
| |
| |
Index | |