|
|
Game Programming Gems 3
67 Articles, Edited by Dante Treglia, 2002.
|
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
T-Junction Elimination and Retriangulation |
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.
Fast Heightfield Normal Calculation |
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 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.
Triangle Strip Creation, Optimizations, and Rendering |
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.
Computing Optimized Shadow Volumes for Complex Data Sets |
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.
Subdivision Surfaces for Character Animation |
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.
Improved Deformation of Bones |
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.
A Framework for Realistic Character Locomotion |
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 Programmable Vertex Shader Compiler |
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.
3D Tricks for Isometric Engines |
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.
Curvature Simulation Using Normal Maps |
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.
Methods for Dynamic, Photorealistic Terrain Lighting |
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.
Cube Map Lighting Techniques |
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.
Textures as Lookup Tables for Per-Pixel Lighting Computations |
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.
Rendering with Handcrafted Shading Models |
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.
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 |
|