I got my hand on an old edition of this book second edition, now the third is available), and it seemed to me a good place for game developers to start.
Mike McShaffry has a lot of experience from the game field, and his goal is to share it with the readers. In every chapter, there are some anecdots of his past, and it is a lot of fun to see studios falling in the same pitfalls than we do when we start coding.
Content and opinions
The book is split in four different parts. The first one starts with the fun you can get coding a game, but also the troubles you will have. And what technology will you use? 2D? 3D? And what do they imply? As for every code, there is a set of general good pratices, as memory handling, scripts, … that need to be address. The author sometimes did not use them, and there are examples where they caused troubles.
As to get the game running on a computer, another set of rules is needed. Without them, it is just hard to have a running game in the end. How is the game built (not everybody uses a tool to automaticaly build the game)? How to interact with the game? A lot is written about this last issue, and as the author is used to Direct X, the clues are explained with it. But the advice can be used with other technologies. One just has to find the equivalent functions in the other framework. Obviously, it is not possible for the book to express this in every available framework, and it is also not the purpose of the book (it is not a book on a game engine, not a book on Direct X, …).
The third part is also mainly about Direct X, more exactly the 3D part. It lays down the basis for any 3D game engine, but it is not the book’s goal to be exhaustive about the design of a 3D engine. Also Microsoft imposes a set of rules to get the appropriate “Windows compatible” logo, which is needed if you want to sell the game. The last chapter in this part tacklesdebugging the game. I have to say this is much needed and too often it doesn’t appear in game programming books, although it is one of the pillar of programming. Different debugging techniques are addressed.
Finally, the last part tackles how the coding must be driven. Scheduling and milestones, testing and fixing the bugs or how the game will finally be published (what needs to be done at the end or after the end), all you need if you are in the game industry and you have to handle a commercial release.
My edition of the book is several years old, and I felt it, as different examples are outdated (the requirements needed for a today game, the Direct X version, Windows versions that need to be supported, ..). I couldn’t check in the thirs edition if this was updated, but it should have: the whole point of a new edition is to update these facts. So if you want to code a game, buy the last edition of this book.