Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Game Programming Gems (GAME PROGRAMMING GEMS SERIES) Hardcover – August, 2000
The Amazon Book Review
Author interviews, book reviews, editors picks, and more. Read it now
Customers who bought this item also bought
Customers who viewed this item also viewed
What other items do customers buy after viewing this item?
Aimed at the working (or aspiring) Visual C/C++ game programmer, Game Programming Gems contains over 60 programming tips that have been gathered from more than 40 working game gurus. It you want to build your own games or are interested simply in how games work, this text provides an intriguing glimpse into how the pros create state-of-the-art 3-D animation.
The guiding principle in this book is to publish the best available tips for game programming; most of these fit into 10 pages or fewer. But don't let the efficient presentation fool you; almost every one of these tips will be invaluable to any serious game developer.
Early sections concentrate on techniques for creating more maintainable, faster code. A guide to using scripts for data-driven game modules and techniques teaches you better resource management (like using handles). A quick-start tutorial to the Standard Template Library (STL) will help you learn how to use these fast collection classes in your code right away. Several contributors show off strategies for better game debugging and profiling--there's even a set of classes that can provide onscreen feedback during testing.
The mathematical underpinnings that are required to do leading-edge 3-D graphics processing--including the use of quaternions, instead of matrices, in certain calculations--also are discussed. (One section looks at simulating water surfaces.) And artificial intelligence (AI) techniques for games--like Finite State Machines (FSMs), fuzzy logic, and neural networks--are explained. (The extremely cool flocking algorithms, which will let you add the behavior of birds or fish to your next game level, are especially appealing.)
Over 20 techniques for doing work with polygons (a staple of representing 3-D virtual worlds) are laid out, too. You'll learn a variety of important concepts, such as collision detection, working with key frames, better skinning for character animation, and realistic terrain generation (including fractals). A discussion of pixel effects, with some cutting-edge ways to add more realistic lighting and shadows to your games, closes the discussion. (One of the more exciting sections shows you how to simulate glass objects within 3-D scenes.)
With its leading-edge material on the algorithms that are used by the competition, Game Programming Gems will be a virtual must-read for anyone who works in the game industry. With code samples that are geared to OpenGL and that should run on both Windows and Linux, this book will help developers hone their game-programming skills. --Richard Dragan
From the Publisher
* A must-have for every game programmer's 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
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
The first section of the book discusses object-oriented design and often refers to "design patterns". Since I hadn't heard of them, and programmed my own way, there was much to learn. This is where the book's references help. If you aren't an expert at c++ programming, I suggest you read the references, namely "Effective c++", "More Effective c++" (both by Scott Meyers), and also the book on design patterns mentioned: "Design Patterns" by Gamma et. al. To make the most of the STL section, you could do with a book on STL also.
The chapter on bit-arrays is especially good for compression and decompression code, preventing you from having to perform tricky bit operations. The profiling section is good because it shows how to profile with your own code, rather than relying on having a compiler to profile for you. That's just two example chapters in this section.
The second section of the book is about Maths. To me, the articles are too complex given how short they are. To understand them, you need university-level Maths and understand summing notation, vectors, matrices, differentiation, and integrals. I've only done First Year university Maths, and found myself out of my depth in this section.
The third section is about Artificial Intelligence. This section covers finite state machines (useful in any game), game trees (used by the computer opponent to defeat the human player in games such as chess and checkers), as well as search techniques, how to make enemies flock, and fuzzy logic.
The fourth section is about polygonal techniques, which are mainly used for 3D games. The book's code for 3D games is written with OpenGL in mind. I am mostly interested in 2D game design, so I haven't read all the chapters of this section. But there's an interesting chapter that shows you how to generate smooth curves given a set of control points. This is great for making an enemy move along a curve rather than in a straight line, so you can apply it to 2D game design.
The final section has a chapter on using 3D hardware for 2D sprite effects (with OpenGL). This is exactly what I needed to know. It was my favourite article because it solved my immediate problem, the answer to which I couldn't find after exhaustive web searches. This book isn't just for 3D game creation; it shows how to use OpenGL for 2D games. This way you can get the benefits of sprite scaling and rotation in a 2D game.
The accompanying CD has the full source code to the articles, which is required because many chapters only contain code snippets with the text.
Overall, this is a great book. It is big and comprehensive. It's better than a single-author book because you're not stuck in his particular mindset. Plus you can pick up the book and quickly read a chapter, and it's usually not necessary to read the chapters in order. The disadvantage is that some of the chapters may not interest you, but there's plenty that will interest you, as the book has a large number of articles, and the book size is 600 pages. The book is well-balanced in that it doesn't contain too much theory, nor too little, and it contains practical examples and utilities that you can readily use.
Anyone with c++ knowledge and an interest in programming games should buy this book. If your c++ skills aren't too sharp, you will want to buy some of the referenced books.
I look forward to reading the other books in the series.
GPG will serve as an excellent introduction to a broad variety of game programming techniques for those new to the industry, and an invaluable desk reference and for more experienced game developers. As a 7-year industry veteran, I can't count the number of times the techniques in this book would have proven useful in the past.
Of particular interest are Steve Rabin's excellent chapters on the A* algorithm, the cornerstone of (most) pathfinding in computer games. These chapters go far beyond the explanation of the algorithm itself and serve up a host of rare and valuable insights for getting the most out of your pathfinding in an actual game environment.
I have no doubt that this book will have a significant impact on the state of the art in the game development community, and one can only hope that this book is only a hint of what's to come.
As an example: pages 287-304 describes a simple method of navigating in a 3D space. Some of the methods for the NavigationMesh and NavigationCell classes are defined in plain text, but the classes themselves are not defined (in the text). Without the source code... it is a lot better than nothing.
Another example: Chapter 2.6 describes the process of solving the wave equation in 2D. It is no substitute for a full book on how to solve partial differential equations using the finite difference method. But it does solve the wave equation using it! He also gives the analytical solution to the wave equation (he doesn't explain where that comes from, but that's fine). He omits a *very* important detail regarding the courant-friedrich lewy condition (the stability condition) that will have the unfortunate reader who is unfamiliar with PDEs tearing their hair out of their skull if they attempt to implement the solution themselves [pick the wrong combination of dt and h, and the uninitiated reader could be left howling in frustration for hours wondering why the stupid simulation they wrote keeps generating garbage for numbers!]. And the author of this chapter could have fixed this with a more detailed explanation of how solving these PDEs actually *really* works and why they work! To his credit, he includes some pretty good references at the end, the sections written by this fellow were very well written, the supporting figures are very good, his descriptions are good! He just left out some important details that are absolutely necessary to have if you really want to implement the simulation (like the where the CFL condition comes from, and how the boundary conditions work).
This book will help keep you from wandering in the dark and being forced to figure out all of your own novel algorithms for solving problems that occur in writing a game engine. The text itself provides a theoretical and algorithmic overview of the issues of solving problems with game engines. It will get you thinking in the right direction. But the implementation details are (presumably) left in the CD (which I cannot look at, since my book didn't have a CD shipped with it). And the CD has source code for linux and windows. (It uses OpenGL and GLUT for much of it's source code, so it should be possible to get the code to compile on a modern macintosh, with some effort).