Most helpful critical review
Outdated Technology Poorly Explained
on May 13, 2003
I am actually quite surprised by the large number of positive reviews for this book. It is actually a poor choice for learning DirectX.
First, it is worth pointing out that this is an introduction to an older version of DirectX that is no longer being developed by Microsoft. For those who don't know, DirectX is a package of inter-related programs that allow the game programmer to directly access a computer's video monitor, sound card, etc. DirectX has been developed constantly since it was first released back in the 90s. As of this writing (May, 2003), we are now up to DirectX 9, which is *very* different from the version described (poorly) in this book.
That actually isn't a bad thing, as long as you know it up front. DirectX 7.0 (which is what this book is really about, not 8) used something called Direct Draw for graphics, which is a lot easier to learn than the newer 3D technology that DirectX 8 and 9 emphasized. Direct Draw is no longer being developed, but it is still around for backward compatibility, and is a good place to start for beginners.
Unfortunately, the author does a poor job teaching it. First, as the author makes clear in the book, but may be less obvious to an online buyer not sitting in a bookstore flipping through the pages, you *absolutely* must know C++ and (preferably) have a copy of Microsoft's Visual C++. This is fairly standard stuff, but beginners need to know they should learn C++ first. Plus, you really should learn at least the bare essentials of Windows programming, which you can pick up from a few places - including one of the "Dummies" books, if nothing else.
True beginners may want to start with simpler packages based on the Basic language that integrate DirectX behind the scenes. Check out Blitz Basic or Dark Basic, both of which are much easier to learn than C++ and DirectX, and may be all you need. If you want to become a professional, however, C++/DirectX is the way to go, but even then these other programmers can help you learn the basic concepts in an easy/newbie friendly environment.
Once you know the basics of C++, BEFORE you buy this book, you should download the DirectX 7 (not 8 or 9) Software Development Kit from Microsoft's web site. Go straight to the help files and read them thoroughly (or at least the Direct Draw stuff), and load and run the sample programs. You should also read some very good tutorials at the GameDev web site, particularly the series of articles by Joseph Farrell called "Game Programming Genesis." All of this (the SDK and GameDev articles) are absolutely free. You should also be able to find a used, out-of-print version of Microsoft's own "Inside DirectX", which is much better than this one.
Only then, if you are still confused should you even think about buying this book. The book itself, however, has many flaws in my opinion, including:
- little or no discussion of basic Windows GDI programming. Simple stuff like drawing text, lines, boxes -- all come in handy in DirectX.
- discussion/use of only parts of Direct Draw, with little no discussion of the stuff he leaves out.
- little or no discussion of Direct Input, which provides fast access to the mouse and the keyboard.
- the game he makes uses 8 bit graphics and palettes, an older technology that is harder for newbies to learn.
- over-reliance on C++ classes and object-oriented programming. Yeah, I know some people love this stuff, but most programmers like creating their *own* classes, not trying to figure out or adapt someone else's. In most cases, the ideas he tries to get across could be done more simply.
- a whole chapter on "AI" that really only discusses the simple AI he decided to include in his game, and says little or nothing about AI more broadly (including pathfinding and all sorts of other game related stuff). There are whole book on this sort of thing, but a few pages that at least introduce them would be worthwhile in a beginners book.
All in all, if you want a lengthy, somewhat confusing book about how to make a particular game, with little or no discussion of C++, Windows programming, or DirectX as a whole (beyond the parts he uses), this is a worthwhile buy -- but only after you check out the other stuff I mentioned first.