Table of Contents (4th edition)

Preface

Volume I, Foundations and Core Engine Systems

1. Introduction

1.1 What Is a Game?

1.2 What Is a Game Engine?

1.3 Engine Differences Across Genres

1.4 Game Engine Survey

1.5 Runtime Engine Architecture

1.6 Tools and the Asset Pipeline

2. Tools of the Trade

2.1 Version Control

2.2 Compilers, Linkers and IDEs

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 Catching and Handling Errors

3.3 Data, Code and Memory Layout

3.4 Computer Hardware Fundamentals

3.5 Memory Architectures

4. Parallelism and Concurrent Programming

4.1 Defining Concurrency and Parallelism

4.2 Implicit Parallelism

4.3 Explicit Parallelism

4.4 Operating System Fundamentals

4.5 Introduction to Concurrent Programming

4.6 Thread Synchronization Primitives

4.7 Problems with Lock-Based Concurrency

4.8 Some Rules of Thumb for Concurrency

4.9 Lock-Free Concurrency

4.10 SIMD/Vector Processing

4.11 Introduction to GPGPU Programming

5. 3D Math for Games

5.1 Solving 3D Problems in 2D

5.2 Points and Vectors

5.3 Matrices

5.4 Quaternions

5.5 Comparison of Rotational Representations

5.6 Other Useful Mathematical Objects

5.7 Random Number Generation

6. Engine Support Systems

6.1 Subsystem Start-Up and Shut-Down

6.2 Memory Management

6.3 Containers

6.4 Strings

6.5 Engine Configuration

7. Resources and the File System

7.1 File System

7.2 The Resource Manager

8. The Game Loop and Real-Time Simulation

8.1 The Rendering Loop

8.2 The Game Loop

8.3 Game Loop Architectural Styles

8.4 Abstract Timelines

8.5 Measuring and Dealing with Time

8.6 Multiprocessor Game Loops

9. Human Interface Devices

9.1 Types of Human Interface Devices

9.2 Interfacing with a HID

9.3 Types of Inputs

9.4 Types of Outputs

9.5 Game Engine HID Systems

9.6 Human Interface Devices in Practice

10. Tools for Debugging and Development

10.1 Logging and Tracing

10.2 Debug Drawing Facilities

10.3 In-Game Menus

10.4 In-Game Console

10.5 Debug Cameras and Pausing the Game

10.6 Cheats

10.7 Screenshots and Movie Capture

10.8 In-Game Profiling

10.9 In-Game Memory Stats and Leak Detection

Volume II, Graphics, Motion, and Sound

11. Rendering

11.1 The Rendering Problem

11.2 Lights, Camera, Action!

11.3 Foundations of 3D Rendering

11.4 Programming the 3D Graphics Pipeline

11.5 Pipeline Management: The Application Layer

11.6 Geometry Processing and Other Visual Effects

12. Lighting and Post-Processing

12.1 The Lighting Problem

12.2 Radiometry and the Theory of Light Transport

12.3 The Rendering Equation

12.4 The Shading Equation

12.5 Lighting with Triangle Rasterization

12.6 Lighting with Stochasic Ray Tracing

12.7 Post-Processing

12.8 Overlays and User Interfaces

12.9 Tools for Development and Debugging

12.10 Further Reading

13. Animation Systems

13.1 Types of Character Animation

13.2 Skeletons

13.3 Poses

13.4 Clips

13.5 Skinning and Matrix Palette Generation

13.6 Animation Blending

13.7 Post-Processing

13.8 Compression Techniques

13.9 The Animation Pipeline

13.10 Action State Machines

13.11 Constraints

13.12 Motion Matching

14. Collision and Rigid Body Dynamics

14.1 Do You Want Physics in Your Game?

14.2 Collision/Physics Middleware

14.3 The Collision Detection System

14.4 Rigid Body Dynamics

14.5 Integrating a Physics Engine into Your Game

14.6 Advanced Physics Features

15. Audio

15.1 The Physics of Sound

15.2 The Mathematics of Sound

15.3 The Technology of Sound

15.4 Rendering Audio in 3D

15.5 Audio Engine Architecture

15.6 Game-Specific Audio Features

16. Introduction to Gameplay Systems

16.1 Anatomy of a Game World

16.2 Implementing Dynamic Elements: Game Objects

16.3 Data-Driven Game Engines

16.4 The Game World Editor

17. Runtime Gameplay Systems

17.1 Components of the Gameplay Foundation System

17.2 Runtime Object Model Architectures

17.3 World Chunk Data Formats

17.4 Loading and Streaming Game Worlds

