WP8 SDK Silverlight Alive!……XNA Dead……Native XAML gone missing!

I suppose you guys have heard that the windows phone 8 SDK has leaked. Well I decided to download the bits and have a quick look around. This post is really just summary of some interesting observations I made. If you want to download the bits yourself you will have to hunt around. I found it on on a torrent site and had good seeding.

Where is the winRT support?

One of the first things I did once I had installed the SDK was to run up Visual Studio 2012 and see what projects types were available. What caught my eye was the fact that there appears to be no “Metro style” or “WinRT” project templates installed. The naming of the projects is pretty much the same as the 7.5 SDK. I’m sure that’s a good thing as you don’t want to confuse people right? Below is a screenshot of the project picker.

You can see I have highlighted a new project type which never used to exist in the 7.5 SDK. I’ll come back to that shortly. As winRT tech does not seem to be obviously visible in the project list it seems I will have to dig a little deeper. Lets see if creating a standard “Windows Phone Application” will provide more detail as to what’s going on in this new release.

new apps for WP8 wont be running on winRT aka native xaml but instead managed xaml

Well that’s a turn up for the books. From what I can tell these new apps for WP8 wont be running on winRT aka native xaml but instead managed XAML. To me that looks like standard CLR namespaces being imported and therefore is managed code. Also it seems I have classes that aren’t available in winRT such as RadialGradientBrush. Digging out jetbrains dotpeek proves exactly that, the whole runtime is silverlight.

This raises a couple of questions, firstly why did Microsoft put so much effort into creating native XAML and then not adopt it for WP8? Secondly what does this mean for developers wishing to develop across 3 screens?

The first question I think is easily answered, it is likely to be timing issue. With the monumental effort to get Windows 8 ready for its October release there probably hasn’t been time to migrate the winRT tech & tooling to WP8. Further, developers who have already created apps on the platform do not want to have to rewrite them for winRT. Especially as winRT is equivalent to Silverlight 2.0 at the mo and would lead alot of gaps.

If you’re a html5 developer building apps for winRT and you want to port them to WP8, well you are royally screwed at the moment

The second question is difficult. It seems the one dev platform for all screens is not here yet. Although porting code is possible it’s not going to be smooth given the current situation. If you’re a html5 developer building apps for winRT and you want to port them to WP8, well you are royally screwed at the moment.

One last point on this, it seems C++ devs get a raw deal as they wont be able to leverage XAML on WP8. Well not until winRT arrives. From what we have heard from Microsoft, the key deliverable for this release was about providing native code access. This is so that all those game developers who need to extract every cycle of performance out of platform can do so. It will be good to see popular games from iOS transitioning quicker to WP8. But that leads to the next topic….

What’s the deal with XNA?

Well I think with WP8 SDK I think you can official say goodbye to XNA.

One of the other big questions hanging over the the future of WP8 was what’s happening to XNA. Well I think with WP8 SDK I think you can official say goodbye to XNA. In this new SDK you only seem to be able to create XNA games that target WP7.1. If you want to use XNA in WP8 then it seems you are out of luck.

But the story gets a little worse than that, if you remember in my screenshot above I highlighted a new project type called “Windows Phone Direct3D XAML Application”. Well the good news is that this project can target WP8, however on creating one of these projects your actually going to be developing your game in C++. The project is set up with a simple c# xaml app with a DirectX drawing surface, then all your access to DirectX must be written in native code. I can’t see XNA coming back from this personally but hey, you never know. Microsoft are anything from consistent these days.

All in all this leak is a bit of mixed bag, while the WP8 platform looks to be getting some cool new features the dev story is a mixed one. A few bullet points below for the guys that don’t want to read my waffle above.

The XNA version of Microsoft is really dead but don\’t forget that the MonoGame team have done a great work on Windows 8 port and you can now create games for WIndows 8 Metro and in future on WIndows Phone 8, using XNA syntax.
For now it\’s not perfect as the original Framework but it\’s run great (with DirectX 11).
see : monogame.codeplex.com/
of my french tutorial for setting up a project for Win8 Metro : http://www.demonixis.net/blog/creer-un-projet-monogame-pour-windows-8-metro/

Avalon had a small render core (that AGCore.dll) and a huge managed framework around it. Almost everything related to visual trees and such happened in managed code.

WinRT is a complete new implementation in native code. It’s all COM objects with more sugar around it (via C++/CX) to improve interop with .NET and JavaScript. It has nothing to do with WPF/Avalon.

Silverlight is a reimplementation of the managed side. It may use AGCore.dll, but it has squat to do with WinRT, or vice versa.

I had the WP8 emulator installed and all, and toyed around with a little. I found to this post via Ars Technica, and it made me dig a little using Reflector and an hex editor. It’s still all Silverlight for managed apps and UIX for native ones (i.e. the system apps/UI).

Unless there’s a big surprise soon during the official reveal, WP8 is simply WP7.5 with minor improvements and a different kernel. Personally, as a former WP7 developer, I’m disappointed as fuck. Silverlight is a neglected and dying platform, the plans and existence of WinRT were known internally long before WP7 devices hit the market. And WP8 still only delivers warmed up sauce. Well, DX11 games maybe, but mobile gaming is overhyped. No thanks. Maybe in another year or two.

This is TERRIBLE! C++ does not own 3D! C# developers want to develop in 3D! I want my XBLIG games (written in XNA) to just work on WP8 and Win8 without having to rewrite them in C++. In fact, I will not rewrite them in C++. They run just fine on 1st generation WP7 hardware. What would rewriting them in C++ possibly buy me except adding a bunch of memory leaks?

MS really needs to improve their communcation on this. The whole WinRT, WP8, XNA, Silverlight, HTML5 story is so muddy and confusing that nobody knows what the heck is going on. I hope they clarify everything at the upcoming BUILD conference.

All the new functionality is implemented in WinRT-style, as in functionality implemented natively, then declared in WinMD files for use in managed languages. Other functionality, like for instance sockets or geolocation, are present in both Silverlight and WinRT (or what’s left of it).

And I can use both variants of functionality without issue, it seems.

Furthermore, the C++ component of a Direct3D game is written in C++/CX as WinRT component. Yet, I can’t create one natively.

[…] We don’t have yet the level of compatibility between the runtime found on Windows and the one on Windows Phone. From the SDK leaked last week it seems only XAML and native code is supported but even the XAML seems to be more the one from the Windows Phone (managed) that the native flavor of Windows 8. […]