Our Free WP7 game Air Soccer was very well received with 13000 downloads, 1000000 ad impressions and $400 in ad revenue in 2 months, well… not so well on the revenue part :). We just released a brand new game Air Soccer Tour Air Soccer Tour – WP7 Game released
We shared with you the development story of Air Soccer here “Development of Air Soccer – What did we use and learn!”
As mentioned in that article, Air Soccer was developed using Silverlight + XNA mixed mode, For Air Soccer Tour we completely switched to pure XNA. That doesnt mean Silverlight + XNA is a bad choice, however the main reason why we moved to pure XNA is that the Microsoft Ad Control (Silverlight) is not officially supported in mixed SL+XNA mode. So the game would crash intermittently due to the Ad control with no trace of teh reason to be found …
A major update was in the works anyways to accomodate tournament mode and many enhancements users had ben asking for, and so we took that opportunity to revamp the game in pure XNA.
Besides the SL+XNA part, the previous article is still valid and will hopefully help the developers in their projects… but now with XNA, we have some more cool stuff to share with you guys.
First of all, there are no pages in XNA and so there is no back/forward page stack that comes for free with Silverlight 🙂 . On top of that there are no built in UI controls .. so you would need a mini page/screen framework with state management and visual transitions and a bunch of UI controls (buttons, labels, menus ) etc to replicate basic Silverlight features.
It looked like a very daunting task but had to be done none the less.
With those requirements in mind, we started our search for existing libraries and tools that would help.. and finally reached the best resource there is : WP7-XNA Education Catalog
The brilliant folks at MS have already provided so much guidance that I wondered why I dint check the provided samples earlier.
The Game State Management sample is a great place to start with for a mini screen farmework and game state management. It allows for creation, activation and deactivation of the screens/pages in the Game UI and as if that in itself wasnt a life saver, it also gives us “serialization” of the active screens for free for tombstoning purposes.
The sample does provide some basic button and menu functionality but thats not the main focus of the sample.. and we have another excellent resource for that 🙂
The UI Controls sample is AWESOME 🙂 it provides a base control class and several neat controls to build upon. Panel control class to build control hierarchy, Text, Image, Button, Scrollable Panel etc I did create few additional controls but really it was a breeze when I completely understood the sample.
It did take some work to combine the two samples and refactor some stuff so everything fell into place – where I needed it.
For screen transitions, the game state sample provides basic Fadein-Fadeout feature, I had to tweak the ScreenManager and GameScreen class a little bit to add “Slide-in / Slide-out” and “Zoom-in, Zoom-out” transition.
All in all it was a pleasant experience and now that everything is XNA, the performance was better – smooth and slick UI – no issues with List scrolling, load/unload content for each page on transitions etc and teh result is :
So go out there and start developing … leave a comment if any further guidance is needed!