Look! It’s a blog post!

This is a new blog! On my new website! So lets talk about old stuff. This post is a bunch of mushy, skippable backstory on my path to programming. There may be some meandering bullshit en-route.

Once upon a time in a distant and strange land (Birmingham) I was born! The year was 1988 and 13 years later Halo was released (The interim time was largely uninteresting). It was an alright game. A bit of a shoot shoot here and a boom boom there, but from the over-the-shoulder view I was getting whilst my brother begrudgingly let me watch him play, I didn’t really ‘get it’.

That was, until I managed to sneak in a solo play session on it and found myself on the titular level “Halo”, gawping upwards wondering what that massive structure was that streaked across the sky. Upon realising that I was standing on that structure I thought “wow…thats cool!” and I was pretty much hooked. Many hours of repeated playthroughs, co-op with friends andĀ insurmountable rage at 16 player LAN parties followed (what can I say, I don’t lose well), and my somewhat shameful obsession had begun.

This isn’t to say I hadn’t played games before of course. For instance Rollercoaster Tycoon and Total Annihilation had consumed a significant portion of my childhood beforehand, but Halo made me do something different. It made me want to break it. To try and do things that players aren’t meant to do. Which was fun and all, but on a console there’s only so much you can do with a controller.

A few years later, Gearbox Software released the PC port! I hurriedly downloaded the demo (‘hurriedly’ being relative to the trickle of bytes that was 2005 internet) and installed it! Then uninstalled it! Because my PC was a potato and couldn’t run it!

Some begging occurred and a computer constructed of cast offs and charity appeared which could just about run the game, and things started to get interesting. People were doing unspeakable things to the game, modifying it, bending it to their devious will. Mainly putting logs everywhere so nothing particularly nefarious but still. I dabbled in this with the tools of the time, swapping model references, chain spawning grunt’s, that sort of thing.

A while later, I came across Halo Custom Edition and the Halo Editing Kit! I hurriedly downloaded and installed it! Then got angry at the tools not being *click* *click* “done” and uninstalled it!

A few months later I returned to Halo CE and the HEK and persevered with it until the blobs of information I had been harvesting coalesced in to something unimaginable…something impossible…something amazing! A sniper rifle firing TANK ROUNDS! Ok, it wasn’t actually impressive but it was certainly a start.

Fast forwarding a bit, I made some maps and I made some vehicles. I shared with the community and such, thoroughly enjoying the HEK in all it’s glory. Except it wasn’t ‘all’ it’s glory. A problem had befallen the HEK that has befallen other games prior and since. Features were locked out. Creativity was slapped down with a “#define NOPE_NOT_FOR_YOU”.

UI tags were not editable with the HEK, but you could export them to a text file and thenĀ  re-import them…a plan hatched, and a slow, disfigured creature climbed out in the form of my first released program. It was a UI tag editor that worked with the text files! It was received with high praise! Then almost immediately made redundant when another community member ‘kornman00’ hacked the tools themselves to unlock everything. Bummer. But the spark started there and there were other problems to solve.

What followed was a slew of tools for the problems of the time. Multiple versions of Bitmap extractors, and BSP converters flowed from my eager, clacking fingers. Each iteration better than the last, each program filling a gap in the toolset until the constantly evolving code culminated into a single program called Aether. Aether was what many had been yearning for. A way to create Halo lightmaps by leveraging the power of 3ds MAX or Maya.

Aether handled as much of the process as possible. It exported the level meshes (render and lighting) to .objs with all the materials automatically generated, it exported all of the required bitmaps, it exported all scenery types and positions and it handled importing the resulting bitmaps (with some nifty dithering options).

I didn’t have much else to do after that. Until…that pesky fellow ‘kornman00’ popped up again and released a codebase he had been working on called “OpenSauce” (clever right?). I didn’t understand it at the time since it was written in mystical runes and riddles (C and C++), but I needed something new so I plunged in at the deep end and shoe-horned the DirectX example of post processing into it (Screw you “Hello World”).

If you don’t know, OpenSauce is a culmination of many years of reverse engineering that allows us to interface with the Halo client, dedicated server and editing kit and add cool new features to the game.

After a few iterations that came about as I learned more and better understood what I was doing, Kornman took notice and wanted to integrate my post processing system into the main codebase. Which we did, and I became an active developer on the OpenSauce project.

That was in 2009, and 6 years later i’m still here. OpenSauce has evolved and expanded into a broad project crossing multiple languages and technologies, resulting in a mod that adds a tonne of features to a classic PC game.

So there you have it, thats how I got into programming.

TL;DR I came, I modded, I programmed.