I’ve been poking around recently looking into how plausible game development really is in C#. I’m sure a lot of the old C/++ people will regard this as heresy, but I’ve had my fill of C++.
I spent a few hours a weekend or two ago writing a managed wrapper for Lame (“ain’t an MP3 encoder” lame…) and my first reaction was something like “who wrote this crap”. A little premature in all honesty, because Lame certainly isn’t badly written but it’s definitely a product of 1990s mathematical programming. The physical layout left something to be desired and it just reminded me how tiresome old coding conventions were before intellisense let people makeUpVariableNamesTheLengthOfWarAndPeace without having to worry about having to retype that damn string 1322747 times. I’m sure people would argue that a sensibly placed x, y or z may look nicer than the longVariableNameOfYourChoice, but it’s certainly less descriptive and far more irritating to maintain or port a decade later. Anyhow, I (obviously) digress, Lame isn’t badly written, just old fashioned.
So C# game development (as I really have no desire to use C++)… leads me to the XNA framework and disappointment number two of the same weekend.
Regardless of the Visual Studio 2008 RTM hitting before the RTW of XNA (TLA heaven!) they apparently have chosen to leave out 2008 support until an incremental upgrade. Seeing as I’ve just attempted to move everything I work on in my own time into .Net 3.5 and not have to maintain two copies of a binary compatible development environment on my machine, the lack of support for VS2008 is more than a little off putting. I’ve not actually reinstalled VS2005 to try out XNA yet, so unfortunately my experience with XNA ended there. I’m sure I’ll get round to it, because I went on regardless and wrote the basis of a game engine for a real time Worms-esq game in C#.
Gives me a little bit of hope, with the Xbox360 and XNA providing what appears to be a unified platform, if Microsoft get their shit together quickly enough they could actually formalise console homebrew in a way that’s genuinely beneficial to them and not just their least favourite users who enjoy Xbox media centre and other “original xbox” gems.
I’ve never done any DirectX programming, so my game engine (which was written largely on a train to and from London) doesn’t have anything that actually resembles a UI at the moment, just a set of classes, interfaces and tests. Left me feeling like that task is definitely plausible, .Net benchmarks very very well these days (near unnoticeable performance hits over native code), we’re out of the dark ages and if Microsoft manage to wrap the DirectX API into something really nice in XNA, game development might be able to come kicking and screaming out of the dark ages too.
I’m sure that’ll make people developing for Sony and Nintendo’s platform very happy, but I guess the C++ developers still need to get work too in the land of pointer arithmetic and honey…