0%

Book Description

In this new and improved third edition of the highly popular Game Engine Architecture, Jason Gregory draws on his nearly two decades of experience at Midway, Electronic Arts and Naughty Dog to present both the theory and practice of game engine software development. In this book, the broad range of technologies and techniques used by AAA game studios are each explained in detail, and their roles within a real industrial-strength game engine are illustrated.

New to the Third Edition

This third edition offers the same comprehensive coverage of game engine architecture provided by previous editions, along with updated coverage of:

  • computer and CPU hardware and memory caches,
  • compiler optimizations,
  • C++ language standardization,
  • the IEEE-754 floating-point representation,
  • 2D user interfaces,
  • plus an entirely new chapter on hardware parallelism and concurrent programming.

This book is intended to serve as an introductory text, but it also offers the experienced game programmer a useful perspective on aspects of game development technology with which they may not have deep experience. As always, copious references and citations are provided in this edition, making it an excellent jumping off point for those who wish to dig deeper into any particular aspect of the game development process.

 

Key Features

  • Covers both the theory and practice of game engine software development
  • Examples are grounded in specific technologies, but discussion extends beyond any particular engine or API.
  • Includes all mathematical background needed.
  • Comprehensive text for beginners and also has content for senior engineers.

Table of Contents

  1. Cover
  2. Half Title
  3. Title Page
  4. Copyright Page
  5. Dedication
  6. Table of Contents
  7. Preface
  8. I Foundations
    1. 1 Introduction
      1. 1.1 Structure of a Typical Game Team
      2. 1.2 What Is a Game?
      3. 1.3 What Is a Game Engine?
      4. 1.4 Engine Differences across Genres
      5. 1.5 Game Engine Survey
      6. 1.6 Runtime Engine Architecture
      7. 1.7 Tools and the Asset Pipeline
    2. 2 Tools of the Trade
      1. 2.1 Version Control
      2. 2.2 Compilers, Linkers and IDEs
      3. 2.3 Profiling Tools
      4. 2.4 Memory Leak and Corruption Detection
      5. 2.5 Other Tools
    3. 3 Fundamentals of Software Engineering for Games
      1. 3.1 C++ Review and Best Practices
      2. 3.2 Catching and Handling Errors
      3. 3.3 Data, Code and Memory Layout
      4. 3.4 Computer Hardware Fundamentals
      5. 3.5 Memory Architectures
    4. 4 Parallelism and Concurrent Programming
      1. 4.1 Defining Concurrency and Parallelism
      2. 4.2 Implicit Parallelism
      3. 4.3 Explicit Parallelism
      4. 4.4 Operating System Fundamentals
      5. 4.5 Introduction to Concurrent Programming
      6. 4.6 Thread Synchronization Primitives
      7. 4.7 Problems with Lock-Based Concurrency
      8. 4.8 Some Rules of Thumb for Concurrency
      9. 4.9 Lock-Free Concurrency
      10. 4.10 SIMD/Vector Processing
      11. 4.11 Introduction to GPGPU Programming
    5. 5 3D Math for Games
      1. 5.1 Solving 3D Problems in 2D
      2. 5.2 Points and Vectors
      3. 5.3 Matrices
      4. 5.4 Quaternions
      5. 5.5 Comparison of Rotational Representations
      6. 5.6 Other Useful Mathematical Objects
      7. 5.7 Random Number Generation
  9. II Low-Level Engine Systems
    1. 6 Engine Support Systems
      1. 6.1 Subsystem Start-Up and Shut-Down
      2. 6.2 Memory Management
      3. 6.3 Containers
      4. 6.4 Strings
      5. 6.5 Engine Configuration
    2. 7 Resources and the File System
      1. 7.1 File System
      2. 7.2 The Resource Manager
    3. 8 The Game Loop and Real-Time Simulation
      1. 8.1 The Rendering Loop
      2. 8.2 The Game Loop
      3. 8.3 Game Loop Architectural Styles
      4. 8.4 Abstract Timelines
      5. 8.5 Measuring and Dealing with Time
      6. 8.6 Multiprocessor Game Loops
    4. 9 Human Interface Devices
      1. 9.1 Types of Human Interface Devices
      2. 9.2 Interfacing with a HID
      3. 9.3 Types of Inputs
      4. 9.4 Types of Outputs
      5. 9.5 Game Engine HID Systems
      6. 9.6 Human Interface Devices in Practice
    5. 10 Tools for Debugging and Development
      1. 10.1 Logging and Tracing
      2. 10.2 Debug Drawing Facilities
      3. 10.3 In-Game Menus
      4. 10.4 In-Game Console
      5. 10.5 Debug Cameras and Pausing the Game
      6. 10.6 Cheats
      7. 10.7 Screenshots and Movie Capture
      8. 10.8 In-Game Profiling
      9. 10.9 In-Game Memory Stats and Leak Detection
  10. III Graphics, Motion and Sound
    1. 11 The Rendering Engine
      1. 11.1 Foundations of Depth-Buffered Triangle Rasterization
      2. 11.2 The Rendering Pipeline
      3. 11.3 Advanced Lighting and Global Illumination
      4. 11.4 Visual Effects and Overlays
      5. 11.5 Further Reading
    2. 12 Animation Systems
      1. 12.1 Types of Character Animation
      2. 12.2 Skeletons
      3. 12.3 Poses
      4. 12.4 Clips
      5. 12.5 Skinning and Matrix Palette Generation
      6. 12.6 Animation Blending
      7. 12.7 Post-Processing
      8. 12.8 Compression Techniques
      9. 12.9 The Animation Pipeline
      10. 12.10 Action State Machines
      11. 12.11 Constraints
    3. 13 Collision and Rigid Body Dynamics
      1. 13.1 Do You Want Physics in Your Game?
      2. 13.2 Collision/Physics Middleware
      3. 13.3 The Collision Detection System
      4. 13.4 Rigid Body Dynamics
      5. 13.5 Integrating a Physics Engine into Your Game
      6. 13.6 Advanced Physics Features
    4. 14 Audio
      1. 14.1 The Physics of Sound
      2. 14.2 The Mathematics of Sound
      3. 14.3 The Technology of Sound
      4. 14.4 Rendering Audio in 3D
      5. 14.5 Audio Engine Architecture
      6. 14.6 Game-Specific Audio Features
  11. IV Gameplay
    1. 15 Introduction to Gameplay Systems
      1. 15.1 Anatomy of a Game World
      2. 15.2 Implementing Dynamic Elements: Game Objects
      3. 15.3 Data-Driven Game Engines
      4. 15.4 The Game World Editor
    2. 16 Runtime Gameplay Foundation Systems
      1. 16.1 Components of the Gameplay Foundation System
      2. 16.2 Runtime Object Model Architectures
      3. 16.3 World Chunk Data Formats
      4. 16.4 Loading and Streaming Game Worlds
      5. 16.5 Object References and World Queries
      6. 16.6 Updating Game Objects in Real Time
      7. 16.7 Applying Concurrency to Game Object Updates
      8. 16.8 Events and Message-Passing
      9. 16.9 Scripting
      10. 16.10 High-Level Game Flow
  12. V Conclusion
    1. 17 You Mean There’s More?
      1. 17.1 Some Engine Systems We Didn’t Cover
      2. 17.2 Gameplay Systems
  13. Bibliography
  14. Index
3.144.202.167