The ‘Game Programming Gems’ Series


The ‘Game Programming Gems’ series have become somewhat of a young classic—most people know of them, quite a few have chucked out the $70 to get their hands on one, and yet another few own the entire collection of three books (myself included..cough, cough).

The first book was published in 2000 with the others following in 2001 and 2002. Since ‘Game Programming Gems’‘ by Mark DeLoura, the series has evolved quite a bit, from being a little shaky to a rock-solid concept, which promises great things to come. (If the publisher decides to keep the flame alive, that is.)

Based on a somewhat unconventional form, the ‘Game Programming Gems’ offer short, extremely hands-on tips. Typically weighing in at around five to ten pages, each “gem” is a self-contained little featurette on a very narrow and specialized subject. The gems are organized into sections such as “General Programming”, “Mathematics” and “AI Programming.” As each gem is independent and written by developers themselves (often just one author per gem) there is a high amount of redundancy. This is, as usual, both a good and bad thing: you don’t have to read every gem to get the whole picture, but you get to read the same opening lines over and over. (And if I have to read another “current hardware allows the developer to create more realistic games,” I’m going thermal!)

The title contains the word “programming,” and that’s what the reader gets. There are no abstract game design principles, no “gameplay is more important than frame rate” nagging, no insight on balancing a learning curve, and just one GUI design gem in the entire series. No, instead we are treated to the gem “Quaternion Compression,” which reveals a way to store a quaternion into four bytes, and “More Trigonometric Approximations.” If abstract game design books are pillows, these books are granite slabs. Honestly, I read these books on the subway in the vain hope that someone will read over my shoulder and think I’m a clever person.

As every gem is written by a different developer, many voices come to speak, which makes each gem a little different. This is also one of the subtle strengths of the format: by seeing how various programmers write their code, attack their problems and present solutions, a lot of experience is communicated. Also, even if the primary subject of a gem doesn’t appeal to you, it is still interesting to see that process. Many of the gems communicate techniques that are easily portable to types of problems other than the one primarily handled in the gem. As the series is very thorough on cross-references to other articles in the series, the books tie in nicely with each other. Plus, with the many diverse voices, contradictions are inevitable, which is another subtle strength. While one programmer praises a technique, the next one will point out the performance problems it causes. That way, you get multiple views, and walk away a wiser developer.

The books are rich with diagrams, images, and screen shots, as well as a section with high-quality color plates of certain screen shots. Along with each book comes a CD containing code samples from the book, sample programs and hi-resolution versions of the color plates. The first book was a bit heavy on code embedded in the text, but in the latter two, the code in the book is kept to a minimum and most code samples are evicted to the CD instead, with great results.

The only drawback of the ‘Gems’ is that they are a bit dry, a little devoid of personality. But then again, they are written by programmers. (And what did you expect? The term “programmer art” exists for a reason!)

So, what do these books contain? Well, all three have sections on general programming, mathematics, artificial intelligence and graphics programming. The second book added audio programming, and the third added network programming. In the first book, graphics was split up on polygonal techniques and pixel techniques, so that might be the book to get if you’re primarily into visual programming. (Vertex shaders and pixel shaders didn’t hit the scene until ‘Game Programming Gems 2’, however, so that might be a little more up-to-date.) The first book also devotes four chapters to quaternions. It is impossible to tell which book to get by judging the quality of information—every gem might be invaluable to someone. Make sure to check the contents listing in each book before deciding upon one. They all carry the same validity.

It’s very welcome to see that game audio programming has been allowed to take up such a healthy amount of space. Hopefully, it’s a sign of a change to come. In the same way, the Artificial Intelligence department has matured significantly through the series, and in the third book it shines.

Another movement through the series is the quest for portability. Where the first book contained x86 assembler and Visual Studio-specific tricks, more and more generic solutions emerge with each new book. The third one even mentions the Mac platform, and while it will be a long time coming before anything Mac-specific makes it into print, it is a nice thing to do. (Actually, I don’t want Mac-specific material, platform-independent is always better.) It might be the work of the new editor, Dante Treglia, who took over from Mark deLoura, but of that I know nothing. The third book has two glitches with the color plates, but that’s nothing to worry about. All in all, the books have been gifted with a tremendous editing job, and they are virtually free from mistakes—a nice touch.

So, what’s the bottom line? Well, I intended to make this a review of the third book, with a bit about the old books tacked onto it, but I realized that the first two are still very valid and interesting, so there was no reason to leave them out. Which book you want depends heavily on what your interests are. Judging from polish and sheer “book quality,” the third is by far the best—it’s good to see something get better with each sequel. But make sure that you check them all out before deciding on which to get. Content is king, after all. (There, I said it myself. Graphics aren’t everything.) The ‘Gems’ will become something of a historical document, but so far they are rather timeless.

Make no mistake, though. These books are seriously hard-core, and many gems are heavy on the maths. Back-of-the-book texts imply that novices can have a use for the books: “If you are just getting started [with game programming], this book offers a true cross-section of the challenges you’ll face.” Yeah, and in doing so, it will scare the heck out of the newbie!

Recent Forum Threads

About iDevGames

Since 1998, iDevGames has been educating, supporting and enhancing the community of game developers that produce video games for the Apple Mac and iPhone platforms. Get the latest game development news by subscribing to our news feed.