I’ve briefly covered Microsoft’s XNA gaming platform before but have been trying to piece together what it is actually going to mean to developers.
Sorry, had to clarify the whole commercial/non-commercial parts. XNA Framework is just a portion of XNA… that won’t apply to the big guys.
Microsoft have made it clear they want to open up XNA to interested parties which should mean home-brew software.
These guys will be using C# in conjunction with XNA Build, XNA Studio, XNA Framework and managed libraries.
Licensed 360 developers get a whole set of tools and technologies that are under tight NDA just like those Sony and Nintendo insist on for their licensed developers.
These guys will be using C++ in conjunction with XNA Build, XNA Studio and no doubt 360-optimized unmanaged libraries based on Direct3D, Xinput and XACL.
Whether XNA lets Microsoft get the 360 and Windows XNA gaming platforms a little closer is anyone’s guess. Being under NDA I doubt the general public would even know.
C# for home-brew developers, C++ for licensed studios.
There’s no way the licensed studio’s are going to change and C# lets the new guys get up to speed quicker.
Licensed studios will have full control, full speed and continue to use their existing libraries and middle-ware.
Core framework – .NET 2.0 BCL
.NET 2.0 Base Class Library – well a modified version of it for those using the XNA Framework and C#.
Seeing as C# is the only managed language on the menu and games are rather performance sensitive expect CLS compliance to disappear and plenty of under-the-hood optimizations now that they don’t have to support other languages.
Graphics framework – MDX2
The graphics framework is based on the graphic assemblies of Managed Direct X 2.0 (MDX2) which currently ships as part of the DirectX SDK.
MDX2 is currently beta and will never hit a final release now all attention is now focused on the "XNA Graphics API" version that will see the weight drop and aim to be more cross-platform – no doubt hiding away all the platform-specific optimizations inside the libraries themselves.
There will be no System.Drawing and no System.Windows.Form name spaces so forget about them.
Audio framework – XACT
Microsoft Cross-Platform Audio Creation Tool (XACT). Grab it from the latest DirectX SDK and forget about DirectSound and DirectMusic. They won’t make it.
Input framework – Xinput
XInput kicks DirectInput off the scene with it’s easier-to-use API and support for vibration and varied controller types and voice headset.
Grab the XInput Driver for Microsoft Common Controller, plug in the 360 controller on your PC and start messing round.
Build tools – XNA Build
XNA Build is based on MS Build but adds asset (textures, samples, music etc) tracking to the mix to ensure you don’t do like Microsoft and ship almost an entire CD’s worth of unknowingly unused assets with your Mech Commander. It also lists incremental and distributed builds on the feature list.
A March 2006 technology preview is available that integrates with Visual Studio 2005.
IDE – XNA Studio
Once again Microsoft takes from it’s existing .NET tool-set and makes an XNA version – in this case Visual Studio 2005 Team System..
Whether the cheaper home-brew/XNA Framework/C# version will have all the C++ features stripped is anyone’s guess.
Microsoft have already announced their plan to take online gaming from the Xbox 360 (gamertags, achievements, friends, chat) and make it cross-platform across to Windows and mobile gaming.
It would make of sense then that the Live Anywhere! system is .NET framework for use with XNA – even if it doesn’t officially make up part of the package.
Have to sit and wait for this one to pan out.
Microsoft will be supporting:
- Xbox 360
- Windows XP 32-bit/64-bit*
- Windows Vista 32-bit/64-bit*
Mac OS X?
Apple should really be negotiating to get XNA on Mac OS X. It already internally supports PowerPC (360, G3, G4, G5) and Intel (Windows, IntelMac) as what they offer developers seems rather weak – about the only reusable element is OpenGL.
This would allow existing XNA games to be ported with ease although would be of little use to existing Apple developers who use Objective-C/C++ and wouldn’t want to interop with C#.
Linux already has Mono & DotGnu which could provide the basis for a .NET based gaming platform but I can’t see Microsoft wanting to open up the source for a successful Linux port.
The only obvious route here would be for Linux developers to either implement it themselves or wrap around existing technologies – Wine/OpenGL etc.
Sources & info