This book, the third volume in the popular Game Engine Gems series, contains 22 new chapters that concisely present particular techniques, describe clever tricks, or offer practical advice within the subject of game engine development. Each chapter is filled with the expert knowledge and wisdom of seasoned professionals from both industry and academia.
The book is divided into four broad categories pertaining to game engine development:
- Graphics and rendering
- Physics
- General programming
- Character control and artificial intelligence
There is also a companion website, gameenginegems.com, where updates and supplementary materials are posted. Many chapters offer downloadable source code, demos, and examples.
Covering the latest developments and continuing to provide practical methods and tips for game engine development, Game Engine Gems 3 is indeed a new gem in the series. Not only does it aid professionals in their work, but it also shows students and others interested in game development how the pros tackle specific problems that arise during game engine development.
GRAPHICS AND RENDERING
The Open Game Engine Exchange Format
Eric Lengyel
Introduction
OpenDDL
Scene Structure
Object Data
Animation
References
Realistic Blending of Skies, Water, and Terrain
Frank Kane
The Problem
Blending Terrain with the Sky
Applying Visibility Effects to Distant Clouds
Creating Realistic Ocean Horizons
Putting It All Together
References
Fog with a Linear Density Function
Eric Lengyel
Introduction
Fog Factor Calculation
Visibility Culling
References
Vegetation Management in Leadwerks Game Engine 4
Josh Klint
Introduction
The Problem
The Idea
Culling
Rendering
Level of Detail
Physics
Future Development
References
Smooth Horizon Mapping
Eric Lengyel
Introduction
Horizon Map Generation
Rendering with Horizon Maps
References
Buffer-Free Generation of Triangle Strip Cube Vertices
Don Williamson
Introduction
Generation Cube Vertices
Wireframe Cubes
Edge-Preserving Smoothing Filter for Particle Based Rendering
Kin-Ming Wong and Tien-Tsin Wong
Introduction
Guided Image Filtering
GLSL Implementation
Results and Performance
Acknowledgements
References
Variable Precision Pixel Shading for Improved Power Efficiency
Rahul P. Sathe
Introduction and Background
Algorithm
Results
Discussion
Acknowledgements
References
A Fast and High-Quality Texture Atlasing Algorithm
Manny Ko
Introduction
Background
Chart Segmentation
Atlas Packing
Atlas-Aware Filtering
Acknowledgements
References
PHYSICS
Rotational Joint Limits in Quaternion Space
Gino van den Bergen
Introduction
3D Rotations
Unit Quaternions
Quaternions vs. Exponential Map
Swing-Twist Limits
Volumetric Limits
References
Volumetric Hierarchical Approximate Convex Decomposition
Khaled Mamou
Introduction
Convex Approximation
Volumetric Hierarchical Approximate Convex Decomposition
References
Simulating Soft Bodies Using Strain Based Dynamics
Muhammad Mobeen Movania
Introduction
Position Based Dynamics
Strain Based Dynamics
Implementation Details
Implementing Cloth Simulation
Implementing Tetrahedral Mesh Simulation
Barycentric Interpolation
Experimental Evaluation
Future Work
References
GENERAL PROGRAMMING
Generic, Lightweight, and Fast Delegates in C++
Stefan Reinalter
Background
The Delegate Technique
Toward a Generic Solution
Embracing C++11
Extensions
Source Code
Compile–Time String Hashing in C++
Stefan Reinalter
Background
The Hash Technique
Toward a Generic Hash Function
Implementation Notes
Source Code
Static Reflection in C++ Using Tuples
Nicolas Guillemot
Rethinking Composition Using Tuples
Recursive Member Iteration
Practical Concerns
Portable SIMD Programs Using ISPC
Nicolas Guillemot and Marc Fauconneau Dufresne
The Problem
ISPC Basics
ISPC Example Programs
Integration in a Game Engine
Tips & Tricks
References
Shared Network Arrays as an Abstraction of Network Code from Game Code Logic
João Lucas Guberman Raza
Introduction
How SNAs Work
How a Gameplay Programmer Uses SNAs
How a Network Programmer Uses SNAs
Further Discussion
References
CHARACTER CONTROL AND ARTIFICIAL INTELLIGENCE
Vision Based Local Collision Avoidance
Teófilo Bezerra Dutra, Ricardo Marques, Julien Pettré, and Jan Ondřej
Introduction
Local Path Planning in Games
Vision Based Obstacle Avoidance
Purely Reactive Technique
Gradient Based Technique
Final Considerations
Acknowledgements
References
A Programming Framework for Autonomous NPCs
Artur de Oliveira da Rocha Franco, José Gilvan Rodrigues Maia, and Fernando Antonio de Carvalho Gomes
Introduction
CordéIS Overview
Implementing CordéIS for Electronic RPGs
About the Demo
References
Beyond Smart Objects: Behavior-Oriented Programming for NPCs in Large Open Worlds
Martin Černý, Tomáš Plch, and Cyril Brom
Introduction
A Little Bit of Context
Behavior Objects
Integration Within an AI System
Implementation in Kingdom Come: Deliverance
Lessons Learned
Acknowledgements
References
A Control System for Enhancing Entity Behavior
Mike Ramsey
Controller Basics
PID Implementation
Use Cases and Strategies for a PID Controller
References
A Control System Based Approach to Entity Behavior
Mike Ramsey
A Single Control System
Hierarchical Control System Basics
A Hierarchical Control System for Following
References
Biography
Eric Lengyel is a veteran of the games industry with more than 21 years of experience writing game engines. He earned his PhD in computer science from the University of California, Davis, and his MS in mathematics from Virginia Tech. He is the founder of Terathon Software, where he leads ongoing development of the Tombstone Engine. He was the lead programmer for Quest for Glory V at Sierra Online, worked on the OpenGL team for Apple, and was a member of the Advanced Technology Group at Naughty Dog, where he designed graphics driver software used on the PlayStation 3. He is the author of the bestselling book Mathematics for 3D Game Programming and Computer Graphics and has written several chapters in other books, including the Game Programming Gems series. His articles have been published in the Journal of Game Development, the Journal of Graphics Tools, and on Gamasutra.com.