Sponsored By

Book Review: Beginning Direct3D Game Programming

Justin Lloyd finds this week's book selection to be useful, but wanting in many ways--failing to live up to its title, and not providing any game-programming context in its text.

Justin Lloyd, Blogger

May 4, 2004

6 Min Read

Even with the veritable explosion of books aimed at game developers in the past few years, there is still a lack of really good introductory texts for students and would-be developers who are interested in game programming using DirectX. Beginning Direct3D Game Programming 2nd Ed., by Wolfgang Engel unfortunately fails to fill that void to any adequate degree.

Wolfgang Engel is editor and author of several books covering game development and teaches at the Games Academy in Germany. In the interest of full disclosure, he is also a faculty advisor at the Academy of G.E.T. located in Hollywood, California which is where I teach game and graphics programming classes.

Reading through Beginning Direct3D, Engel’s intentions aren’t really clear—the book remains focused enough on Direct3D that it fulfills the requirements of part of the book title, but it falls far short of being a good introductory text to either Direct3D or game programming due to some rather fundamental flaws. The Game Programming part of the title doesn’t even exist in the book, which is nothing more than a collection of separate demos that show off a particular aspect of Direct3D with no actual context of how they would be used in even a rudimentary game.

The book throws in several obligatory sections, “introduction to DirectX history”, “an overview of HAL and COM” and “how to install”—this latter chapter having been updated to reflect both Visual Studio 6.0 and Visual Studio.NET.

Beginning Direct3D really does need a decent technical reviewer to go through the manuscript with a fine-tooth comb; the number of glaring errors in even the most basic matrix examples is befuddling. The worst aspect is that these errors were in the 1st edition and they were carried over to the 2nd edition too! These errors I mention are really just the tip of the iceberg.

Buried at the end of two arbitrary sections (I never did figure out what demarked a particular page as the end of a section) are two quizzes. Strangely all of the answers are given directly below the questions. I can’t imagine that a teacher would hand this quiz out as homework. Perhaps this is for people who don’t have time to read the whole book or very lazy teachers who don’t wish to mark student papers. Maybe this is a way to weed out the really bad students?

The examples use the common Microsoft DirectX 9.0 framework. If there’s one thing I’ve learned in teaching DirectX at the college level, it’s that you don’t give programmers who are just starting out several thousand lines of complex C++ as a reference point. Begin with a simple framework that they themselves have put together. Let us be honest, the Microsoft DirectX reusable framework is great for building stand-alone demonstrations of a particular piece of technology for the Microsoft SDK. However, it’s a complete nightmare if you don’t understand how it performs the three-stage delayed initialization or how the Windows message pump is deployed.

With any book that contains a CD-ROM of software or code examples there are going to be problems with all of the variations in OS configurations and hardware that a reader may own. That’s to be expected. What I don’t expect is something as glaringly obvious as hard-coded paths in the Visual Studio projects and solutions which are then compiled in to the final executable.

The text of the 2nd edition has been changed to refer to the CD-ROM considerably more. Now each example is properly referenced with the path to locate it on the CD-ROM. This was one of the biggest problems in the earlier edition; a reader would have to infer which example was being used.

The 1st edition contained a decent primer on 3D math (probably the most useful aspect of the book) along with a 3D math appendix. The primer was removed to make way for the DirectX 9.0 High Level Shader Language chapter, leaving the appendix sitting in the back with no reference that I could see in the main body of the book. Other than this section on High Level Shader Language, most of the book sticks with its DirectX 8.x roots, changing only necessary function calls to enable the examples to compile on the new DirectX 9.0. At least, I assume this to be the case, I was never able to get any of the examples to compile due to those hard-coded paths I mentioned and after fifteen minutes of browsing I gave up.

There is an extensive chapter on character animation that really stands separate from the rest of the book, so separate in fact that the style of writing and presentation is completely different. It’s obvious that Engel wrote this at a much later time as the coding style and listings are completely different. In most of the book Engel presents only small snippets of code that don’t really mesh together as a whole until you look on the CD-ROM, in the character animation chapter there is page after page of C++ source code with a brief code walk-through by the author.

The first chapters up until the character animation and high level shading section are really designed to be read one after the other as they introduce the concepts of Direct3D. The HLSL and character animation section felt like completely separate sections that have been bolted on.

There are so many complaints I can level at this book that it would take a longer review than this to list them all. If you’re interested in learning Direct3D and game programming, you’ll do well to avoid this book.

Read more about:


About the Author(s)

Justin Lloyd


Justin Lloyd has over 18 years of commercial game programming experience on almost every released platform.

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like