|     |  | Copyright | 
|     |  | About the Author | 
|     |  | About the Technical Reviewer | 
|     |  | Acknowledgments | 
|     |  | Tell Us What You Think | 
|     |  | Introduction | 
|     |                           |  | What You Will Learn | 
|     |                           |  | What You Need to Know | 
|     |                           |  | How This Book Is Organized | 
|     |                           |  | Conventions | 
 | 
|     |  | Chapter 1.          A Chronology of Game Programming | 
|     |                           |  | Phase I: Before Spacewar | 
|     |                           |  | Phase II: Spacewar to Atari | 
|     |                           |  | Phase III: Game Consoles and Personal Computers | 
|     |                           |  | Phase IV: Shakedown and Consolidation | 
|     |                           |  | Phase V: The Advent of the Game Engine | 
|     |                           |  | Phase VI: The Handheld Revolution | 
|     |                           |  | Phase VII: The Cellular Phenomenon | 
|     |                           |  | Phase VIII: Multiplayer Games | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 2.          Game Architecture | 
|     |                           |  | Real-Time Software | 
|     |                           |  | The Game Logic Section | 
|     |                           |  | The Presentation Section | 
|     |                           |  | The Programming Process | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 3.          Data Structures and Algorithms | 
|     |                           |  | Types, Structures, and Classes | 
|     |                           |  | Data Structures | 
|     |                           |  | The Standard Template Library | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 4.          Design Patterns | 
|     |                           |  | Design Patterns Defined | 
|     |                           |  | Some Useful Programming Patterns | 
|     |                           |  | Usability Patterns | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 5.          User Input | 
|     |                           |  | The Keyboard | 
|     |                           |  | Mouse | 
|     |                           |  | Joysticks | 
|     |                           |  | Hardware Abstraction | 
|     |                           |  | Force Feedback | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 6.          Fundamental AI Technologies | 
|     |                           |  | Context | 
|     |                           |  | Structure of an AI System | 
|     |                           |  | Specific Technologies | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 7.          Action-Oriented AI | 
|     |                           |  | On Action Games | 
|     |                           |  | Choreographed AIs | 
|     |                           |  | Object Tracking | 
|     |                           |  | Chasing | 
|     |                           |  | Evasion | 
|     |                           |  | Patrolling | 
|     |                           |  | Hiding and Taking Cover | 
|     |                           |  | Shooting | 
|     |                           |  | Putting It All Together | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 8.          Tactical AI | 
|     |                           |  | Tactical Thinking Explained | 
|     |                           |  | Military Analysis: Influence Maps | 
|     |                           |  | Representing Tactics | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 9.          Scripting | 
|     |                           |  | Building a Scripting Language | 
|     |                           |  | Embedded Languages | 
|     |                           |  | Socket-Based Scripting | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 10.          Network Programming | 
|     |                           |  | How the Internet Really Works | 
|     |                           |  | The Programmer's Perspective: Sockets | 
|     |                           |  | Clients | 
|     |                           |  | A Simple TCP Server | 
|     |                           |  | Multiclient Servers | 
|     |                           |  | UDP Servers | 
|     |                           |  | Preventing Socket Blocks | 
|     |                           |  | Designing Client-Server Games | 
|     |                           |  | Massively Multiplayer Games | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 11.          2D Game Programming | 
|     |                           |  | On Older Hardware | 
|     |                           |  | Data Structures for 2D Games | 
|     |                           |  | Mapping Matrices | 
|     |                           |  | 2D Game Algorithms | 
|     |                           |  | Special Effects | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 12.          3D Pipeline Overview | 
|     |                           |  | A First Look | 
|     |                           |  | Fundamental Data Types | 
|     |                           |  | Geometry Formats | 
|     |                           |  | A Generic Graphics Pipeline | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 13.          Indoors Rendering | 
|     |                           |  | General Analysis | 
|     |                           |  | Occluder-Based Algorithms | 
|     |                           |  | Binary Space Partition Algorithms | 
|     |                           |  | Portal Rendering | 
|     |                           |  | Hierarchical Occlusion Maps | 
|     |                           |  | Hybrid Approaches | 
|     |                           |  | Hardware-Assisted Occlusion Tests | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 14.          Outdoors Algorithms | 
|     |                           |  | Overview | 
|     |                           |  | Data Structures for Outdoors Rendering | 
|     |                           |  | Geomipmapping | 
|     |                           |  | ROAM | 
|     |                           |  | Chunked LODs | 
|     |                           |  | A GPU-Centric Approach | 
|     |                           |  | Outdoors Scene Graphs | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 15.          Character Animation | 
|     |                           |  | Analysis | 
|     |                           |  | Explicit Versus Implicit Methods | 
|     |                           |  | Explicit Animation Techniques | 
|     |                           |  | Implicit Animation Overview | 
|     |                           |  | Prop Handling | 
|     |                           |  | A Note on Vehicles | 
|     |                           |  | Limb Slicing | 
|     |                           |  | Facial Animation | 
|     |                           |  | Inverse Kinematics | 
|     |                           |  | Blending Forward and Inverse Kinematics | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 16.          Cinematography | 
|     |                           |  | First-Person Shooters | 
|     |                           |  | Handling Inertia | 
|     |                           |  | Flight Simulators and Quaternions | 
|     |                           |  | Third-Person Cameras | 
|     |                           |  | Cinematic Cameras: Camera Styles | 
|     |                           |  | Cinematic Cameras: Placement Algorithms | 
|     |                           |  | Agent-Based Approaches | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 17.          Shading | 
|     |                           |  | Real-World Illumination | 
|     |                           |  | Light Mapping | 
|     |                           |  | The BRDF | 
|     |                           |  | Nonphotorealistic Rendering | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 18.          Texture Mapping | 
|     |                           |  | Types of Textures | 
|     |                           |  | Tiling and Decals | 
|     |                           |  | Filtering | 
|     |                           |  | Mipmapping | 
|     |                           |  | Texture Optimization | 
|     |                           |  | Multipass Techniques | 
|     |                           |  | Multitexture | 
|     |                           |  | Texture Arithmetic and Combination | 
|     |                           |  | Detail Textures | 
|     |                           |  | Environment Mapping | 
|     |                           |  | Bump Mapping | 
|     |                           |  | Gloss Mapping | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 19.          Particle Systems | 
|     |                           |  | Anatomy of a Particle System | 
|     |                           |  | The Particle Data Structure | 
|     |                           |  | Some Notes on Architecture | 
|     |                           |  | Speed-Up Techniques | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 20.          Organic Rendering | 
|     |                           |  | Nature and Complexity | 
|     |                           |  | Trees | 
|     |                           |  | Grass | 
|     |                           |  | Clouds | 
|     |                           |  | Oceans | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 21.          Procedural Techniques | 
|     |                           |  | Procedural Manifesto | 
|     |                           |  | Renderman | 
|     |                           |  | Real-Time Shading Languages | 
|     |                           |  | Types of Shaders | 
|     |                           |  | Texture Mapping | 
|     |                           |  | Particle Systems | 
|     |                           |  | Animation | 
|     |                           |  | Special Effects | 
|     |                           |  | In Closing | 
 | 
