Windows Phone 7 for Flash Developers, Part 1

As I write this I am in possession of a Windows Phone 7 developer handset, the problem is I don't know quite what to do with it yet. I think WP7 seems like a well thought-out platform, hence my interest in developing for it, but as a completely new technology, it's hard to know exactly what the best strategy for app and game development is. Here are some random facts and thoughts about the platform. (Since I first posted this, Mike Ormond from Microsoft has emailed me with some more definitive answers, so I have updated the post to reflect this).
  • Let's get the bad news out of the way first: there is currently no support for 3rd party tools like Adobe AIR and Unity3D. Although Mike says "there will almost certainly be support for 3rd party tools" in the future, he couldn't give any specifics about what those might be, and as always with these things, it's impossible to know whose court the ball is in.
  • The phone's browser works well, but doesn't support either Flash or HTML5 content at present. This may well change, but nothing is confirmed or has been officially announced by Microsoft for either HTML5 or Flash. The lack of HTML5 support really surprised me, considering how enthusiastically Microsoft are supporting it with IE9.
  • Ok, now on to the good stuff. You can develop apps with Silverlight and games with XNA. You can only develop on Windows 7 or Vista (SP2), and in fact for the XNA emulator to work you need Windows 7 and a recently produced graphics card, so I can only test games on my device, not on the emulator. Installing the free developer tools takes about 2 hours - you get special versions of Visual Studio 2010 and Blend 4. Visual Studio is good, although 2010 uses WPF and doesn't feel as punchy as 2008 did on my machine. The auto-completion is great, although it doesn't have all the handy keyboard shortcuts I'm used to in Flashdevelop. Blend is a design tool similar to Flash Catalyst, but I haven't really played with it yet.
  • To release apps to the app store, you need to pay an annual fee of about £70/$100. This fee also allows you to release games on Xbox 360 indie games. Xbox shares 95% of the same XNA apis with WP7, so it would be relatively easy to make a game on one platform and port to the other - you would just need to account for input and screen size. I have paid my fee, so I will definitely release something for one of the two platforms this year. I've always wanted to do a console game, so I will probably try to do something that I can release on both.
  • Silverlight is a high-level, vector based scene-graph with standard components like buttons, menus etc, a bit like Flash + Flex. Silverlight could theoretically be used to make games as well as apps, although I don't know what the graphical performance would be like. If you make a game with Silverlight, you can still make it show up in the games section of the marketplace rather than with apps. The phone UI has nice, consistent styling and fonts, and by default your Silverlight apps match this styling automatically.
  • XNA is a fairly low-level game/graphics library which exposes hardware accelerated 3D rendering and 2D blitting. I've not benchmarked it yet, but it's really fast. XNA has no scene-graph or concept of a sprite, so if you are used to working this way in Flash, some things are going to take you a lot longer. See this post for what I think are the benefits of a scene-graph, but the main difference for me is not being able to create hierarchies of objects, for example a player object containing arm and leg objects that can be manipulated relative to the position of the player. I'm going to investigate some way of recreating this functionality myself.
  • The resolution is really high (800x480) on a pretty small screen, so if I want to use any of my pixel art characters from other games I will probably have to look at double-scaling everything. Otherwise, a 32x32 pixel character is only about 2mm on the screen. Mike tells me that a lower resolution device may be available in the future, but I'm not sure how existing apps would be scaled scaled down to fit a lower resolution, and I could potentially see that causing problems.
  • There are paid apps and free apps, just like iOS, although apparently you can only submit 5 free apps per year before you have to pay an additional fee - presumably this is to stop shovelware, so may not be a bad thing.
  • Like Apple with iAds, Microsoft are running there own advertising network. Currently this feature is only available in the US, although is set to come to other countries in early 2011. However, it ONLY supports Silverlight apps, not XNA, so isn't much use to me anyway. Mike confirms that it is unlikely XNA ads will ever be supported, although he points out that other networks are allowed, so if Admob want to add XNA/WP7 support, they can. Will they? Who knows.
  • Games have a 2-tier system where the big studios are able to have Xbox Live branding and support, such as achievements, and indie game are not. I understand why they have done this, but as an indie it does put you at a disadvantage to the big boys.
  • Paid apps support a trial mode, which I think is a really good thing for both users and developers. Users can try an app out before they buy it without the need for the developer to create a separate "lite" version. You just specify which features should work in trial mode or how long the trial should last. This does create a bit of a dilemma for a game developer though. Many Flash and iPhone games (e.g. Cannabalt) have a play time of just a few minutes. If you are able to get this full game experience from the trial mode, there is no incentive to buy the game. And with no ad network support at the moment, I don't see any way to monetize a short-form game. The way to make a profit would seem to be to make a long form game with a very engaging/adictive first few minutes as a trial mode.
  • In terms of fee-for-service work, the Silverlight side is likely to be dominated by existing .NET/Silverlight developers, of which there are many. I think it is unlikely that day-rates for Windows Phone 7 development will reach the enviably lucrative heights of iOS. As the market leader, iOS apps are in very high demand from paying clients. At the same time, the superficial strangeness of Objective-C and requirement to use a Mac reduces the developer base and greatly limits supply. This creates a perfect storm of high developer costs that I doubt we'll see in the more abundant world of .NET developers, on a new platform with many fewer potential customers. Gamedev, of course, is really a quite a different set of skills, which many Flash developers have in abundance, so if a market did emerge for branded games, this could be a good area for Flash developers to look into.
