Why I'm Not Worried About XNA

Wednesday 14 September 2011 at 8:54 pm

So with BUILD going on currently showing Windows 8 stuff, there's a lot of exciting things. But an interesting upset has been going around the Twitters over one particular thing: XNA. Starting from a list of the available APIs and culminating with Q&A during the DirectX session, there seems to be a big worry that XNA is now dead. Here's the thing: I don't believe a word of it.

All that we know from the information presented is just that its not in the API's. The thing is, this BUILD is all about showing off new things, and XNA's not that new, being now on its 4th release and available on 3 different devices, as well as bits of it going to be appearing in the upcoming Silverlight 5. All that the information gives us is that there's no XNA built into the new OS. And frankly, that wouldn't be a good thing to do anyway, because it would lock XNA's version to Windows 8.

Now, the second reason people are worried is that there's not an alternative. The Windows 8 guide only shows DirectX programming with C++, it's not listed as available in the new WinRT API for C#/VB/HTML5. That's not particularly a problem, though, because historically DirectX has always been C++ only. It is itself an unmanaged API, and because it has to live in kernel space to do its thing, not meant to itself be managed and be forced to live in userland. That's why we have wrappers: the ill-fated MDX, and its successor the rather successful API XNA. Neither of these were built-in to the OS, and even their other attempt at bringing DirectX straight into .NET, the Windows API Code Pack is not built into .NET, but is instead a set of addon libraries. And we have SlimDX, which is far better a choice than that if you want to use the DirectX API directly, and there's all sorts of ways to wrap around other unmanaged SDK's if you want to.

Third of all is the new architecture support: ARM. Now since ARM is a drastically different CPU arcitecture, there's simply no way that ARM devices will be able to run x86 code. But that's the whole reason we have the the CLR in the first place: because unmanaged code simply can't run cross-architecture on the same build like that, but managed code can. I imagine with ARM there as a possibility now, the extra effort that would be needed to support two different code paths for unmanaged DirectX libraries will bring more weight to using a managed library. With XNA already ported to ARM for Windows Phone 7, that would make it a rather clear choice for the thing, it would simply need to be updated for Win8 ARM. But the XNA team isn't part of the Windows OS team, so they're going to have their on schedule for development and delivery.

And that's what i have to say on the matter. I doubt XNA's going to go anywhere, it's going to continue to be where it is: Xbox, Windows Phone, and PC. And, considering they mentioned right at the beginning that Windows 8 can run everything Windows 7 can now (on x86/x64), Windows 8 isn't going to magically make it so XNA can't run anymore.

And to prove it, and put my money where my mouth is, I will leave you with this screenshot: