Game Programming Gems
68 Articles, Edited by Mark DeLoura.
Survey of Lowest Known Online Prices
$51.06 (27% off) Amazon.com (free shipping)
$69.95 (0% off) BarnesAndNoble.com
Section 1: General Programming
The Magic of Data-Driven Design
Object-Oriented Programming and Design Techniques
Fast Math Using Template Metaprogramming
An Automatic Singleton Utility
Using the STL in Game Programming
A Generic Function-Binding Interface
A Generic Handle-Based Resource Manager
Resource and Memory Management
Frame-Based Memory Allocation
A Network Protocol for Online Games
Squeezing More Out of Assert
Stats: Real-Time Statistics and In-Game Debugging
Real-Time In-Game Profiling
Section 2: Mathematics
Predictable Random Numbers
Integrating the Equations of Rigid Body Motion
Polynomial Approximations to Trigonometric Functions
Implicit Euler Integration for Numerical Stability
Wavelets: Theory and Compression
Interactive Simulation of Water Surfaces
Quaternions for Game Programming
The Shortest Arc Quaternion
Section 3: Artificial Intelligence
Designing A General Robust AI Engine
Abstract: Simple Finite-State Machines are powerful tools used in many computer game AI implementations. This article introduces a generic C++ class that implements a Finite-State Machine that is useful to the novice for learning about Finite-State Machines and as a building block for more complex AI implementations in development projects. The processes of a Finite-State Machine are presented, an example game implementation is offered as an example of Finite-State Machine usage, and source code illustrates how finite-state functionality can be implemented in a generic manner.
A Finite-State Machine Class
The Basics of A* for Path Planning
A* Aesthetic Optimizations
Simplified 3D Movement and Pathfinding Using Navigation Meshes
Flocking: A Simple Technique for Simulating Group Behavior
Fuzzy Logic for Video Games
Section 4: Polygonal Techniques
Abstract: There are a number of functions available for submitting and rendering vertices in OpenGL, which range from the simple immediate mode functions to more complicated multiple vertex functions and vendor-specific extensions. However, teh performance can vary greatly depending on the functionality used. This article provides insight into the tradeoffs of various techniques.
Optimizing Vertex Submission for OpenGL
Abstract: The goal is to find a way to offset a polygon's depth in a scene without changing its projected screen coordinates or altering its texture mapping perspective. Most 3D graphcs libraries contain some kind of polygon offset function to help achieve this goal. However, these solutions generally lack fine control and usually incur a per-vertex performance cost. This article presents an alternative method that modifies the projection matrix to achieve the depth offset effect.
Abstract: The vector camera is a generalized form of the matrix-based camera found in many traditional graphics engines. Matrices are often difficult to read due to the fact that they typically hold several operations concatenated together. The vector camera uses only simple vectors to describe its orientation to the overall graphics pipeline. This article describes the how to construct a vector camera and how to manipulate it.
Tweaking a Vertex's Projected Depth Value
Abstract: This article outlines a few basic techniques that can be used to develop the proper camera model for your game. In addition to basics, a scripted camera traveling on various curves (B-Spline, Catmull-Rom spline) is also discussed along with issues such as zooming, dampening, and the use of quaternions.
Camera Control Techniques
Abstract: This article presents a quick algorithm for determining whether an arbitrary cylinder potentially intersects the view frustum (and thus whether the object is visible).
Abstract: This article will help lay the groundwork for building an accurate physics simulation by starting with one of the most crucial parts of a real-time physics engine: 3D collision detection. The two basic algorithms this article covers are: Bounding Sphere Collision Detection and Triangle-to-Triangle Collision Detection.
A Fast Cylinder-Frustrum Intersection Test
Abstract: This article describes a method for reducing the number of proximity tests that must be performed for games with large numbers of game objects of varying sizes.
Multi-Resolution Maps for Interaction Detection (Collision Detection)
Abstract: This article describes a simple and fast algorithm for determining where a point is between the edges of a 2D quad (or sector). The result is a unit floating point number, where 0 indicates that the point lies on the leading edge, and where 1 indicates that the point lies on the opposite edge. The sector may be any four-sided, 2D convex shape.
Abstract: This article introduces both frustum culling and occlusion culling, along with example code for a simple occlusion culling algorithm.
Computing the Distance into a Sector
Never Let 'Em See You Pop - Issues in Geometric Level of Detail Selection
View-Independent Progressive Meshing
Interpolated 3D Keyframe Animation
A Fast and Simple Skinning Technique
Filling in the Gaps-Advanced Animation Using Stitching and Skinning
Real-Time Realistic Terrain Generation
Fractal Terrain Generation - Fault Formation
Fractal Terrain Generation - Midpoint Displacement
Fractal Terrain Generation - Particle Deposition
Section 5: Pixel Effects
Abstract: This article shows how to implement an attractive lens flare effect using only a small amount of code and artwork, without needing to know anything about physical optics.
Abstract: This article sheds some light on how to use 3D hardware to achieve 2D effects. Specifically, we take a look at how to do alpha blending, sprite scaling, and sprite rotation.
Using 3D Hardware for 2D Sprite Effects
Motif-Based Static Lighting
Simulated Real-Time Lighting Using Vertex Color Interpolation
Advanced Texturing Using Texture Coordinate Generation
Real-Time Shadows on Complex Objects
Improving Environment-Mapped Reflection Using Glossy Prefiltering and the Fresnel Term
Convincing-Looking Glass for Games
Refraction Mapping for Liquids in Containers