Home    General Programming    Artificial Intelligence    Math    Physics    Graphics    Networking    Audio Programming   
Audio/Visual Design    Game Design    Production    Business of Games    Game Studies    Conferences    Schools    Contact   
Home
General Programming
Artificial Intelligence
Mathematics
Physics
Graphics
Networking
Audio Programming
Audio/Visual Design
Game Design
Production
Business of Games
Game Studies
Conferences
Schools
Contact
Game Programming Gems
Game Programming Gems 2
Game Programming Gems 3
Game Programming Gems 4
Game Programming Gems 5
Game Programming Gems 6
Game Programming Gems 7
AI Game Programming Wisdom
AI Game Programming Wisdom 2
AI Game Programming Wisdom 3
AI Game Programming Wisdom 4
GPU Gems
GPU Gems 2
GPU Gems 3
ShaderX
ShaderX2
ShaderX3
ShaderX4
ShaderX5
Massively Multiplayer Game Development
Massively Multiplayer Game Development 2
Secrets of the Game Business
Introduction to Game Development
GDC Proceedings
Game Developer Magazine
Gamasutra


Game Programming Gems 2

70 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

    Optimization for C++ Games

    Andrew Kirmse (LucasArts Games)
    Game Programming Gems 2

    Inline Functions Versus Macros

    Peter Dalton (Evans & Sutherland)
    Game Programming Gems 2

    Programming with Abstract Interfaces

    Noel Llopis (Meyer/Glass Interactive)
    Game Programming Gems 2

    Exporting C++ Classes from DLLs

    Herb Marselas (Ensemble Studios)
    Game Programming Gems 2

    Protect Yourself from DLL Hell and Missing OS Functions

    Herb Marselas (Ensemble Studios)
    Game Programming Gems 2

    Dynamic Type Information

    Scott Wakeling (Virgin Interactive)
    Game Programming Gems 2

    A Property Class for Generic C++ Member Access

    Charles Cafrelli
    Game Programming Gems 2

    A Game Entity Factory

    François Dominic Laramée
    Game Programming Gems 2

    Adding Deprecation Facilities to C++

    Noel Llopis (Meyer/Glass Interactive)
    Game Programming Gems 2

    A Drop-in Debug Memory Manager

    Peter Dalton (Evans & Sutherland)
    Game Programming Gems 2

    A Built-in Game Profiling Module

    Jeff Everett (Lithtech)
    Game Programming Gems 2

    Linear Programming Model for Windows-based Games

    Javier F. Otaegui (Sabarasa Entertainment)
    Game Programming Gems 2

    Stack Winding

    Bryon Hapgood (Kodiak Interactive)
    Game Programming Gems 2

    Self-Modifying Code

    Byron Hapgood (Kodiak Interactive)
    Game Programming Gems 2

    File Management Using Resource Files

    Bruno Sousa (Fireworks Interactive)
    Game Programming Gems 2

    Game Input Recording and Playback

    Bruce Dawson (Humongous Entertainment)
    Game Programming Gems 2

    A Flexible Text Parsing System

    James Boer (Lithtech)
    Game Programming Gems 2

    A Generic Tweaker

    Lasse Staff Jensen (Funcom)
    Game Programming Gems 2

    Genuine Random Number Generation

    Pete Isensee (Microsoft)
    Game Programming Gems 2

    Using Bloom Filters to Improve Computational Performance

    Mark Ficher (Beach Software)
    Game Programming Gems 2

    3ds max Skin Exporter and Animation Toolkit

    Marco Tombesi
    Game Programming Gems 2

    Using Web Cameras in Video Games

    Nathan d'Obrenan (Firetoad Software)
    Game Programming Gems 2




    Section 2: Mathematics

    Floating-Point Tricks: Improving Performance with IEEE Floating-Point

    Yossarian King (Electronic Arts Canada)
    Game Programming Gems 2

    Vector and Plane Tricks

    John Olsen (Microsoft)
    Game Programming Gems 2

    Fast, Robust Intersection of 3D Line Segments

    Graham Rhodes (Applied Research Associates)
    Game Programming Gems 2

    Inverse Trajectory Determination

    Aaron Nicholls (Microsoft)
    Game Programming Gems 2

    The Parallel Transport Frame

    Carl Dougan
    Game Programming Gems 2

    Smooth C2 Quaternion-based Flythrough Paths

    Alex Vlachos (ATI Research), John Isidoro
    Game Programming Gems 2

    Recursive Dimensional Clustering: A Fast Algorithm for Collison Detection

    Steve Rabin (Nintendo of America)
    Game Programming Gems 2

    Programming Fractals

    Jesse Laeuchli
    Game Programming Gems 2




    Section 3: Artificial Intelligence

    Managing AI with Micro-Threads

    Simon Carter (Big Blue Box Studios)
    Game Programming Gems 2

    Micro-Threads for Game Object AI

    Bruce Dawson (Humongous Entertainment)
    Game Programming Gems 2
    Abstract: Presents code and concepts to create hundreds of low-overhead threads by manipulating the stack. This technique has notable benefits in terms of AI load balancing and the author has implemented the architecture on systems ranging from the PC to the GameBoy.

    A Generic Fuzzy State Machine in C++

    Eric Dybsand (Glacier Edge Technology)
    Game Programming Gems 2
    Abstract: Fuzzy Logic provides an attractive alternative to more crisp forms of finite state decision making. This article builds on the presentation of the Finite-State Machine class from the first Game Programming Gems book, by introducing a generic Fuzzy-State Machine class in C++. The concepts of fuzzy logic are presented and an example of applicability for computer game AI is offered. The FSMclass and FSMstate classes from the first GEMS book are converted into fuzzy logic versions, and source code is provided for review.

    Using a Neural Network in a Game: A Concrete Example

    John Manslow
    Game Programming Gems 2
    Abstract: Neural networks are a powerful artificial intelligence technique that are based on an abstraction of the neurocomputational functions of the human brain. One of their most important characteristics is that they can learn by example, and do not need to be programmed in the conventional sense. For example, Codemasters (the developers of Colin McRae Rally 2.0) discovered that a neural network could learn how to drive a rally car by imitating the developers' play, thus avoiding the need to construct a complex set of rules. This article guides the reader through all the steps that are necessary to incorporate neural networks into their own game. Assuming no prior understanding, the article presents a case study of applying one of the most popular, easy to use, and effective neural networks, the multilayer perceptron, to a real game. All the steps required for successful neural network development are described, as are the most common problems, and their solutions. The CD that accompanies the book includes all the source code for the game, and the neural network class that lies at the heart of its AI. The class is designed to be used as a drop-in module in other games and hence contains no application specific code.

    A High-Performance Tile-based Line-of-Sight and Search System

    Matt Pritchard (Ensemble Studios)
    Game Programming Gems 2

    An Architecture for RTS Command Queuing

    Steve Rabin (Nintendo of America)
    Game Programming Gems 2
    Abstract: Explains the concept of Command Queuing in an RTS along with several ways to implement it. Command Queuing is the idea that the player should be able to queue up any sequence of command orders (Move, Attack, Patrol, Repair, etc) for a particular unit. Some commands that cycle, such as Patrol, present specific challanges in order to acheive the right behavior. Solutions to these difficulties are discussed along with detailed diagrams.

    Stratagies for Optimizing AI

    Steve Rabin (Nintendo of America)
    Game Programming Gems 2
    Abstract: Presents 11 strategies for optimizing AI, along with tips and examples for each.
    1. Use event-driven behavior rather than polling.
    2. Reduce redundant calculations.
    3. Centralize cooperation with managers.
    4. Run the AI less often.
    5. Distribute the processing over several frames.
    6. Employ level-of-detail AI.
    7. Solve only part of the problem.
    8. Do the hard work offline.
    9. Use emergent behavior to avoid scripting.
    10. Amortize query costs with continuous bookkeeping.
    11. Rethink the problem.

    Influence Mapping

    Paul Tozour (Ion Storm Austin)
    Game Programming Gems 2
    Abstract: Influence mapping is a powerful and proven AI technique for reasoning about the world on a spatial level. Although influence maps are most often used in strategy games, they have many uses in other genres as well. Among other things, an influence map allows your AI to assess the major areas of control by different factions, precisely identify the boundary of control between opposing forces, identify "choke points" in the terrain, determine which areas require further exploration, and inform the base-construction AI systems to allow you to place buildings in the most appropriate locations.

    Strategic Assessment Techniques

    Paul Tozour (Ion Storm Austin)
    Game Programming Gems 2
    Abstract: This article discusses two useful techniques for strategic decision-making. These are easiest to understand in the context of strategy game AI, but they have applications to other game genres as well. The resource allocation tree describes a data structure that allows an AI system to continuously compare its desired resource allocation to its actual current resources in order to determine what to build or purchase next. The dependency graph is a data structure that represents a game's "tech tree," and we discuss a number of ways that an AI can perform inference on the dependency graph in order to construct long-term strategic plans and perform human-like reasoning about what its opponents are attempting to accomplish.

    Terrain Reasoning for 3D Action Games

    William van der Sterren (CGF-AI)
    Game Programming Gems 2

    Flocking with Teeth: Predators and Prey

    Steven Woodcock (Wyrd Wyrks)
    Game Programming Gems 2

    Expanded Geometry for Points-of-Visibility Pathfinding

    Thomas Young
    Game Programming Gems 2

    Optimizing Points-of-Visibility Pathfinding

    Thomas Young
    Game Programming Gems 2

    Imploding Combinatorial Explosion in a Fuzzy System

    Michael Zarozinski (Louder Than A Bomb! Software)
    Game Programming Gems 2




    Section 4: Geometry Management

    Comparison of VIPM Methods

    Tom Forsyth (Mucky Foot Productions)
    Game Programming Gems 2
    Abstract: View-Independent Progressive Meshing (VIPM) has moved from the status of an interesting research project, to promising new technology, to sensible addition to all the best engines, and now into the Direct3D graphics API itself. However, in an effort to push the performance of VIPM, and in particular to drive the hardware as efficiently as possible, several new forms have been developed, each with their own tradeoffs and characteristics. This article is intended as a guide to some of the more promising versions, and should help people decide which of the many variants to sue in particular situations.

    Simplified Terrain Using Interlocking Tiles

    Greg Snook
    Game Programming Gems 2
    Abstract: This article proposes a simple method for interlocking tiles that requires a minimal amount of coding. The technique offers the benefits of dynamically adapting detail levels and animation flexibility. It does this while maintaining a data system that is perfectly suited for hardware transform and lighting.

    Sphere Trees for Fast Visibility Culling, Ray Tracing, and Range Searching

    John W. Ratcliff (Sony Online Entertainment)
    Game Programming Gems 2
    Abstract: The article presents an algorithm and demonstration application that manages thousands of objects in motion that are continuously maintained as a collection of hierarchical bounding spheres in a SphereTree. The design goal for this algorithm has been to make the 99-percentile case spend almost no CPU time updating an object in motion within the tree structure. Queries against the SphereTree perform more tests than other data structures, but this is mitigated by the fact that the tree can be maintained using very little CPU time. This data structure is ideally suited for gross culling of massive numbers of moving objects in a large world space. It doesn't matter if the objects are moving at widely disparate speeds, or even if many of them are not in motion at all. It also has a very low cost when objects are inserted and removed from the tree with great frequency.

    Compressed Axis-Aligned Bounding Box Trees

    Miguel Gomez (Lithtech)
    Game Programming Gems 2
    Abstract: The axis-aligned bounding box (AABB) tree structure has proven to be very useful for accelerating intersection queries on sets of geometry. The data structure is easy to implement, the built structure is numerically well conditioned, and like all binary trees, they have O(log n) search time. This article explains several techniques that can be used to lower the overall memory footprint of an AABB tree to 11 bytes per triangle.

    Direct Access Quadtree Lookup

    Matt Pritchard (Ensemble Studios)
    Game Programming Gems 2
    Abstract: This article presents a general-purpose optimization for quadtree access that improves performance in three ways over the traditional implementations: 1) by eliminating node traversal and the unnecessary cache-misses it causes, 2) by requiring fewer instructions and CPU cycles overall vs. a best case traditional approach, and 3) by doing so in a compact amount of time and with minimal memory accesses regardless of what depth in the tree the target node resides in.

    Approximating Fish Tank Refractions

    Alex Vlachos (ATI Research)
    Game Programming Gems 2
    Abstract: This article briefly explains a method for approximating the refraction effect seen when looking through the side of a fish tank. The majority of this article explains how to construct the transformation matrix that will be applied to the geometry inside the tank to simulate the refraction effect.

    Rendering Print Resolution Screenshots

    Alex Vlachos and Evan Hart (ATI Research)
    Game Programming Gems 2
    Abstract: This article proposes a solution of breaking the task into rendering several smaller subimages. These subimages can then be pasted together to form a screen shot of arbitrary resolution. This article focuses on the projection matrix tricks required to do this seamlessly.

    Applying Decals to Arbitrary Surfaces

    Eric Lengyel (C4 Engine)
    Game Programming Gems 2
    Abstract: This article presents a general method for applying a decal to an arbitrarily shaped surface and concurrently clipping the decal to the surface's boundary.

    Rendering Distant Scenery with Skyboxes

    Jason Shankel (Maxis)
    Game Programming Gems 2
    Abstract: Rending distant scenery in 3D can be accomplished with skyboxes. This article explains the principle of skyboxing and describes alternative means for rendering a skyboxed scene.

    Self-Shadowing Characters

    Alex Vlachos, David Gosselin, and Jason L. Mitchell (ATI Research)
    Game Programming Gems 2
    Abstract: This article presents a projective texture approach, which enables self-shadowing of convex subsections of characters in real time. After breaking the character into convex subsections, the subsections are rendered into a texture with varying alpha values from teh point of view of the light source. When the character is rendered from the viewer's point-of-view, this texture is projected back onto the convex subsegments of the character, simulating the occlusion of each subsegment with respect to the light source. Being map based rather than stencil-volume based, this technique requires no additional work to be compatible with higher-order surface tessellation techniques.

    Classic Super Mario 64 Third-Person Control and Animation

    Steve Rabin (Nintendo of America)
    Game Programming Gems 2
    Abstract: This article will deal with the basic issues of controlling and animating a character from a third-person perspective. While it seems straightforward enough (just copy Super Mario 64), it's not as trivial as it first appears. There are many small nuggets of wisdom that can often take weeks of trial and error to discover.



    Section 5: Graphics Display

    Cartoon Rendering: Real-time Silhouette Edge Detection and Rendering

    Carl S. Marshall (Intel Architecture Labs)
    Game Programming Gems 2
    Abstract: Silhouette detection and rendering is a key component for adding a stylized look to 3D cartoon rendering. The basic concept of silhouette edge detection is to find the important edges that depict the outline of a model. Many cartoon animators illustrate these silhouettes by tracing a black outline around the borders of a model. This cartoon rendering article describes several silhouette edge detection techniques: an edge-based detection method, a programmable vertex shader technique, and an advanced texturing technique. The advantages and disadvantages of each technique are highlighted.

    Cartoon Rendering Using Texture Mapping and Programmable Vertex Shaders

    Adam Lake (Intel Architecture Labs)
    Game Programming Gems 2
    Abstract: The techniques described in this article take advantage of modern real-time graphics capabilities, including texture mapping and programmable vertex shading. The basic idea is to simulate a limited color palette using textures. To do this, we modify the standard diffuse shading equation to create a highlight and shadow color, and use these colors to create a small texture map for each material to be used as a lookup table at runtime. Additionaly, these techniques require no additional markup information from the artist - this article describes the creation of the texture maps and texture coordinates for each material.

    Dynamic Per-Pixel Lighting Techniques

    Dan Ginsburg and Dave Gosselin (ATI Research)
    Game Programming Gems 2
    Abstract: This article presents several techniques that can be used to perform dynamic lighting effects on a per-pixel basis. These methods have the advantage that they don't require highly tessellated geometry, and can often be performed at little performance cost on multitexturing graphics hardware.

    Generating Procedural Clouds Using 3D Hardware

    Kim Pallister (Intel)
    Game Programming Gems 2
    Abstract: In this article, we'll set out to procedurally generate cloud textures that possess some of the properties that real clouds exhibit. In additon, because textures typically reside in graphics subsystem memory, we'll aim to generate the procedural clouds almost entirely using the graphics hardware. Finally, we'll address some ways to scale the technique's quality and performance requirements in order to accommodate a range of target machines.

    Texture Masking for Faster Lens Flare

    Chris Maughan (NVIDIA Corporation)
    Game Programming Gems 2
    Abstract: This article introduces a novel way in which to generate texture information from pixels already rendered to the frame buffer. The technique can be used in several different ways, but is presented here as a solution to the common problem of occluded lens flare. Many games attempt to read back pixels generated in the frame buffer in order to determine exactly what was visible in the final scene. We will present a technique that works without CPU assistance, and does not require reading data from the graphics card. We will also outline the reasons why reading back information from the graphics card can be a costly operation and should be avoided if possible.

    Practical Priority Buffer Shadows

    D. Sim Dietrich Jr. (NVIDIA Corporation)
    Game Programming Gems 2
    Abstract: This article presents a set of techniques to improve the utility of "priority buffers". Along the way, we will explore other shadow techniques, and close by discussing how to create useful hybrid techniques.

    Impostors: Adding Clutter

    Tom Forsyth (Mucky Foot Productions)
    Game Programming Gems 2
    Abstract: Impostering is about using sprites in a 3D scene, but instead of an artist drawing or rendering the sprites beforehand, they are updated on the fly. Instead of rendering a high-triangle object every frame, the high-triangle object is occasionally rendered to a texture-usually on the order of once every 5 to 50 frames. This article presents Impostors and describes how to render them, create update heuristics, and use prediction to determine how to orient the impostor each time it is rendered.

    Operations for Hardware-Accelerated Procedural Texture Animation

    Greg James (NVIDIA Corporation)
    Game Programming Gems 2
    Abstract: This article covers a few fundamental operations for generating procedural animations, and puts these to use in specific examples that simulate fire, smoke, water, or perform image processing. With today's consumer hardware, we can even run complex cellular automata programs entirely within the rendering of a 3D accelerator and put the resulting animations to use in various effects.



    Section 6: Audio

    Game Audio Design Patterns

    Scott Patterson
    Game Programming Gems 2

    A Technique to Instantaneously Reuse Voices in a Sample-based Synthesizer

    Thomas Engel (Factor 5)
    Game Programming Gems 2

    Software-based DSP Effects

    Ian Lewis (Acclaim Studios)
    Game Programming Gems 2

    Interactive Processing Pipeline for Digital Audio

    Keith Weiner (DiamondWare)
    Game Programming Gems 2

    A Basic Music Sequencer for Games

    Scott Patterson
    Game Programming Gems 2

    An Interactive Music Sequencer for Games

    Scott Patterson
    Game Programming Gems 2

    A Low-Level Sound API

    Ian Lewis (Acclaim Studios)
    Game Programming Gems 2

    37% off discount
    "AI techniques from commercial games"
    AI Game
    Programming
    Wisdom 3



    "Cutting-edge graphics techniques"
    GPU Pro 3

    Mechanical
    Stealth BLANK Keys
    Das Keyboard
    $133 at Amazon.com
    Show everyone you're a BAD ASS!
    Bad Ass
    Unique Abyss LED Watch
    Abyss LED Touchscreen Watch
    TOTALLY BLACK CENTER

    See how it works
    On sale 40% off
    Cool Camping Gear
    Camping Birthday Party
    Steampunk Gadgets
    Steampunk Decor
    Gifts for Teenage Girls
    Teenage Girl Bedroom Ideas


    Home