Runecraft was a studio based in Yorkshire that specialised in converting existing games to new platforms.

My role at their external Glasgow office was to port games to the Dreamcast console.

Soldier of Fortune

The most noteworthy project was Raven Software’s hugely successful Soldier Of Fortune. A first person shooter built on the Quake II engine, it was an enormous game that was unsuited for a console with limited memory and a slow disc-based format rather than a fast hard drive.

The original source code made extensive use of C++ and the STL library, which were badly supported and had dreadful performance on the Dreamcast development environment. The decision was taken to port the entire game to C, replacing the use of STL components with custom built replacements.

The project was based at the Nottingham office but given the scale of the project, I was drafted in to help remotely from the Glasgow office along with a home-based worker in County Durham.


Given my experience with scripting languages at Red Lemon and Digital Animations, I was brought in to port the game’s bespoke scripting system that handled cut scenes and other triggerable events within a level.

The main challenge was in the way the original system handled memory, frequently allocating and releasing small chunks of memory as the scripts ran. With the Dreamcast’s limited memory size, it was best to allocate everything when a level was loaded otherwise fragmentation would quickly prevent further allocations, bring the game to a halt.

My solution was to write a routine that ran through every possible outcome of every script and total the amount of memory that could ever be allocated for each level. I then configured the scripting system to allocate that amount of memory, but to never release anything once it had been allocated. This not only prevented the fragmentation issue but also had a small performance boost as releasing unused memory had some overhead.

Front End, etc.

After I completed the port of the scripting system, I stayed with the team and helped out wherever I could. I developed the front end menus and the memory card loading and saving routines, and helped out with porting some of the weapon handling and inventory code.