Table of Contents (2nd edition)

Foreword to the First Edition

Foreword to the Second Edition

Preface to the First Edition

Preface to the Second Edition

Acknowledgements

I Foundations

1. Introduction

1.1 Structure of a Typical Game Team

1.2 What Is a Game?

1.3 What Is a Game Engine?

1.4 Engine Differences Across Genres

1.5 Game Engine Survey

1.6 Runtime Engine Architecture

1.7 Tools and the Asset Pipeline

2. Tools of the Trade

2.1 Version Control

2.2 Microsoft Visual Studio

2.3 Profiling Tools

2.4 Memory Leak and Corruption Detection

2.5 Other Tools

3. Fundamentals of Software Engineering for Games

3.1 C++ Review and Best Practices

3.2 Data, Code and Memory

3.3 Catching and Handling Errors

3.4 Pipelines, Caches and Optimization

4. 3D Math for Games

4.1 Solving 3D Problems in 2D

4.2 Points and Vectors

4.3 Matrices

4.4 Quaternions

4.5 Comparison of Rotational Representations

4.6 Other Useful Mathematical Objects

4.7 Hardware-Accelerated SIMD Math

4.8 Random Number Generation

II Low-Level Engine Systems

5. Engine Support Systems

5.1 Subsystem Start-Up and Shut-Down

5.2 Memory Management

5.3 Containers

5.4 Strings

5.5 Engine Configuration

6. Resources and the File System

6.1 File System

6.2 The Resource Manager

7. The Game Loop and Real-Time Simulation

7.1 The Rendering Loop

7.2 The Game Loop

7.3 Game Loop Architectural Styles

7.4 Abstract Timelines

7.5 Measuring and Dealing with Time

7.6 Multiprocessor Game Loops

7.7 Networked Multiplayer Game Loops

8. Human Interface Devices (HID)

8.1 Types of Human Interface Devices

8.2 Interfacing with a HID

8.3 Types of Inputs

8.4 Types of Outputs

8.5 Game Engine HID Systems

8.6 Human Interface Devices in Practice

9. Tools for Debugging and Development

9.1 Logging and Tracing

9.2 Debug Drawing Facilities

9.3 In-Game Menus

9.4 In-Game Console

9.5 Debug Cameras and Pausing the Game

9.6 Cheats

9.7 Screenshots and Movie Capture

9.8 In-Game Profiling

9.9 In-Game Memory Stats and Leak Detection

III Graphics, Motion and Sound

10. The Rendering Engine

10.1 Foundations of Depth-Buffered Triangle Rasterization

10.2 The Rendering Pipeline

10.3 Advanced Lighting and Global Illumination

10.4 Visual Effects and Overlays

10.5 Further Reading

11. Animation Systems

11.1 Types of Character Animation

11.2 Skeletons

11.3 Poses

11.4 Clips

11.5 Skinning and Matrix Palette Generation

11.6 Animation Blending

11.7 Post-Processing

11.8 Compression Techniques

11.9 Animation System Architecture

11.10 The Animation Pipeline

11.11 Action State Machines

11.12 Animation Controllers

12. Collision and Rigid Body Dynamics

12.1 Do You Want Physics in Your Game?

12.2 Collision/Physics Middleware

12.3 The Collision Detection System

12.4 Rigid Body Dynamics

12.5 Integrating a Physics Engine into Your Game

12.6 Advanced Physics Features

13. Audio

13.1 The Physics of Sound

13.2 The Mathematics of Sound

13.3 The Technology of Sound

13.4 Rendering Audio in 3D

13.5 Audio Engine Architecture

13.6 Game-Specific Audio Features

IV Gameplay

14. Introduction to Gameplay Systems

14.1 Anatomy of a Game World

14.2 Implementing Dynamic Elements: Game Objects

14.3 Data-Driven Game Engines

14.4 The Game World Editor

15. Runtime Gameplay Foundation Systems

15.1 Components of the Gameplay Foundation System

15.2 Runtime Object Model Architectures

15.3 World Chunk Data Formats

15.4 Loading and Streaming Game Worlds

15.5 Object References and World Queries

15.6 Updating Game Objects in Real Time

15.7 Events and Message-Passing

15.8 Scripting

15.9 High-Level Game Flow

V Conclusion

16. You Mean There’s More?

16.1 Some Engine Systems We Didn’t Cover

16.2 Gameplay Systems

Bibliography

Index

Back to top


Table of Contents (1st edition)

Foreword

Preface

Acknowledgements

I Foundations

1. Introduction

1.1   Structure of a Typical Game Team

1.2   What Is a Game?

1.3   What Is a Game Engine?

1.4   Engine Differences Across Genres

1.5   Game Engine Survey

1.6   Runtime Engine Architecture

1.7   Tools and the Asset Pipeline

2. Tools of the Trade

2.1   Version Control

2.2   Microsoft Visual Studio

2.3   Profiling Tools

2.4   Memory Leak and Corruption Detection

2.5   Other Tools

3. Fundamentals of Software Engineering for Games

3.1   C++ Review and Best Practices

3.2   Data, Code and Memory in C/C++

3.3   Catching and Handling Errors

4. 3D Math for Games

4.1   Solving 3D Problems in 2D

4.2   Points and Vectors

4.3   Matrices

4.4   Quaternions

4.5   Comparison of Rotational Representations

4.6   Other Useful Mathematical Objects

4.7   Hardware-Accelerated SIMD Math

4.8   Random Number Generation

II Low-Level Engine Systems

5. Engine Support Systems

5.1   Subsystem Start-Up and Shut-Down

5.2   Memory Management

5.3   Containers

5.4   Strings

5.5   Engine Configuration

6. Resources and the File System

6.1   File System

6.2   The Resource Manager

7. The Game Loop and Real-Time Simulation

7.1   The Rendering Loop

7.2   The Game Loop

7.3   Game Loop Architectural Styles

7.4   Abstract Time Lines

7.5   Measuring and Dealing with Time

7.6   Multiprocessor Game Loops

7.7   Networked Multiplayer Game Loops

8. Human Interface Devices (HID)

8.1   Types of Human Interface Devices

8.2   Interfacing with a HID

8.3   Types of Inputs

8.4   Types of Outputs

8.5   Game Engine HID Systems

8.6   Human Interface Devices in Practice

9. Tools for Debugging and Development

9.1   Logging and Tracing

9.2   Debug Drawing Facilities

9.3   In-Game Menus

9.4   In-Game Console

9.5   Debug Cameras and Pausing the Game

9.6   Cheats

9.7   Screen Shots and Movie Capture

9.8   In-Game Profiling

9.9   In-Game Memory Stats and Leak Detection

III Graphics and Motion

10. The Rendering Engine

10.1   Foundations of Depth-Buffered Triangle Rasterization

10.2   The Rendering Pipeline

10.3   Advanced Lighting and Global Illumination

10.4   Visual Effects and Overlays

11. Animation Systems

11.1   Types of Character Animation

11.2   Skeletons

11.3   Poses

11.4   Clips

11.5   Skinning and Matrix Palette Generation

11.6   Animation Blending

11.7   Post-Processing

11.8   Compression Techniques

11.9   Animation System Architecture

11.10   The Animation Pipeline

11.11   Action State Machines

11.12   Animation Controllers

12. Collision and Rigid Body Dynamics

12.1   Do You Want Physics in Your Game?

12.2   Collision/Physics Middleware

12.3   The Collision Detection System

12.4   Rigid Body Dynamics

12.5   Integrating a Physics Engine into Your Game

12.6   A Look Ahead: Advanced Physics Features

IV Gameplay

13. Introduction to Gameplay Systems

13.1   Anatomy of a Game World

13.2   Implementing Dynamic Elements: Game Objects

13.3   Data-Driven Game Engines

13.4   The Game World Editor

14. Runtime Gameplay Foundation Systems

14.1   Components of the Gameplay Foundation System

14.2   Runtime Object Model Architectures

14.3   World Chunk Data Formats

14.4   Loading and Streaming Game Worlds

14.5   Object References and World Queries

14.6   Updating Game Objects in Real Time

14.7   Events and Message-Passing

14.8   Scripting

14.9   High-Level Game Flow

V Conclusion

15. You Mean There’s More?

15.1   Some Engine Systems We Didn’t Cover

15.2   Gameplay Systems

Bibliography

Index