I first heard of this book when it won the Game Developer Magazine book of the year award, I kinda made a note to get hold of it and then kinda forgot about it. I only remembered about it when it popped up in my amazon recommended books newsletter and I pulled the trigger on it.
This book is written primarily by Mike McShaffry (who spent years working for origin on the Ultima games) with a few chapters by guest authors. It aims to cover the A to Z of game programming in one book and in that regard it both succeeds and fails. The book is targeted at beginners and I guess for me that was my the biggest issue.
Looking at the table of contents, I was optimistic about this book, it seemed like it covered most of the topics. Now I just want to make it clear that I knew this book was kind of a beginner text and I wasn’t expecting some “bible” on every aspect of game development. Unfortunately (for me) this book practically assumes no prior knowledge of the field and some basic proficiency with C++ and I felt a little frustrated reading through it.
The chapters are well written and flow nicely, the language is simple and casual and a pleasure to read but namely the author assumes no prior knowledge so the pace is slow and there are lengthy explanations of basic topics. The technical content is also kept to a minimum only the bare necessities are covered. This is necessary to both keep the length down and to not alienate the readers. Now, if I had just learned C++ and was just getting into game development this book would absolutely blow me away. It covers everything from input systems, language issues, game loops, audio, AI, graphics, etc… pretty much the whole kitchen sink! There is an absolute treasure trove of info for novice programmers. Hell, they even have a whole chapter dedicated to scripting systems and a basic introduction to the LUA languge.
I did mention that the technical content is kept to a minimum, and unfortunately a few of the chapters are exceptionally weak in this regard. For example the collision detection chapter doesnt really cover much in respect to how collision detection actually works or what involved in writing a collision detection system but rather suggests to the reader to use an pre-built collision detection system instead. While I do agree that covering collision detection in detail is beyond the scope of a beginner book, Ido feel that they could at least have spent a bit more time in explaining the core problems and concepts surrounding the topic or just given the reader enough background to search for more info on his own.
The book does feature a lot (and I mean a lot) of source code and this is a great thing for hobbyists as they can simply cut and paste the code and with some minor tweaks here and there be able to get it working and play with most of the concepts covered. One thing that I can say is unlike most books that I’ve read with large amounts of source code, the author’s programming style doesn’t make me want to cut my eyes out with a blunt spoon, The example code is neat, concise and clear and serves as a solid example of the covered content.
Now it might seem like I’m being rather harsh on this book and perhaps I am, this book is a great book for beginners and hobbyists, and to be honest I think you’ll be hard pressed to find a better all encompassing book on the subject but any experienced readers will only end up getting frustrated reading through it. I didn’t even manage to make it through the entire book and just skimmed through the last few chapters.
The best part of the book for me and one of the main reasons I’m glad I bought this book is the small “tales from the pixel mines” sections where the author tells a little story about his past experiences working on some of the most notable games in the past. These snippets contain a wealth of info and are often quite humorous. I would recommend buying the book just for those little sections.
Overall this is probably the best beginner level book on the game development subject out there but I really don’t recommend it for experienced readers (I would rather suggest Jason Gregory’s Game Engine Architecture or Introduction to Game Development edited by Steve Rabin as alternate all in one books).
- Excellent introductory text covering all the aspects of game development.
- A wealth of information for beginner programmers.
- Well written and easy to read.
- Large amount of clear, simple and well formatted code examples.
- Covers the use of common APIs like directX, bullet physics, direct sound, xInput, etc.
- “Tales from the pixel mines” excerpts.
- Will frustrate experienced programmers.
- Doesn’t contain a lot of in depth technical information on the various topics.