Game Programming Gems
||Author: Mark DeLoura|
List Price: $69.95
Our Price: Click to see the latest and low price
Publisher: Charles River Media (August, 2000)
Average Customer Rating: 4.28 out of 5
Customer ReviewsRating: 2 out of 5
Do NOT buy this book without actually reading a chapter or
two -- very carefully -- in a bookstore. I'm afraid you'll be disappointed. You will be tempted to buy it at first because the book is well made -- it's cute to look at, printed on acid-free, thick paper, font selection is very good, pleasing and clear. Don't fall for these mechanical attractions! Evaluate the contents.
It's truly not a book; it's more of a collection of perfunctory commentary to some source code on the disk (of unknown quality and/or usefulness.) The writing is mostly abhorrent (with the exception of the sections written by LaMothe and another guy whose name escapes me at the moment; Lamothe is good and can write, not only program); a lot of stuff is simply not explicated, the selection of the actually printed code is haphazard and unhelpful vis-a-vis the text. Since the quality and usefulness of the stuff on the disk is anyone's guess as well (and based on the text, it's nothing awesome), I don't think this book deserves the acclaim that it seems to get.
Several chapters are wasted on annoying bs about hungarian notation, development process (a la Code Complete), absolute banalities about using STL (very superficial, w/o any linkup with games programming -- just buy an STL book if you need to learn it, you won't get anything out of the Gems book itself.) There's a section on templates where the writers seemed more concerned with hugely impressing the reader with the supposedly latest-and-greatest template tricks than offering something useful (look for matrix classes -- they propose the stuff as some kind of generic mechanism (thus, templates), yet what they do will be totally useless for more than 3x3 matrices, and those can be simply coded manually if you need this kind of optimization, which is inlining and unrolling, really -- and keep in mind that it's only small loops that can be gainfully unrolled coz if it doesn't fit in the cache... you know where I'm getting to... moreover, with branch prediction, normal loops may perform better than when unrolled; at any rate, a regular, less-fashionable approach could result in simpler code; but they gotta show off their templatizing skill, wow, I'm impressed, another piece of pompous nonsense suitable for the C++ Report... too bad it's useless practically for 4-and-above dimensional matrices. Generality that doesn't apply generally... an overdesigned particular case, that's what it is.)
Most other chapters are written in a very typical halting, disjointed, and ungrammatical geeky-speak, and I don't mean terminology or technicalities, I mean an irritating inability of most contributors to organize and articulate their thoughts. Like I've already mentioned, it's printed on thick paper, if printed on normal paper, it'd be half the size. The binding is not good, my copy has already fallen apart, and it's not that I use it all the time.
The only potentially fruitful side of this book is bibiography; iow, you can use it as an catalogue of diverse methods used in programming, and when you're interested in something, follow the bibliography in order to really learn about the topic. The bibliography is fairly extensive, obviously recent; includes many web-sites with papers, etc. So that's good of course.
Overall though, the book is mediocre and too expensive for what it is. I would't buy it for more than $. 'course I've already bought it for more, but you don't have to. My opinion is, it's a clear thumbs down.
Rating: 4 out of 5
May find something useful in it
I am for the most part a 2D DirectDraw programmer with some experience in DirectSound and DirectMusic. I only use these APIs and only with Visual C++ 6.0 Standard in Windows XP. So, I cannot sit here and write a lengthy review about how cool I think all the aspects of this book are when I wouldn't use most of the information covered in the book with my own 2D graphics engines. However, there was still a few VERY good articles in this book that can be used by either 2D or 3D programmers, so I'll talk about those because I know them and have used them.
The first really good chapter I found is 1.9 "Frame Based Memory Allocation" by Steven Ranck. Teaches you a trick on how to completely eliminate memory fragmentation in your games and speed up memory allocation during run-time, by never using memory allocation in run time. Instead, allocating memory at load time and using that allocation throughout various parts of the program until the program exits. Pretty cool and fast.
But I cannot skip the fact that all the articles in the first section can be used in any type of game (2D/3D) but I haven't gotten as much use out of them yet. There are 14 chapters in the first section total.
Once you get into the section on mathematics, you had better be a math wiz or at least proficiant.... Chapters like "Polynormal Approximations to Trigonomic Functions" means nothing to a 2D programmer like myself. Same goes for the chapter, "Matrix-Quaternion Conversions".
Section 3 goes into AI programming. The only chapters I have really read thoroughly is 3.1, "A finite-state machine class" by Eric Dysband, and 3.3, "Basics of A* For Pathfinding" by Bryan Stout. I found this chapter very useful and the book CD-ROM comes with pathfinding examples written by Bryan that demonstrate what he is talking about. Really useful to me!
Section 4 is completely useless to me because it's all about 3D programming. In fact the section is titled "Polygonal Techniques" and contains 19 chapters.
Section 5 is titled Pixel Effects and I really haven't gotten much out of this section unfortunately.
So as you can see, no matter what kind of programmer you are, you can probably get at least one really good tip out of this book. I didn't list all the useful chapters in the book, just the ones that were useful to me. When you read through it, you are likely to find different ones that are just as useful to you.
Rating: 4 out of 5
A fantastic "a la carte" tool kit
Written by a lot of the top professionals in the industry, each section in this book is like sitting in on a roundtable session at the Game Developers Conference. The contributors here are not giving you just theory that you can think about... they are providing TOOLS that they use in a manner that makes it easy for YOU to use in YOUR code.
The only drawback is that there is so much covered in so many different disciplines. You are buying the graphics and networking sections even if you aren't doing graphics and networking. The only way around this would have been to split the books by area... such as Charles River Media did with the "AI Wisdom" book. However, if you cover a lot of areas in your game programming, this book will touch on all of them!
I am personally using the "State Machine Language" by Steve Rabin (Nintendo of America), the gem on implementing a simple singleton class, and will be doing a variant on Steve Woodcock's "flocking" gem. Could I have done these myself? Possibly. However, by using the code on the CD and dropping it into my game project, I have recouped the purchase price of the book at least 1000:1! That's not a bad ROI.
If you are a game programmer, the book will be of value to you. Should you but it? Ask yourself how much YOUR time is worth... if you can save yourself hundreds of hours for ~70 bucks why even hesitate?
· Mathematics for 3D Game Programming & Computer Graphics
· AI Game Programming Wisdom (with CD-ROM)
· Game Programming Gems 2
· Physics for Game Developers
· Game Programming Gems 3