It’s been pretty clear for a while that XNA didn’t have a future. Key team members either left the company or moved to other groups, and XNA hasn’t been a part of any new announcements for over a year. Some of the most concrete proof so far came to light today when Promit Roy shared an email from Microsoft about the future of the XNA MVP program. Learn more about Microsoft MVPs here.
Disclaimer: I’m currently a Microsoft MVP in Silverlight, but my first MVP award was in XNA, and I still have a lot of good friends among the XNA MVPs. Silverlight MVPs also have a hazy future but that’s a post for a different day.
After April 2014 the XNA MVP competency will cease to exist. Fellow MVP Andras Velvart speculated that this means that either the current crop or the next crop of renewals will be the last for XNA, since the term for an MVP is one year. I tend to agree with this, and in my opinion this means that April 1 will be the last time that XNA MVPs are renewed/awarded.
With the end of the XNA MVP competency, it’s pretty easy to assume that XNA itself is not a technology that Microsoft will focus on going forward. This isn’t a surprise since XNA isn’t supported in Windows Store apps for Windows 8 or in apps for Windows Phone 8. Any questions about XNA support in Windows 8 were dodged or answered with an “it’s not supported”. Windows Phone 7.1 apps using XNA will still run on Windows Phone 8, but can’t take advantage of new features such as in-app purchasing.
If you’re an existing XNA game developer, things can seem pretty dire, but I would recommend that you embrace the MonoGame project. MonoGame arose originally out of my open source SilverSprite project but has taken it a lot further and they support most of the popular platforms including iOS, Android, Windows Phone 8, and Windows 8. It’s not perfect, but it’s getting better all of the time and it may turn out to be better over time than XNA because Microsoft would probably never have ported XNA to the competitor’s platforms.
XNA gained a pretty strong following, and with good reason. The lead developers on the team had a long history of working on commercial games so they knew what was really needed to help game developers get their job done. Unfortunately I think some of what they implemented to help game devs also led to their demise. The very powerful and flexible content pipeline, a way to get pretty much any assets in any form into XNA, either through the built in content processors or through custom content processors, was tightly integrated into Visual Studio C#. This is one major reason why we never saw official support for XNA using VB or other .NET languages, and I think it’s also why we haven’t seen support for XNA in Windows 8 or Windows Phone 8. It probably became just too expensive to keep updating this content pipeline for every new platform they wanted to support.
Currently MonoGame uses existing XNB files. These are the files that the build side of the content pipeline creates, so this means that for MonoGame you have to use an install of XNA to create the XNB content files you use in your MonoGame project. I know they’re working on this, and it’s even more important now for them to have their own way of generating XNB files.
So why do I think the death of XNA might be a good thing? Overall I’d rather XNA was supported going forward, since I love the technology and there are a ton of existing games using it that would easily port to Windows 8 if the option was available. The reason I think it may be good is for the same reason that I think the death of Silverlight could be good, as long as something better comes out of it. Windows Phone 8 is very similar to Windows 8 for development and from what I hear the next release will converge even more. The best guess across the board is that the next Xbox will support a very similar programming model. If this is the case, we finally are at a point where apps that you write for one of the platforms in the Microsoft stack will easily port to the others.
While .NET has been a constant through the last 12 years of Microsoft development, the other technologies built on top of .NET including WPF, Silverlight, WinRT, XNA, ASP.NET, etc. have been in a fairly constant state of flux. Writing Windows 8 apps in XAML is similar to writing Silverlight apps in many ways but there are some fundamental differences since the underlying framework has been almost completely rewritten.
Contrast this with iOS and Mac development. There are still APIs in iOS development that prefix the function name with NS. Why NS? NS stands for NextStep, the OS that Steve Jobs pioneered with Next computers and brought with him in his return to Apple. So while WinRT has been around for little over a year, the roots of Apple development are a lot deeper, and Apple doesn’t keep pulling the rug out from under their developers. I feel that Microsoft needs to do the same, and even if what they have isn’t perfect, at this point it’s more important to just stick with it and evolve instead of starting over yet again. Microsoft developers are tired of the churn.
As long as the death of Silverlight and XNA are part of a consolidation and a stabilization of the platform, I’m all for it, and it should have happened long ago.