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