5 Reasons I’m Excited to Develop Games for the Windows Phone

Microsoft's Windows Phone 7

1. Write games using C#

I don’t want to start any fiery debates about programming languages, as clearly many languages can get the job done when it comes to game development. That being said, after making games in many languages I hold a special place for C#. The language is strongly typed, which in my opinion helps catch certain kinds of errors and makes for more readable code. Even better, the language has seen a number of improvements over the years. Some stand outs include support for weak types, LINQ expressions, and lamba functions. As a result, I am more productive in this language than any of the alternatives.

2. Taking advantage of the XNA framework

XNA is a framework developed by Microsoft to accelerate game development. Like the Slick game engine, XNA is a glue framework. This means I can take the parts I want and leave the rest letting me code in my own style. It’s true that I sometimes find things missing, but more often than not there’s a code sample on MSDN to help fill the gap. Overall, I’ve found XNA to be a solid foundation to get a game up and running.

3. Target the Windows Phone, PC, Xbox, and the Web

Obviously I want people to play my games. So oftentimes the size of the audience is more important than the technical aspects of a given platform. In this case I feel like I can have my cake and eat it as it’s possible to target a large number of platforms with XNA. Microsoft supports running games written in XNA on the phone, PC, and Xbox and if you take advantage of the open source Silversprite library it’s also possible to target the web through Silverlight. With all of that said, I still think there’s an important space left for Flash to fill.

4. Release on the iPhone and Android

Today, Novell ships a product named MonoTouch which allows developers to create C# applications for the iPhone. Combine it with the XNA Touch library available on CodePlex and you can deploy your XNA based games on Apple’s platform. Novell is currently working on a similar library for Android called MonoDroid. I plan to try MonoTouch soon. If it all goes according to plan I believe C# will be able to target every mobile platform!

5. Great tools and documentation

Finally, I’d like to talk about the developer experience for the Windows Phone. First and foremost there is Visual Studio. As these things go I think Visual Studio is a pretty solid IDE. That being said, I have found it lacking in certain regards which is why I also use the ReSharper plug-in. Taken together, I find that writing code in C# is much faster and easier than anything I’ve found for Actionscript or Java. These two tools provide an amazing array of code completion and refactoring tools. In addition, there is great support for tasks such as unit testing, profiling, and static code analysis. Backing all of this is a wealth of documentation both from MSDN and the larger web.

Conclusion

I’m not going to try to lie or whitewash things, developing for the Windows Phone is certainly a gamble. That said, in my limited experience I’ve found that when it comes time to release a game and break through in the marketplace there’s always a high degree of luck involved. With that said, I’m excited to try my hand on this exciting new platform. I hope you’ll join me as I continue this experiment!

Petunk: a charming new putt putt game

Petunk is a simple pick up and play physics puzzler. Featuring putt putt golf-like game mechanics, Petunk challenges the player to hone his skill at aiming, shooting, and timing his shots at the target. Featuring hand crafted artwork wrought from real world materials and brought to life on screen, play Petunk today!

Adopting a Component Model for Game Development

For Colorfull one of my goals was to explore the component design pattern for game architecture. For those of you who are unfamiliar with the pattern it goes something like this:

Instead of using inheritance to add new types of behavior to game objects, the component model seeks to extend a game object’s behavior by adding or removing components. Thus, if you want objects to be affected by gravity you might add the GravityComponent.

In this model every object in the game is an instance of the same type. What components are used to construct an entity is what distinguishes, say, the player from a NPC.

Read More

August is over: time for show & tell

It’s September already, so it’s time to pony up and show you what I’ve been working on. To be frank, this month’s game, Colorfull, hasn’t turned out as pretty as Petunk. The biggest culprit by far was Starcraft 2. That game is great. (P.S. send me an invite if you want to play, I’m on the US servers as Asterix.) At any rate, I am happy to say that Matthias and I accomplished our main goals. Now we have to decide whether to let the game die or put more time into it. At any rate, let’s have a quick post-mortem to review the month. At the end I’ll even link you to a Silverlight version of the game I cooked up! Read More

It’s August, time for a new game

Hello everyone, I hope that things are going well. We’re well into August now and it’s high time I share a little bit about my current project.

Color Wheels

Once again, I’m trying to complete a game in a month. In July I created Petunk. One goal with that project was simply to prove I could make something decent in the timeframe. This time around I have a couple goals in mind:

  1. Explore a component model design
  2. Create more tests for each component of the game

    Read More