large-scale C++ software architecture in a games context
mathematics for game programming
game development tools for debugging, source control and profiling
engine subsystems including engine foundation systems, rendering, collision, physics, character animation and game world object models
multiplatform game engines
game programming in multiprocessor environments
tools pipelines and the game asset database
Table of Contents
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
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
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
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
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
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
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
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
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
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
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
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
You Mean There’s More?
15.1 Some Engine Systems We Didn’t Cover
15.2 Gameplay Systems