|
|
|
Game Programming Gems
68 Articles, Edited by Mark DeLoura, 2000.
|
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 |
Matrix-Quaternion Conversions |
Interpolating Quaternions |
The Shortest Arc Quaternion |
Section 3: Artificial Intelligence
Designing A General Robust AI Engine |
A Finite-State Machine Class |
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.
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
Optimizing Vertex Submission for OpenGL |
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.
Tweaking a Vertex's Projected Depth Value |
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.
Camera Control Techniques |
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.
A Fast Cylinder-Frustrum Intersection Test |
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.
Multi-Resolution Maps for Interaction Detection (Collision Detection) |
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.
Computing the Distance into a Sector |
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.
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.
Using 3D Hardware for 2D Sprite Effects |
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.
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 |
|
|
|