Tuesday, December 12, 2006

Hurray for .NET...XNA on the XBOX

XNA, which is a recursive acronym for XNA's Not Acronymed, is a new development platform and runtime environment for developing homebrewed, non-commercial games and applications for the XBox platform. It consists of a toolkit (similar to the Visual C# Express), CLR, and a rich set of class libraries to rapidly develop managed and modularized programs that have the ability to target multiple platforms.

Currently, all of this is free. You just need to download it from the MSDN DirectX website. The only drawback, is that even with homebrew games, it will cost the developers a $99/yr or $49/4months subscription fee to run their game/application on the XBox 360. I see this as a fairly hefty fee just to tinker around. Even if your not a game developer, you will still require a XNA Creator's Club account in order to play someone else's homebrew game. In addition to this drawback, XNA does not have any classes implemented for networking. This rules out any possibility of building a fully managed application that is able to be played across a network or by using the XBox Live service. Microsoft is planning to release XBox Live capability in 2007 however this is only for their Professional version of XNA. Its also reasonable to believe that XNA will not be coming out for the older XBox as Microsoft wants to push their XBox 360 and it would also mean that they would have to deploy a new version of DirectX in addition to a number of other libraries in order to get it to work. If the open source community develops a XNA compliant CLR based on mono, then maybe we will have XNA support on hacked versions of the old XBox.

Although there are quite a few limitations with XNA, I do believe that this is a revolutionary step in the game console world (sorry Nintendo). Playstation did offer an SDK but at a extraordinarily steep price of around 20K. There are open source SDKs available however there are legal implications to running these games as they often require hacks of the original console.

Despite the high cost of the Creator's Club accounts, its still a much cheaper alternative for small hobbyists to get started in console game development. By leveraging the XNA framework, a developer can write code and target both the Windows platform and the XBox console. Although, targeting these different platforms will require a conditional compilation, basic application design and a majority of the code written will be the same across platforms. Since XNA does not require a subscription fee in order to distribute the games on the Windows platform, it gives developers a low cost, low risk opportunity to test game ideas out on the general gaming community before deciding to launch a full scale game targeting a console. Savvy developers that license their software and ideas as proprietary have the great opportunity to have their games/ideas bought by large companies. Even the developers that open source their code will impact game development in general by spurring innovation and creativity to a fairly stagnant game design community. In addition, this can help larger development firms seek out new talent by recruiting promising young developers and designers.

Finally, my strongest excitement about all of this is that XNA once again shows the power and capability of the .NET platform. The XBox 360 is the second non traditional PC platform to receive an official .NET framework with Windows Mobile/CE devices being the first. I am also excited about seeing how true performance can be obtained even in a managed environment. One of the greatest aspects of .NET MSIL is the metadata. Using the meta data, the JITter can produce a native executable that is optimized for the specific hardware its running on dynamically. Combine this with caching, either dynamically or through the GAC, and JITted applications can actually outperform native images while providing greater reliability and security.

As for all you nay-sayers out there, the only thing I can say is "watch and see."

No comments: