Game Programming Gems 3
67 Articles, Edited by Dante Treglia.
Survey of Lowest Known Online Prices
$48.97 (30% off) Amazon.com (free shipping)
$55.96 (20% off) BarnesAndNoble.com
Section 1: General Programming
An Object-Composition Game Framework
Finding Redeeming Value in C-Style Macros
Platform-Independent, Function-Binding Code Generator
Handle-Based Smart Pointers
Floating-Point Exception Handling
Programming a Game Design-Compliant Engine Using UML
Using Lex and Yacc to Parse Custom Data Files
Developming Games for a World Market
Real-Time Input and UI in 3D Games
Natural Selection: The Evolution of Pie Menus
Lightweight, Policy-Based Logging
Real-Time Hierarchical Profiling
Section 2: Mathematics
Fast Base-2 Functions for Logarithms and Random Number Generation
Using Vector Fractions for Exact Geometry
More Approximations to Trigonometric Functions
Constrained Inverse Kinematics
Cellular Automata for Physical Modeling
Coping with Friction in Dynamic Simulations
Section 3: Artificial Intelligence
Optimized Machine Learning with GoCap
Area Navigation: Expanding the Path-Finding Paradigm
Function Pointer-Based, Embedded Finite-State Machines
Terrain Analysis in an RTS-The Hidden Giant
A Extensible Trigger System for AI Agents, Objects, and Quests
Tactical Path-Finding with A*
A Fast Approach To Navigation Meshes
Choosing a Relationship Between Path-Finding and Collision
Section 4: Graphics
Abstract: This article describes how to detect possible sources of these seams in complex 3D scenes and how to modify static geometry so that visible artifacts are avoided. Since T-junction elimination adds verticies to existing polygons (that are not necessarily convex), we also discuss a method for triangulating arbitrary concave polygons.
T-Junction Elimination and Retriangulation
Abstract: Heightfields are two-dimensional arrays of height values, commonly used to store terrain or water surface data, and are also commonly used for calculating bump maps. This article will describe how we can take advantage of the special characteristics of heightfield meshes to significantly optimize vertex normal calculation.
Abstract: Surface patches are a memory-efficient way of creating smooth surfaces that can be rendered at many levels of detail. However, having a smooth surface is not as useful if you cannot light it properly. For that, you need the normal vector at each vertex. This article describes how to treat the normal at each control point as a second control mesh, thus quickly approximating the correct surface normal. Although the results are not strictly correct, they can produce superior results by eliminating shading errors due to curve discontinuity introduced during skinning.
Fast Heightfield Normal Calculation
Fast and Simple Occlusion Culling
Abstract: This article describes two occlusion culling algorithms that are practical, effective, and require little preprocessing. The first one is the prioritized-layered projection (PLP) algorithm, which is an approximate algorithm that determines, for a given budget, a set of primitives that is likely to be visible. The second algorithm, cPLP, is a conservative version of PLP that guarantees finding all visible primitives.
Wagner Corrêa (Princeton University), James Klosowski (IBM Research), Cláudio Silva (AT&T Labs-Research)|
Game Programming Gems 3
Abstract: This article focuses on how to generate triangle strips from arbitrary 3D polygonal models. We will describe and provide source code for developing long triangle strips. After describing the triangle strip algorithm, we will explain the benefits of triangle strips, the possible pitfalls encountered when creating them, and how to submit them to the graphics API. In addition, several other triangle strip creation algorithms will be reviewed and critiqued.
Triangle Strip Creation, Optimizations, and Rendering
Abstract: In this article, we describe a method for computing the exact front cap geometry visible from a given static light source. This is the exact geometry that is visible from the light's point of view, and it is useful for calculating shadow volumes. Previous work has been done on this topic; however, most methods suffer from either infinte recursion (with complex polygonal models) or fail to solve for cyclically overlapping polygons. The method presented here also works for scenes that have intersecting polygons.
Computing Optimized Shadow Volumes for Complex Data Sets
Abstract: This article introduces subdivision surfaces as a means of improving the appearance of game characters. First, we will present the different schemes available, focusing on two implementations of subdivision surfaces. Then, we will explore a number of optimization methods based on culling and preprocessing.
Subdivision Surfaces for Character Animation
Abstract: This article describes how to avoid joint pinching from typical skinning methods by introducing additional bones at troublesome joints, such as the elbow and knees. By carefully reworking the weighting data to account for these 'links,' we can use the same simple core deformation algorithm and only incur the small additional burden of a few extra bones.
Improved Deformation of Bones
Abstract: This article presents a solution to the foot sliding problem based on adjusting the position of the feet only when they are already in motion. A framework is described for applying this idea to the problem of realistic character animation by using independent modifiers for different parts of a skeleton.
A Framework for Realistic Character Locomotion
Abstract: This article discusses the implementation of a compiler for programmable vertex shaders. Provided with the article is a full implementation of a simple vertex shader compiler. It also contains documentation on how to create a workspace for building compilers and an example that compiles the OpenGL lighting equation into a DirectX vertex shader. To give a practical foundation for this article, we are focusing on the vertex shader implementation in DirectX8. Future implementations might vary, but the framework and infrastructure we provide should still be applicable.
Abstract: This article shows how to create the illusion of a 3D beam by using two triangles for the endpoints and two triangles for the beam. The details of positioning and texture mapping of the triangles are analyzed in the article.
A Programmable Vertex Shader Compiler
Abstract: Isometric engines are one of the last bastions of two-dimensional graphics left in the game industry. While this article proposes some 3D methods to enhance what is essentially a sprite-based display system, it tries to preserve the essence of sprite-based graphics. While you could simply represent a majority of the game objects with 3D models to get the same visual effect, the ideas presented here maintain the use of sprites by adding a few tricks to make them appear as flexible as 3D models. The concepts may also be useful in other 3D engines as a replacement for flat billboard sprites or as a means to represent distant objects at a lower level of detail.
3D Tricks for Isometric Engines
Abstract: This article explains how to perturb the normals on a surface to simulate the curvature of a denser model by using bump mapping. We will enhance the visual quality without losing speed or having to abandon more traditional ways of adding detail.
Curvature Simulation Using Normal Maps
Abstract: This article will present several methods for producing high-quality, physically based lighting solutions for terrain under dynamic lighting conditions. Topics include: Sunlight (Horizon Angles, Shadow Ellipses, and PTMs), Skylight (Radiosity Approximations and Patches), Animated Cloud Shadows, Video-Based Solutions, and Nonterrain Objects.
Methods for Dynamic, Photorealistic Terrain Lighting
Abstract: This article will describe some ways to encode different lighting conditions as well as other properties within cube maps. It will give a brief overview of the properties of cube maps and how to index into them. Topics include: Physical Properties of Cube Maps, Getting data to/from a Cube Map, Rendering with the Cube Map, Encoding Cloud Cover, Encoding Lights in a Cube Map, Encoding Diffuse Lighting in a Cube Map, and Encoding a Day/Night Cycle into a Cube Map.
Abstract: The goal of this article is to introduce basic concepts for using procedures to manipulate and synthesize images for games and to give simple guidelines for implementation.
Abstract: This article explores how to use a relatively small number of artist-generated source textures and combine them at runtime using a variety of blends, fractal methods, and random numbers to create the textures required for the scene.
Cube Map Lighting Techniques
Abstract: In this article, we show ways to use texture maps as a means to solve functions through a lookup table, focusing on lighting computations. This technique saves precious pixel shader instructions, and in many cases, it is the only way to make certain per-pixel effects possible on the current generation of hardware.
Textures as Lookup Tables for Per-Pixel Lighting Computations
Abstract: This article proposes a simple technique called normal distribution function (NDF) shading. It allows an artist to handcraft shading models, with the shape and color of highlights simply stored in bitmaps. The technique uses per-pixel shading, and can also be used in conjunction with bump mapping. Anisotropic shading models can also be created.
Rendering with Handcrafted Shading Models
Section 5: Network and Multiplayer
Minimizing Latency in Real-Time Stategy Games
Real-Time Strategy Network Protocol
A Flexible Simulation Architecture for Massively Multiplayer Games
Scaling Multiplayer Servers
Template-Based Object Serialization
A Network Monitoring and Simulation Tool
Creating Multiplayer Games with DirectPlay 8.1
Wireless Gaming Using the Java Micro Edition
Section 6: Audio
Audio Compression with Ogg Vorbis
Creating a Compelling 3D Audio Environment
Obstruction Using Axis-Aligned Bounding Boxes
Using the Biquad Resonant Filter
Linear Predictive Coding for Voice Compression and Effects
The Stochastic Synthesis of Complex Sounds
Real-Time Modular Audio Processing for Games