17 Jan 2014

Update and Realisations

So, I just returned from a meeting of University of Lincoln indie game developers, organised by the glorious Sean Oxspring. Between throwing ideas around and listening to stories, I showed Sean a bunch of the stuff I'd been working on over the past year or so (in fact, it's the set of demonstration programs for my Professional Practice mock interview) and he was very, very impressed.

This puzzled me a little. I never really considered the stuff I'd done to be all that impressive. Cool, sure. Interesting, I hoped so. But impressive? I'd simply considered them 'Good Enough'. However, Sean's reactions made me realise exactly how much I'd achieved with my work, especially Carthage.

I normally see Carthage as my fun pet project, a game engine written to help learn how games tick and solve a bunch of problems I encountered when wrangling with XNA.

However, while showing Sean Carthage's features, I realised that it's a hell of a lot more than that. Carthage was built from the ground up to be as moddable as possible, allowing entire games to be defined entirely through runtime-loaded config files and external DLLs, even the system to read these configs can be expanded in this way, making it almost infinitely modifiable. It allows for screens and menus to be set up using only a few config tags, with the internal system handling everything else (as opposed to pure XNA which requires that state management be implemented from scratch by the game developer). It has a greatly-moddable and expandable 3D procedurally-generated world library, with an open save format designed to easily accommodate the extra data games need to store. It even has an expandable ingame command console to allow for simple debugging at runtime without having to breakpoint or stop the program to toggle debug features!

Only now do I realise that Carthage is an incredible achievement for me. Two and a half years ago I had almost no programming experience and knew practically nothing about how games were structured internally. Now I have a well-structured and expandable game engine that has already been tested in two game projects and proven its worth. It's amazing to think just how much I've achieved already!

But it's not only Carthage. Also in my portfolio of demonstrations is a virtual machine that uses image files as memory, an incredibly optimised program for finding Narcissistic Numbers, a very depressing game developed from start to finish in 24 hours and a 3D sandbox RTS prototype with fancy visuals and a working genetic system!

Maybe I really can live up to the title of 'Code Ninja Extraordinaire'...

In an unrelated note, last weekend I had my first go at shooting a bow instinctively (i.e. like how you can just throw a ball and it'll go where you want it, instead of having to actually aim). I did fairly well, and it feels a hell of a lot more natural than using a sight.