A View from Christopher Mims
Windows Phone's Secret Weapon: Easier App Making
Developers say iOS is easier to code for than Android, but Windows Phone may be the most developer-friendly platform of them all.
There is a non-zero chance that Windows Phone will eat the mobile market. Sure, it would require some major unforced errors on the part of Apple, but the fact that this is even in the realm of all possible things is notable.
The reasons are straightforward. First, the first Windows Phone handsets appear to be a “better than good enough” option for smart phone users. Given Microsoft’s existing market penetration, that could easily mean rapid growth in the market for these handsets.
But here’s the one you probably haven’t heard of: It turns out that when you’re making cutting-edge apps using the tools offered by Microsoft and Apple, Microsoft comes out ahead – way ahead.
Or so says Mike Dussault, one of the programmers behind the hit iOS app Morfo, and formerly a developer at Valve, where he worked on everything from Half Life 2 to Portal. Dussault cautioned in an email that this is only true for programmers who are “directly using the toolset put out by Apple and Microsoft (XCode and Objective-C vs Microsoft Visual Studio and C#).”
But for developers like Dussault, whose background is in building the 3D engines that power today’s first person shooters, there simply isn’t any substitute for getting as close to the platform as possible. This should be true of any game that hopes to push the capabilities of newer phones or needs to be optimized for older models. (Morfo’s 3D face-warping technology being a perfect example of this.)
Here’s Dussault’s complete rundown of why he prefers to develop using Microsoft’s toolchain first, and then port it to iOS. (Which is no small task – he told me it took him as long to port Morfo to iOS as it took him to build it for Windows Phone.)
Advantages that I see in Microsoft’s stuff vs Apple’s:
•WP7 uses C#, and C# compiles practically instantly, making for more rapid iteration times. Objective-C and C++ compile very slowly by comparison.
•Visual Studio’s debugger is unmatched in performance, features, and stability. XCode’s is an unstable, slow thing built on top of the arcane gdb.
•WP7 games are based on a framework called XNA that Microsoft includes. XNA takes care of a lot of the low-level headaches of graphics, audio, and input processing. On iOS, you have to write a bunch of (relatively) low-level code to get anything working.
•IME, WP7 required a lot less optimization to get things running quickly. As an example, text rendering performance was a complete nonissue for Morfo under WP7, but on iOS I had to write a lot of custom code to cache the rendered strings in OpenGL textures just to get the performance to match.
•The way iOS handles API versioning is really dangerous. Many functions throughout their SDK can just crash the program because they don’t exist on older OS versions. You have to check which functions you do have available, and it’s very easy to have things test fine on all the devices you have, then you ship and users out there with OS versions you didn’t have get crashes.
Of course, Microsoft’s developer-friendliness didn’t save Windows tablets when Redmond tried to introduce the iPad form factor long before the iPad existed, and it’s no guarantee that Windows Phone will flourish, either. There are still only 1 percent as many apps for Windows Phone as for iOS, and developers report working all-out just to keep up with Apple’s platform. But it’s early days yet, and if the handset makers Microsoft is partnering with can create handsets that people want, the developers will follow.