17.5 Object References and World Queries

17.6 Updating Game Objects in Real Time

17.7 Concurrent Game Object Updates

17.8 Events and Message-Passing

17.9 Scripting

17.10 High-Level Game Flow

18. You Mean There's More?

18.1 Some Engine Systems We Didn't Cover

18.2 Gameplay Systems

Bibliography

Index

Back to top


Table of Contents (3rd edition)

Preface

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 Compilers, Linkers and IDEs

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 Catching and Handling Errors

3.3 Data, Code and Memory Layout

3.4 Computer Hardware Fundamentals

3.5 Memory Architectures

4. Parallelism and Concurrent Programming

4.1 Defining Concurrency and Parallelism

4.2 Implicit Parallelism

4.3 Explicit Parallelism

4.4 Operating System Fundamentals

4.5 Introduction to Concurrent Programming

4.6 Thread Synchronization Primitives

4.7 Problems with Lock-Based Concurrency

4.8 Some Rules of Thumb for Concurrency

4.9 Lock-Free Concurrency

4.10 SIMD/Vector Processing

4.11 Introduction to GPGPU Programming

5. 3D Math for Games

5.1 Solving 3D Problems in 2D

5.2 Points and Vectors

5.3 Matrices

5.4 Quaternions

5.5 Comparison of Rotational Representations

5.6 Other Useful Mathematical Objects

5.7 Random Number Generation

II Low-Level Engine Systems

6. Engine Support Systems

6.1 Subsystem Start-Up and Shut-Down

6.2 Memory Management

6.3 Containers

6.4 Strings

6.5 Engine Configuration

7. Resources and the File System

7.1 File System

7.2 The Resource Manager

8. The Game Loop and Real-Time Simulation

8.1 The Rendering Loop

8.2 The Game Loop

8.3 Game Loop Architectural Styles

8.4 Abstract Timelines

8.5 Measuring and Dealing with Time

8.6 Multiprocessor Game Loops

9. Human Interface Devices (HID)

9.1 Types of Human Interface Devices

9.2 Interfacing with a HID

9.3 Types of Inputs

9.4 Types of Outputs

9.5 Game Engine HID Systems

9.6 Human Interface Devices in Practice

10. Tools for Debugging and Development

10.1 Logging and Tracing

10.2 Debug Drawing Facilities

10.3 In-Game Menus

10.4 In-Game Console

10.5 Debug Cameras and Pausing the Game

10.6 Cheats

10.7 Screenshots and Movie Capture

10.8 In-Game Profiling

10.9 In-Game Memory Stats and Leak Detection

III Graphics, Motion and Sound

11. The Rendering Engine

11.1 Foundations of Depth-Buffered Triangle Rasterization

11.2 The Rendering Pipeline

11.3 Advanced Lighting and Global Illumination

11.4 Visual Effects and Overlays

11.5 Further Reading

12. Animation Systems

12.1 Types of Character Animation

12.2 Skeletons

12.3 Poses

12.4 Clips

12.5 Skinning and Matrix Palette Generation

12.6 Animation Blending

12.7 Post-Processing

12.8 Compression Techniques

12.9 The Animation Pipeline

12.10 Action State Machines

12.11 Constraints

13. Collision and Rigid Body Dynamics

13.1 Do You Want Physics in Your Game?

13.2 Collision/Physics Middleware

13.3 The Collision Detection System

13.4 Rigid Body Dynamics

13.5 Integrating a Physics Engine into Your Game

13.6 Advanced Physics Features

14. Audio

14.1 The Physics of Sound

14.2 The Mathematics of Sound

14.3 The Technology of Sound

14.4 Rendering Audio in 3D

14.5 Audio Engine Architecture

14.6 Game-Specific Audio Features

IV Gameplay

15. Introduction to Gameplay Systems

15.1 Anatomy of a Game World

15.2 Implementing Dynamic Elements: Game Objects

15.3 Data-Driven Game Engines

15.4 The Game World Editor

16. Runtime Gameplay Foundation Systems

16.1 Components of the Gameplay Foundation System

16.2 Runtime Object Model Architectures

16.3 World Chunk Data Formats

16.4 Loading and Streaming Game Worlds

16.5 Object References and World Queries

16.6 Updating Game Objects in Real Time

16.7 Applying Concurrency to Game Object Updates

16.8 Events and Message-Passing

16.9 Scripting

16.10 High-Level Game Flow

V Conclusion

17. You Mean There’s More?

17.1 Some Engine Systems We Didn’t Cover

17.2 Gameplay Systems

Bibliography

Index

Back to top


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