|     |  | Chapter 22.          Geometrical Algorithms | 
|     |                           |  | Point Inclusion Tests | 
|     |                           |  | Ray Intersection Tests | 
|     |                           |  | Moving Tests | 
|     |                           |  | Point Versus Triangle Set Collision (BSP-Based) | 
|     |                           |  | Mesh Versus Mesh (Sweep and Prune Approach) | 
|     |                           |  | Computing a Convex Hull | 
|     |                           |  | Triangle Reduction | 
|     |                           |  | In Closing | 
 | 
|     |  | Appendix A.          Performance Tuning | 
|     |                           |  | Analysis Techniques | 
|     |                           |  | Analysis Tools | 
|     |                           |  | General Optimization Techniques | 
|     |                           |  | Application | 
|     |                           |  | Efficient Data Transfer | 
|     |                           |  | Tuning the Geometry Pipeline | 
|     |                           |  | Tuning the Rasterizer Stage | 
|     |                           |  | Other Optimization Tools | 
|     |                           |  | In Closing | 
 | 
|     |  | Appendix B.          OpenGL | 
|     |                           |  | Philosophy | 
|     |                           |  | Basic Syntax | 
|     |                           |  | Immediate Mode Rendering | 
|     |                           |  | Transformations | 
|     |                           |  | Camera Model | 
|     |                           |  | Lighting | 
|     |                           |  | Texturing | 
|     |                           |  | Working in RGBA Mode | 
|     |                           |  | Display Lists | 
|     |                           |  | Vertex Arrays | 
|     |                           |  | OpenGL Extensions | 
|     |                           |  | Efficiency Considerations | 
|     |                           |  | Geometric Representation | 
|     |                           |  | In Closing | 
 | 
|     |  | Appendix C.          Direct3D | 
|     |                           |  | History | 
|     |                           |  | Booting Direct3D | 
|     |                           |  | Handling Geometry | 
|     |                           |  | Indexed Primitives | 
|     |                           |  | User Pointer Primitives | 
|     |                           |  | Efficient Geometry Delivery | 
|     |                           |  | Flexible Vertex Formats | 
|     |                           |  | Matrices, Cameras, and Transforms | 
|     |                           |  | Working with Texture Maps | 
|     |                           |  | Lighting | 
|     |                           |  | Render States | 
|     |                           |  | The Extension Library | 
|     |                           |  | Animation Helpers | 
|     |                           |  | In Closing | 
 | 
|     |  | Appendix D.          Some Math Involved | 
|     |                           |  | Distances | 
|     |                           |  | Trigonometry | 
|     |                           |  | Vector Math | 
|     |                           |  | Matrices | 
 | 
|     |  | Appendix E.          Further Reading | 
|     |  | Index |