3D Game Engine Design Using DirectX9 and C# 
Buy it at Amazon
Read a Sample Chapter From The Publisher
Author Lynn Thomas Harrison
Publisher APress
Length 304 pages
vbRad Rating: 3 fingers up. (3 out of 5)
Reviewed by Robert Gelb

This is a serious gaming programming book. Meek need not apply. Get one thing through your head: THIS IS NOT A DirectX9 TUTORIAL. This book is an intro to GAME ENGINE DESIGN. If you are looking for a tutorial to DirectX or writing simpler games in general, I'd check out Learn VB .NET Through Game Programming by Matthew Tagliaferri or better yet .NET Game Programming with DirectX 9.0 by Alexandre Santos Lobao and Ellen Hatton.

BTW, if you already purchased the book and the downloadable code didn't work, you might want to check out the download site again: they've updated the code and it now works. This is something that should have been taken care of from the get go. It drove me nuts - I was thinking that there was something wrong with my vs.net 2003 setup. Anyway, all is good now. Also before you go screaming at the author, you might want to check out Jonathan Steed from Microsoft apologizing for their screwup.

The book goes through several aspects of game design. First you'll get an overview and an intro. That means how to handle your joysticks, mice, basic screens, options, etc… Then a writeup on how to build 3D models followed by an actual simple and complex model with full source code, of course. Along the way you get tutorials on how to shade this and transform that and make that blend with this.

Player's View of the World provides a cool camera class which for instance is used all the time in racing games. Camera class is just that - a camera affixed on an object and it renders the view as seen from that position.

Chapter 7 provides some insight into ambient (artificial) lighting. It allows you to provide effects like fog or too much sun, etc… Next chapter delves into AI. The author briefly goes into various ways to provide AI and then proceeds to build a real artificial intelligence set of classes. It is quite involved.

Harrison provides a good writeup on audio, including a great piece of doing sounds in 3D (or simulating it). One of the largest chapters in the book is devoted to game physics, aptly named "Keeping it real". If you want to learn about, you'll have to really put your head down and make sure you get every little piece of code. It is, no doubt, pretty complicated stuff.

The book concludes with a littany of tools that every game developer should have in the trickbox.

I have several criticisms of the book.

Number one, the author should have stated on the first page in the first paragraph what software will be needed in order work with managed DirectX 9. If a developer is not familiar with DX9, he/she won't know to download the Managed DirectX SDK.

Number two, the book has a fair amount of pictures and images, but it needs more. For a graphics game book and an apress book in particular, it is a must for several reasons. It is good to know what I am working towards. In many chapters there are very few images. Secondly, Apress books in particular have a lot of images which creates natural feedback in readers. Apress has chosen the wrong book to veer from this approach.

Number three, the code needs to be much better commented. I understand that this is a very complicated topic and for a casual game developer such as myself, just about every line would need to be commented for me to easily get into this. To be fair to the author, most of the code is pretty well commented. However, there were a few snippets where the code caused me to have a brainfart and there were no comments or explanations in sight. Chapter on game physics, in particular, could have used a lot more comments.



Want more reviews and sample chapters? Click here.