This review is on the book 'Professional Windows Phone 7 Game Development: Creating Games using XNA Game Studio 4', and has been submitted by a member of the Windows Phone 7 User Group - a user group supported by SilverlightShow.
We support user groups with books, swag, events promotion, free event passes and others. Contact us to get support for your user group.
Introduction
Writing a book for XNA on Windows Phone 7 (WP7) is challenging proposition, not because it is a difficult subject but because of the varied audiences. The opening chapter of ‘Professional Windows Phone 7 Game Development – Creating Games Using XNA Game Studio-4 (Wrox – Chris G.Williams, George W.Clingerman)’ explains who the book is pitched at; XNA developers who want to take advantage of a WP7 mobile platform, iOS/Android developers who want to add WP7 to their channels, and the .net developer who is a mild mannered business pro by day but wants to flex those gamer muscles by night. So is it possible to write a book to satisfy such a range of skills?
Topics by example
The opening chapters give a quick but good account of the WP7 platform and the developer tools you will be using. Once past the ‘Getting Started’ chapters you start getting into the WP7 technologies. When the book introduces a new technology/topic, such as Orientation or the Accelerometer, it does so by taking the reader through a small XNA project. The style works well; you end up with a number of projects each concentrating on a specific subject. This avoids some of the pitfalls of having too many new features and not knowing which one is wrong when the application crashes (perhaps that’s just me). It is also clear that the authors have tried to write the code samples to provide reusable utilities, not only for other WP7 applications but also with one eye on porting to other XNA platforms such as the Xbox. The obvious example of this is for input. You’ll learn about touch specific gestures (touch is not only on the phone) and that WP7 only has one XNA controller. However, rather than show samples dealing with just the one controller it includes code to handle multiple controllers (players). You could argue that’s confusing but I like that it reminds you to design for different channels and for potential future enhancements to WP7.
XNA or Windows Phone?
As you would expect from such a book the subjects covered vary from those focusing on XNA (such as game loops, controllers, handling screen/state transitions, etc) to those more aligned with WP7 (accelerometer, vibrate, handling calls, state management, etc). Some topics, such as background music or the back button, have their own very specific XNA & Phone flavours to them and the book does particularly well in making sure you are aware of the certification issues and pitfalls around those subjects.
3D World
Previously when reading “learn gaming” books they tend to start with 2d as a basic course and then keep 3d for the advanced. The authors have decided that they can unleash 3d onto you. I think that given XNA is more 3d oriented this makes sense. However, it does present a problem; the book has to introduce 3d modelling tools. It does a good job at helping you dip your toe in the water with ‘Blender’ but do not expect in depth tutorials, it’s left up to you to grapple with the complex 3d modeller of your choice.
Once you have your models you are shown how to animate and transform them. I found this section to be a little light on content but since it is a big subject the book does direct you to the samples from Microsoft rather than simply regurgitate what you can get for free.
A Connected World
Today’s gaming world often involves the internet. Although WP7 does not yet have the peer-to-peer connections for what most people would consider a true network game, the book takes a couple of chapters to introduce how you might exploit its networking capabilities. This is split into two main camps; notifications you can provide/receive on the phone and consuming web services via WCF/REST. The book uses the examples of a high-score and a game match-making service for the tutorials. This area represents a real problem for the authors. Pitch this too low and risk really boring the .net developer, too high and you’ll lose new-comers to web services. I feel it was a little too low and I confess that I became bored quite quickly, but it is a good introduction to web services so it just depends on the reader’s needs.
More Phone
The remainder of the book focuses on WP7 features that really do not have a great deal of interest to the gamer. I feel a bit harsh writing that since the chapters culminate on a jigsaw picture puzzle utilising the picture chooser/camera. So sure you can use all the features to create some creative games but for me this was an interesting aside rather than “real” game development.
Can I write a game?
Having a book that talks about phone and XNA technologies is all well and good, but the real question is, “does it help me write a game?” It seems to me that the authors were stuck with a dilemma. Do they show small samples to help you understand a specific technology or do they introduce a sample game and take you along for the ride by slowly implementing it? As already mentioned they opted for the small samples but eventually, about half-way through the book, you are rewarded by implementing a full game, ‘Drive & Dodge’. It’s a simple game and uses all the techniques and technologies prior to the introduction of 3d. The second sample, ‘Poker Dice with Friends’ utilises the web services and 3d techniques. I don’t think anyone would expect to immediately be writing the next Halo but at what can you expect? The criteria I use to judge the level of a gaming book includes; collision detection, animated sprites and how to increase the speed/complexity of a game. These areas are covered but only at a basic level. You will certainly have enough skills to move assets around a screen, run a 3d animation and detect collisions by simple bounding areas. You are shown how to adjust movement based on elapsed time. However, I want to write more compelling games where I need much better collision detection than a bounding square. I want to animate Sonic as he jumps and spins. I want the on-coming obstacles on the road to hit my car rather than leap-frog past them because of the displacement due to speed and elapsed time.
Recommendation
I believe that the book should really be entitled, ‘Introducing XNA Windows Phone Development’. As an introduction it is good and provides you with a set of useful classes. However there is room for improvement. I would like to see it explain how to add a texture to a project. The downloadable solutions should be updated to the current version of XNA – can you tell I wasted time on that? Also much of the code is repeated and it does start to resemble a code typing marathon from a late 80s computer magazine. But these are not big problems and I would happily recommend this book for those gaming newbies – so those .net business pro’s should read this, although speed read the web services. Those with previous game writing experience will learn about WP7 touch and other subjects specific to the phone, so there is certainly something for you.
Overall it’s a good book; if you’re new to game development then consider it an introduction, if you do not know WP7 then it will plug a lot of gaps for you.