I've not posted much lately as I've been busy finishing my game Positron but I've been seeing increasingly negative comments targetted at Microsoft with regards to Windows 8, XNA, and XBLIG lately and I thought I'd post something to share my thoughts.
As far as I see it, Windows 8 is a tablet OS. It's not a replacement for Windows 7 and desktop PC users are going to be sticking with Windows 7 for the foreseeable future. I've tried both the older build of Windows 8 and the Windows 8 RC (on a Desktop PC) and I have to say that it feels pretty bad as a desktop OS. While it's technically capable and can be used as a desktop OS that's not what it's primarily designed for. It's designed to scale to multiple types of device. It can run on tablets, small scale laptops, potentially even smaller mobile devices (Windows Phone '8'?).
I see many XNA developers talking about the death of XNA. Why? Because Microsoft has decided that XNA will not be supported in Metro apps on Windows 8. That makes complete sense to me, Metro is a new design interface and specification for UX in applications. XNA is a game programming framework, I don't really see where the cross-over is there. Games should be designed to be unique, featuring cool game-like interfaces and 3D graphics, Metro is not that! XNA is still fully supported on Windows 8 but only in 'Desktop' applications, in other words, apps that run full screen, most commonly games. This again isn't that much different than how 95% of XNA developers are currently using XNA, to write games that run full screen.
Also, XNA was never really about the PC. Yes, the games can run on PC but development on fixed hardware like the Xbox and Windows Phone 7 is what XNA was designed for. You know the specifications of the target machines and can develop games quickly and easily that run on those devices. Developing for the PC is more complicated as you have to support a much wider range of configurations and the majority of XNA developers are still only developing for Xbox and WP7.
Now, what is XNA? It's a framework, a simple set of libraries for C# that wrap some low level functions and allow you to capture gamepad input, draw to screen, play music, and carry out other game-related functions. There's not much to it to be honest. Engine developers write these kind of libraries on top of Direct X all the time. Under the hood it's just Direct X, and it's not that hard to learn how to use Direct X. Without XNA there'd be a steeper learning curve but you can do everything XNA can do directly within Direct X itself anyway.
I can understand Microsoft's reasons for introducing XNA, by hiding away some of the complexities of Direct X from the programmer they lowered the barrier to entry and smoothed out the learning curve required to get in to game programming. There have been libraries like this in existence for the past 30 years for multiple platforms. Unfortunately we work in a fast paced digital environment and these frameworks quickly become outdated. XNA was originally based on an earlier version of Direct X and has been updated over time with great support from Microsoft (yes, the level of support they once offered was perhaps greater but they're still offering a great service right now). As DirectX is becoming easier to use with each iteration I see a cross-over point where it makes sense for Microsoft to try and introduce all these XNA programmers to the Direct X SDK. Direct X 11 is a huge improvement over older versions (I started with Direct X 5, and until Direct X 9 it was a horrible mess. Direct X 11 has gone a step further now and I must say it's very nice to work with).
So, overall I believe XNA could stop being supported, but only in an effort to migrate those using it over to lower level Direct X (and I imagine Microsoft could even supply libraries which still offer some of XNA's high level functionality to help ease the transition.
One of the problems encountered by Microsoft with Windows Phone 7 is that developers who've released apps on other platforms don't want to have to learn C#, SilverLight and XNA to develop for Windows Phone. They can use C++ and low level APIs on Android and iOS so why can't they on WP7? They have a point and there is evidence hinting that Microsoft might be looking to allow native development in the next iteration of Windows Phone 7's OS. This same issue is evident on Windows 8. Professional developers will not want to use C# and XNA, they'll want proper low level access as they get now on Windows 7 with C++ and Direct X. It makes sense to me that Microsoft focus on a single game programming platform rather than supporting two simultaneously... Again, migrating XNA developers over to Direct X in the future.
As for XBLIG, it has ALWAYS been a bolt-on to the marketplace. It's an experiment run by Microsoft to see what the community could come up with and see if we could build our own marketplace. Support from Microsoft has been sporadic I'll admit with many stats problems, freezes on the dashboard and other issues but when you're running a system with many independent marketplace front-ends with millions of active users, there are going to be problems! There's clear evidence that high quality games can sell quite a large number of coopies on XBLIG and the market still has potential for any developers that want to release something to a small devoted group of players that play the games from XBLIG. Microsoft has provided a great service and all the complaints over the years have come from developers who want increased exposure and increased revenue from Microsoft but only have themselves and the quality of their games to blame. It's no different than a marketplace like the AppStore. You develop a great looking game with great gameplay and it'll sends tens of thousands of copies. Develop some crap that takes you a month to make and it'll sell 50 copies... it's your choice. Make your game good and get it noticed!
Ultimately I see XBLIG as an experiment and a stepping stone to something a little more organised in the future. Perhaps on the next Xbox. Microsoft needs a more formal approval process, and potentially they need to have a system that works more like XBox Live Arcade. Developers have asked for increased exposure, more online features, achievements, and gamerscore. The only way Microsoft is going to provide access to all that is if they take a greater cut (as they do for XBLA devs). You're not going to get away with them taking a 30% cut if you want access to all the top level features on the system.
I also believe the expectations of XNA developers targeting XBLIG are sometimes a little too high. XBLA has similar problems to XBLIG too you know? Many of the games get very little exposure after their release and there's not exactly a huge number of players browsing through XBLA on a daily basis. As with XBLIG most players just look at the new releases and top downloads, so we're getting the exact same treatment XBLA developers are. It's a very crowded marketplace and the recent dashboard changes should have provided a positive boost for XBLA and XBLIG devs alike now we have related games, and the updated front-page on the US Dashboard (though still no idea why it's not been rolled out to EU or AU yet).
XBLIG is here to stay for the current XBox, they're not just going to drop support for it without announcing it well ahead of time (as they always do). I hope it continues on to future consoles in some shape or form.
Personally, I'm obviously not just developing using XNA any more (since I'm targeting iOS, Android, and Vita for my games) but I'm still very much a big fan of XNA and how it makes cross-platform development so easy. I've been dabbling in some C++ and Direct X again simply due to the fact that it's what almost all AAA studios still use and it the games industry standard. I would recommend that all XNA developers infact look in to C++/Direct X as it's likely to continue on with the next few versions of Windows and the next XBox, I see C# and XNA almost being for beginner programmers wanting to get in to game programming but ultimately going on to learning other languages, frameworks and platforms to broaden your skill-set as I have been doing.If you found this post helpful please leave a comment below: