If you're an aspiring game programmer looking for a good challenging read, or an existing programmer looking for some peer advice, you might want to check out Game Engine Gems 1. It's a collection of twenty-eight 'gems' contributed by a variety of industry programmers and engineers. These articles -- or gems as they are known to insiders -- cover a vast array of topics all pertaining to making the most of your game engine.
Gem Of A Book? Depends On The Reader, Of Course
Let's get a few facts out of the way first. This is a hard cover book with 357 pages, including the index. A CD is also included with source code, demos, and reference material. The contents are split into three sections and twenty-eight chapters, each of which is on a different topic relating to a game engine. The gems are written by different authors, including a couple by the series editor, Eric Lengyel. Eric has over fifteen years of experience in programming game engines, as well as a Ph.D in Computer Science. Additionally, Eric founded Terathon Software. As for the gems themselves and the authors, this book contains:
Part I Game Engine Design
01 - What To Look For When Evaluating Middleware Integration (Jason Hughes, Founder of Steel Penny Games)
02 - The Game Asset Pipeline (Remi Arnaud, Chief Software Architect at Screampoint International)
03 - Volumetric Representation of Virtual Environments (David Williams, Graphics Programmer for Thermite3D)
04 - High-Level Pathfinding (Daniel Higgins, Owner of Lunchtime Studios, Inc)
05 - Environment Sound Culling (Simon Franco, The Creative Assembly)
06 - A GUI Framework and Presentation Layer (Adrian Hurst, Founder of Weaseltron Entertainment)
07 - World's Best Palettizer (Jason Hughes, Founder of Steel Penny Games)
08 - 3D Stereoscopic Rendering: An Overview of Implementation Issues (Anders Hast, Associate Professor at University of Gavle and Visualization Expert at UPPMAX)
09 - A Multithreaded 3D Renderer (Sebastian Schertenleib, Principal Engineer at SCEE)
10 - Camera-Centric Engine Design for Multithreaded Rendering (Colt McAnlis, Graphics Programmer at Blizzard Entertainment)
11 - A GPU-Managed Memory Pool (Jeremy Moore, Lead Engine Programmer at Black Rock Studio)
12 - Precomputed 3D Velocity Field for Simulating Fluid Dynamics (Khalid Djado [PhD Student and Lecturer at University of Sherbrooke] & Richard Egli [Professor of Computer Scienes at University of Sherbrooke])
13 - Mesh Partitioning for Fun & Profit (Jason Hughes, Founder of Steel Penny Games)
14 - Moments of Inertia for Common Shapes (Eric Lengyel, Series Editor and Founder of Terathon Software, LLC)
Part II Rendering Techniques
15 - Physically-Based Outdoor Scene Lighting (Frank Kane, Founder of Sundog Software, LLC)
16 - Rendering Physically-Based Skyboxes (Frank Kane, Founder of Sundog Software, LLC)
17 - Motion Blur and the Velocity-Depth-Gradient Buffer (Eric Lengyel, Series Editor and Founder of Terathon Software, LLC)
18 - Fast Screen-Space Ambient Occlusion and Indirect Lighting (Laszlo Szirmay-Kalos [Dept Head of Control Engineering and IT at Budapest University of Technology and Economics], Balazs Toth [Assistant Professor at Budapest University of Technology and Economics], & Tamas Umenhoffer [Assistant Professor at Budapest University of Technology and Economics])
19 - Real-Time Character Dismemberment (Aurelio Reis, Programmer at id Software)
20 - A Deferred Decal Rendering Technique (Jan Krassnigg, IT student at University of Aachen, Germany)
Part III Programming Methods
21 - Multithreaded Object Models (Jon Parise, Senior Software Engineer at Electronic Arts)
22 - Holistic Task Parallelism for Common Game Architecture Patterns (Brad Werth, Senior Software Engineer at Intel)
23 - Dynamic Code Execution Hierarchies (Martin Linklater, Technical Director at Sony)
24 - Key-Value Dictionary (Martin Linklater, Technical Director at Sony)
25 - A Basic Scheduler (John Bolton, Software Engineer at Netflix)
26 - The Game State Observer Pattern (Ron Barbosa, Chief Software Architect at Revelex Corporation)
27 - Fast Trigonometric Operations Using CORDIC Methods (John Bolton, Software Engineer at Netflix)
28 - Inter-Process Communication Based on Your Own RPC Subsystem (Kurt Pelzer, Senior Software Engineer at Piranha Bytes)
If you couldn't tell from the names of the gems, or the prestigious titles of their authors, this book covers some seriously technical material. This clearly isn't a book meant for casual readers, that is at least if you want to get the most out of it. While several articles contain little to no code or math, many articles are centered around high level mathematics and C++ programming. For anyone not up to speed on moderate to high end calculus or C++ programming, it's difficult to get much out of those gems that are focused on such details. I found those gems less interesting simply because of the type of gamer I am -- I love games, but I'm not as interested in making them as I am playing them. That, and I haven't messed with C++ or calculus in several years.
Despite the variety of authors contained here, you can be assured of at least a few things. For one, the gems are well written and all at least somewhat interesting (some more so than others). They're also all technical and presume you have a good foundation to work from. Often times blocks of sample code and mathematics each up good portions of the gems, which can be a good or bad thing depending on what you're looking for.
Each gem is also written with an introduction, technical detail, and forward-looking conclusion that discusses alternatives and the future outlook on the particular topic at hand. Each chapter also includes a multitude of references, many of which are URLs to internet articles that can give you plenty of additional reading avenues to explore.
Again, for up and coming and even current game engine programmers, this is a stout read, but a good one if you can keep up with the technical details.
To the summary...