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.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.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.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.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.1 Subsystem Start-Up and Shut-Down
6.2 Memory Management
6.3 Containers
6.4 Strings
6.5 Engine Configuration
7.1 File System
7.2 The Resource Manager
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.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.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
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.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.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.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
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.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
17.1 Some Engine Systems We Didn’t Cover
17.2 Gameplay Systems
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.1 Version Control
2.2 Microsoft Visual Studio
2.3 Profiling Tools
2.4 Memory Leak and Corruption Detection
2.5 Other Tools
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.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
5.1 Subsystem Start-Up and Shut-Down
5.2 Memory Management
5.3 Containers
5.4 Strings
5.5 Engine Configuration
6.1 File System
6.2 The Resource Manager
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.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.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
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.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.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.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
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.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
16.1 Some Engine Systems We Didn’t Cover
16.2 Gameplay Systems
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.1 Version Control
2.2 Microsoft Visual Studio
2.3 Profiling Tools
2.4 Memory Leak and Corruption Detection
2.5 Other Tools
3.1 C++ Review and Best Practices
3.2 Data, Code and Memory in C/C++
3.3 Catching and Handling Errors
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
5.1 Subsystem Start-Up and Shut-Down
5.2 Memory Management
5.3 Containers
5.4 Strings
5.5 Engine Configuration
6.1 File System
6.2 The Resource Manager
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.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.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
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.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.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
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.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
15.1 Some Engine Systems We Didn’t Cover
15.2 Gameplay Systems