XNA Game Studio Express
I’ve had a bit more of a chance to have a dig through XNA game studio express, which has been an interesting experience. This is the much-publicised “hobbyist” dev-suite from Microsoft, which significantly can target both Windows AND the Xbox 360. The next dashboard release will include a “Launchpad” feature, which allows you to send over software created in Visual Studio Express and execute on your 360. The output is in the form of managed .net 2.0 code, which gets dynamically recompiled on a virtual machine on the target platform, much like Java.
This version doesn’t contain all functionality. Xbox 360 execution is missing, as is the Content Pipeline, a key component to making hobbyist development much easier. It may be that the functionality of this release has been significantly reduced, in which case any criticism here may not be warranted for the final release.
Currently GSE only supports Visual C# 2005 Express. This means that if you want to create games, you have to learn C#. I’d never touched it before, and armed with the online C# Tutorial, I gave it a go. If you’re familiar with C++ or Java, it shouldnt be a big deal to make the switch. I won’t go into C# in much detail, but in general it seems very tidy – unlike C++ there are no pointers or header files, and no need for memory management (theres a garbage collector). Autosense works wonderfully in the IDE and compile times seem extremely quick.
I was really surprised with some of the decisions made in terms of what to include in the package. While most operations are made really easy for you (Texture loading, Polling gamepads, playing Audio), graphics operations are simply a NIGHTMARE for beginners. First of all, theres no fixed-pipeline, you have to use shaders to render anything on-screen. This is a massive headache to those just learning 3D programming, and requires a shitload more code. I learnt to make 3D things a while ago by playing around with Shockwave3D (to get a good understanding of models, textures, scenegraphs, lighting etc), then moving onto OpenGL thanks to the Nehe tutorials. The fixed pipeline and existance of immediate mode help introduce concepts slowly. With XNA GSE, theres no opportunity to provide this gentle learning slope. There’s also no camera class provided (as far as I’m aware), and world/view/projection matrices need to be passed directly to the vertex shaders to render anything in the correct position. While I’m aware that it doesnt claim to be a game engine, and that products such as Torque X will exist to bridge this gap, its a shame that more wasn’t bundled in with the release to make graphics development easier.
Hopefully the next version will address some of this, and I’ll do an update when its available. There’s more info on the XNA team blog, and samples from XNA spot. Download from the official XNA Game Studio Express page.