textbook review copies
Quick Search      
      
Search
Browse by Topic
Browse by Title
Browse by Author
View Out Of Print
About CRM
Author Guidelines
Contact Us
Distributors
Ordering (20% Off!)
Home
Sign In
Shopping Cart
Request Alerts

Game Programming Gems

Mark DeLoura

Companion Site Book/CD Update Reviews

For the countless tasks involved in creating a game engine there are an equal number of possible solutions. But instead of spending hours and hours trying to develop your own answers, now you can find out how the pros do it! Game Programming Gems is a hands-on, comprehensive resource packed with a variety of game programming algorithms written by experts from the game industry and edited by Mark DeLoura, former software engineering lead for Nintendo of America, Inc. and now the newly appointed editor-in-chief of Game Developer magazine.

From animation and artificial intelligence to Z-buffering, lighting calculations, weather effects, curved surfaces, mutliple layer Internet gaming, to music and sound effects, all of the major techniques needed to develop a competitive game engine are covered. Game Programming Gems is written in a style accessible to individuals with a range of expertise levels. All of the source code for each algorithm is included and can be used by advanced programmers immediately. For aspiring programmers, there is a detailed tutorial to work through before attempting the code, and suggestions for possible modifications and optimizations are included as well.

Features

  • A must-have for every game programmers’ library!
  • Written by game programming experts and edited by Nintendo’s Mark DeLoura
  • Comprehensive coverage of all major techniques used in game development
  • CD-ROM is packed with the source code in C & C++, completely portable to Windows and Linux, and all graphics displays use the popular Open GL language

Table of Contents

  • Section 1 Programming Techniques
    -- 1.0 The Magic of Data-Driven Design; 1.1 Object-Oriented Programming and Design Techniques; 1.2 Fast Math Using Template Metaprogramming; 1.3 An Automatic Singleton Utility; 1.4 Using the STL in Game Programming; 1.5 A Generic Function-Binding Interface; 1.6 A Generic Handle-Based Resource Manager; 1.7 Resource and Memory Management; 1.8 Fast Data Load Trick; 1.9 Frame-Based Memory Allocation; 1.10 Simple, Fast Bit Arrays; 1.11 A Network Protocol for Online Games; 1.12 Squeezing More Out of Assert; 1.13 Stats: Real-Time Statistics and In-Game Debugging; 1.14 Real-Time In-Game Profiling
  • Section 2 Mathematics
    -- 2.0 Predictable Random Numbers; 2.1 Interpolation Methods; 2.2 Integrating the Equations of Rigid Body Motion; 2.3 Polynomial Approximations to Trigonometric Functions; 2.4 Using Implicit Euler Integration for Numerical Stability; 2.5 Wavelets: Theory and Compression; 2.6 Interactive Simulation of Water Surfaces; 2.7 Quaternions for Game Programming; 2.8 Matrix-Quaternion Conversions; 2.9 Interpolating Quaternions; 2.10 The Shortest Arc Quaternion
  • Section 3 Artificial Intelligence
    -- 3.0 Designing a General Robust AI Engine; 3.1 A Finite-State Machine Class; 3.2 Game Trees; 3.3 The Basics of A* for Path Planning; 3.4 A* Aesthetic Optimizations; 3.5 A* Speed Optimizations; 3.6 Simplified 3D Movement and Pathfinding Using Navigation Meshes; 3.7 Flocking: A Simple Technique for Simulating Group Behavior; 3.8 Fuzzy Logic for Video Games; 3.9 A Neural-Net Primer
  • Section 4 Polygonol Techniques
    -- 4.0 Optimizing Vertex Submissions for OpenGL; 4.1 Tweaking A Vertex’s Projected Depth Value; 4.2 The Vector Camera; 4.3 Camera Control Techniques; 4.4 A Fast Cylinder-Frustum Intersection Test; 4.5 3D Collision Detection; 4.6 Multi-Resolution Maps for Interaction Detection; 4.7 Computing the Distance into a Sector; 4.8 Object Occlusion Culling; 4.9 Never Let ‘Em See You Pop – Issues in Geometric Level of Detail Selection; 4.10 Octree Construction; 4.11 Loose Octrees; 4.12 View-Independent Progressive Meshing; 4.13 Interpolated 3D Keyframe Animation; 4.14 A Fast and Simple Skinning Techniques; 4.15 Filling the Gaps – Advanced Animation Using Stitching and Skinning; 4.16 Real-Time Realistic Terrain Generation; 4.17 Fractal Terrain Generation – Fault Formation; 4.18 Fractal Terrain Generation – Midpoint Displacement; 4.19 Fractal Terrain Generation – Particle Deposition
  • Section 5 Pixel Effects
    -- 5.0 2D Lens Flare; 5.1 Using 3D Hardware for 2D Sprite Effects; 5.2 Motif-Based Static Lighting; 5.3 Simulated Real-Time Lighting Using Vertex Color Interpolation; 5.4 Attenuation Maps; 5.5 Advanced Texturing Using Texture Coordinate Generation; 5.6 Hardware Bump Mapping; 5.7 Ground-Plane Shadows; 5.8 Real-Time Shadows on Complex Objects; 5.9 Improving Environment-Mapped Reflection Using Glossy Prefiltering and the Fresnel Term; 5.10 Convincing-Looking Glass for Games; 5.11 Refraction Mapping for Liquids in Containers
  • Section 6 Appendix
    -- 6.0 The Matrix Utility Library; 6.1 The Text Utility Library; 6.2 About the CD-ROM; Index

EDITOR BIO

Mark DeLoura is the editor-in-chief of Game Developer magazine and the former software engineering lead at Nintendo of America, Inc.He has also worked independently as a game developer and has written for a number of industry publications.

ISBN 1-58450-049-2
PRICE $69.95
PUB DATE August 2000
FORMAT /CD (Windows/Linux ) - 614 pages


Book/CD Update

  • The LERP and SLERP functions to do linear interpolation and spheric linear interpolation between quaternions is not accurate. When getting close to the second quaternion (for t values close to 1) the vertices interpolated between (when used together with the accompanying quaternion to matrix conversion function) seems to be stretched. At t = 1, they are stretched to infinity.
  • On page 225/226 the macro definitions work correctly as they are on the companion CD-ROM, not as they are printed in the book. The correct version is on the CD-ROM, :\SourceCode\AI\00Rabin\fsmmacros.h or as shown here:

    #define BeginStateMachine if( STATE_Global == state ) { if(0) {
    #define State(a) return( true ); } } else if( a == state ) { if(0) {
    #define OnEnter return( true ); } else if( MSG_RESERVED_Enter == msg->name ) {
    #define OnExit return( true ); } else if( MSG_RESERVED_Exit == msg->name ) {
    #define OnUpdate return( true ); } else if( MSG_RESERVED_Update == msg->name ) {
    #define OnMsg(a) return( true ); } else if( a == msg->name ) {
    #define SetState(a) go->next_state = a; go->force_state_change = true;
    #define EndStateMachine return( true ); } } else { assert( !"Invalid State" ); \
    return( false );} return( false );

CHARLES RIVER MEDIA
EMail Charles River Media Back to Charles River Media's Homepage ©1996- Charles River MediaAll Rights Reserved
Designed by DaLee & Company, Inc.
Disclaimer