Note: I received a copy of this book to review from pearsoned.com
[[posterous-content:njwiksBFjcpmvJFAzxid]] XNA is Microsoft unified gaming development platform for Windows and XBOX 360. It was released in December 2006 and finally allowed hobbyist developers to program games using c# on the Xbox 360. The book is aimed at getting people started on the XNA by showing them the basic concepts of
It took me a little while to read this book, only because I was busy all the time and never got around to reading it. However, I sat down one evening an went through the whole book.
From the outset this book focuses on teaching you to at least think about the performance of your application (there is a whole chapter, most of which seemed to be taken up by pointless code). To be honest it annoyed me a little bit when I was reading it. However, it does prove a point and it stuck with me for the rest of the book.
I am a big fan of componentisation when it comes to programming (which is one of the key concepts of the XNA), I was expecting this book not to cover any of this. Luckily, this book is strong in this area, not the for precise details of the API strong, but for pointing out the benefits and sticking to the idea of Game Components and Services. There are several components that would-be game developers could copy straight from the book and use in their own games.
The whole book is at a sufficiently high level for nearly any level of programmer to get started using the XNA with.
Before I got this book I was expecting it just to be about the graphics side of the XNA, however I was pleasantly surprised that it is really about how to make a complete game using the XNA. Which is a good thing really, because like myself (and acknowledged at the start of the book) many people who get it to programming, it is because they see a game and wonder how it works.
I remember my father trying to get me into programming as a child and I never really understood it nor was I interested by it. It wasn't until I played Street Fighter II in an arcade on the River Dee in Chester that I had an epiphany, I worked out what programming meant and how the movements on the Joystick translated to Ryu on the screen throwing fireballs
The quantity of pictures in this book describing the output is minute, I would have loved to see more pictures when describing the 2d blending effects and the HLSL examples. The quality of the pictures are very poor too, at a minimum they should have been in colour.
There are several non-graphics related chapters: Physics and AI for example. I expected to not like the physics chapter, however, it is short, too the point and gets everything across that you would need to create basic kinetic effects in your games. I really liked it; The AI chapter was too short and only really describes how to follow a game character, this should have been removed or extended because as it stands I thought it was one of the books weakest sections.
Overall, I quite enjoyed the book. I was fairly proficient with the 2d programming aspects of the XNA and the coverage was quite good, it even covered a parallax engine which suspiciously looked like my Codeplex XNA project :)
I really liked his vertex shader and pixel shader introductions and his overview of HLSL (this was one of my weaker areas), however, that is all they are introductions they served me well but a whole book could be devoted to that area.
The structure of this book is quite good too, it starts off simple and gets progressively more advanced. I believe that the structure of the XNA requires you to know about a lot of little things at the same time (the learning curve isn't linear, it is parallel) and when I was reading this book I was coming from knowing a little about the XNA already and I was questioning the author (in my head) "how is he going to explain this concept without X, Y and Z first. Luckily it is handled quite well, with enough information to get the reader by with having to understand too much, then later in the book that X, Y and Z concept is explained in more detail (most of the time :))
I believe, that if the XNA existed when I started programming (about 14 years ago) and I would have found this book to it would have been a great help to get me gently in to games programming. Therefore, I would recommend this book for anyone who has c# experience and wants to start using the XNA to make some cool games. I would not recommend it to people who have no experience using c#, or are already strong at graphics programming. If you have used either Managed DirectX or Direct X I think you would get more benefit from the help file that comes with the XNA.
The timing of this book is a little off, unfortunately Microsoft have just released v2 of the XNA which could make some of this book redundant (for instance, the first chapter is about requiring Visual Studio Express). However, I have not delved into it yet (Chad: Is v2 of Microsoft XNA Unleashed on the horizon? I look forward to it).
Let me know what you thought of the book!