Taking all this into account, I think the opportunity for Flash developers who want to branch out into the WP7 space will be to bring their creative and gamedev skills to the paid games market, but it would have to be with long-form/multi-level games like Angry Birds, Trainyard, Warlords etc. And coming up with killer game ideas like those, while implementing on a brand new system, isn't going to be easy. Windows Phone 7 seems like a decent phone platform with good developer support. Like with any platform though, the killer idea needs to come from you, and for now, I'm still trying to think of mine.

In part 2 of the series I will be testing rendering performance by porting BunnyMark to Silverlight and XNA!


Burak KALAYCI said…
IMHO for Flash developers, it's all bad news. How is no Flash suport and only Silverlight support a good news for Flash devs?

And Part 2 is about porting to Silverlight? Is this what you think Flash devs should be doing? I think you are very wrong.
Matthew Fabb said…
"Also, the phone's browser works well, but doesn't support either Flash or HTML5 content at present. This may change, but nothing is confirmed."
I don't know about HTML5 support, but both Microsoft & Adobe have confirmed that WP7 will support Flash Player 10.1 in the future, likely early 2011.
Here's one quote with Adobe quote Microsoft that I was able to find quickly, but there's others out there:
Matthew Fabb said…
Also just a quick point, that many often miss or get confused, especially Flash devs who aren't on top of what Microsoft is doing. There's no Silverlight plugin support for WP7. It seems Silverlight mobile plugin is pretty much dead right now. For WP7 you are creating a native app based on Silverlight, but can't view Silverlight content through the browser.
Iain said…
@Burak - I think you are taking away the wrong message entirely - I'm certainly not advocating learning a new platform if you don't want to. Flash is still doing great, so it's entirely up to you whether to use only Flash or try other things.

When I talk about Flash developers I'm really just talking about interactive developers, who currently work with Flash. I would very much consider myself to be a Flash developer, but that doesn't mean I can't also use other technologies where appropriate. Many Flash devs I know are doing great things with Android, iPhone and HTML5 while still maintaining Flash as their core tool.
Eric Smith said…
I tried whipping out something on WP7 this weekend, but was blocked by the emulator's slowness.

You mentioned that one needs a new graphics card if you're running Windows 7. I'm on a 2008 MBP running Windows 7 Home Premium, and this is not fast enough.

This makes the cost of entry too high for me (a new PC or $200 to upgrade Windows to "Professional" so that I can install the "Virtual PC" software.

Anonymous said…
This comment has been removed by a blog administrator.
Iain said…
@phil - you couldn't be more wrong! I'm just giving an honest opinion of a new technology. I don't have to take abuse on my own blog so I have deleted your post, sorry dude.
Unknown said…
Hi Iain,

I work on the WP7 team, I've read your blog for ages and I'm glad you've got a WP7 phone in your hands. My secret wish is for you to do your zany BBC 3d tower defense for WP7! So short, but so awesome!

Yes - you can write games in Silverlight - Unite is an example of a game written in Silverlight. However, generally, XNA makes more sense for games since it is very focussed on that scenario. If you had a game with a lot of UI then Silverlight could be a better choice.

In XNA, you can use the hardware scalar - so choose the resolution you want to work in and let the hardware scalar in the Qualcomm 8x50 chipset do the scaling work for you.

The WP7 XBL folks are always on the lookout for cool indie developers to work with. YMMV but it's a possibility. Write some cool games and see how they open the doors for you :)

Looking forward to the bunnymark port!