This well-written book covers the basics of game programming. The subtitle is a bit ambitious because even mastery of this content will not be sufficient to become a professional.
Commercial games often have large budgets and many developers. While game programming often employs C++, Microsoft based the XNA Game Studio on C# to enable hobbyists and students to produce two-dimensional (2D) or three-dimensional (3D) games, both for Windows and the Xbox 360. The XNA framework hides DirectX, providing .NET libraries for graphics and vector mathematics.
The introductory chapter covers the basic game structure provided by the XNA framework. The next five chapters do a good job of covering 2D game programming. The example game, Rock Rain, nicely illustrates 2D games. Xbox 360 deployment is briefly discussed, and the Xbox 360 controller or the keyboard can be used for the Windows version. A long chapter 4 describes enhancements to the game. Chapter 5 introduces game networking, while the next chapter makes Rock Rain a network game.
The next six chapters cover 3D game concepts, leading to the creation of a third-person shooter game in chapter 12. These chapters cover the concepts at the right level, but could be better coordinated with examples. Chapter 7, on 3D game programming basics, uses coordinate axes to illustrate lines and polygons and a cube to illustrate a model. It would be more interesting to draw a cube from vertices and find a more complex model. The example in chapter 9, on lights and cameras, does nothing for the reader. The code for lights and cameras is included, so it would have been easy to add a cube as a simple illustration.
Chapter 10, on terrain, is very nicely done, with an example that is used later in the game. The material in chapter 11 enhances the animation capability of XNA. Chapter 12 develops a third-person shooter game that brings together everything covered so far. It could be tweaked a bit to make the game more playable, but it provides a good basis for readers who want to develop their own games, as is suggested in the final chapter.
This book covers the recently released version 2.0, but there is already a version 3.0 in preview. Readers with background in C++ or Java will be able to pick up C# fairly easily. Less experienced programmers might need to learn some C# when starting XNA, because reading the source code is really helpful. To avoid the 209 MB download for the source code, it would have been nice to have a CD included with the book.
This book is well suited for self-study or for use in a game programming course. The newer version of XNA will make adding sound simpler and enable game development for the Zune platform; the examples given here will be easily adaptable.