A professional software developer with over thirty years of commercial experience within the games industry, and in using game engines for non-gaming applications.
I have a diverse range of experience in game development covering not just gameplay, but also the low-level technology behind the games, and the tools to support them.
I have a particular interest in UI / UX and the architecture of games and game engines.
Lead Programmer | Card Shark
When I was hired by Nerial, Card Shark already contained much of the core gameplay but needed fleshing out into a fully polished game. Besides finishing the gameplay, this involved developing save / load, localisation, audio, UI, and other systems from scratch.
The programming team on Card Shark consisted of two junior programmers and myself. Mentoring them was a key part of my job description. As the company expanded, I've maintained this role and I'm very proud of the team's achievements.
Lead Programmer | The Crush House
As well as managing the programming team and working on gameplay features, I designed and developed most of the technical systems for this game, including:
A camcorder that can identify every single object being filmed, how much screen space they occupy, if they're behind glass, and how much they're occluded by objects in front of them.
A sophisticated audio occlusion system that allows you to hear the character dialogue through gaps and around corners, and knows when to show or hide subtitles for audio you can or cannot hear.
A highly modular first-person character controller that allowed easy additions of new movement types such as climbing ladders, swimming, mantling, etc.
A multi-scene environment that streams levels in and out of memory as you move around the enviroment.
Lead Programmer | Reigns: The Witcher
When the original lead programmer departed half way through the project, I stepped in to replace them. I worked with the designers and the remaining programmer to implement a large change to the gameplay and deliver a finished product. With no dedicated UI team member on the project, I also worked closely with our 2D artist on the game’s UI / UX.
Lead Programmer | Reigns back-catalogue
Overhauled the first five Reigns games, dating back ten years. Some titles required porting to new platforms due to their original Netflix / Apple Arcade releases. All titles required updating to Unity 6.0 and needed extensive reworking to use modern iOS and Google Play SDKs for achievements and cloud saves. The original Reigns game was expanded to include new content for the 10th anniversary re-release.
Lead Programmer | Scaffold
A framework of reusable code for prototyping and new projects in Unity. It started with the systems I developed for Card Shark and evolved during later projects as new features and systems were required. It covers everything you need in a Unity project, from scene management, save slots, localisation, audio, animated UI controls, menus, etc. It has integrations with Steam / GoG / iOS / Google Play and there's even a handy Unity project template for starting a new project.
Lead Programmer | Build Server
Created a dedicated build server with a custom application for configuring and performing builds, both daily and on demand. The builds are shared via Google Drive, and links are broadcast to the team via a Slack channel. If a build fails, the error messages are collated and sent to Slack for the team to quickly diagnose and fix.
Principal Developer | Project Mobius | Edify
Project Mobius was an Innovate UK funded partnership with the University of Glasgow to create a suite of ten VR apps to be used in the classroom. My main responsibility was to design and build the Mobius Platform, a common codebase that all the applications are built on.
I developed three of the apps:
Printing Press where you operate a 15th century Gutenberg Press
Disease Diagnostics Lab where you perform a Zika virus diagnosis in a molecular biology lab.
Battling Infection where you help a person's immune system defend against salmonella from inside the body.
Reacting to the Covid-19 pandemic, the project was re-engineered into a remote teaching tool to allow lessons to be taught from a VR environment over Zoom or Teams. I led development on various technical aspects such as adding multiplayer, while mentoring the junior members of the team which was growing fast.
Senior Software Engineer | KB13
A free-to-play, third person deathmatch game for iOS and Android. Besides being involved in the gameplay coding, my responsibilities included the UI, character and weapon customisation, the technical side of the art pipeline, and mentoring junior developers.
Lead Software Engineer | Voxelise
A 3D voxel editor that was designed to be easy to use yet powerful, featuring frame-based animation, layers and a VR viewing mode. I acted as the product designer and lead developer.
Lead Software Engineer | Minimaker
A desktop app for creating and posing characters for 3D printers. It allowed customisation of a high-quality animated 3D character, fine manipulation of the limbs, and interactive painting before exporting as a 3D printable file.
Senior Software Engineer | Muvizu
An animation suite using a modified Unreal 3 game engine to allow inexperienced and hobbyist animators to easily make short 3D animated videos using supplied characters and props.
Responsible for the initial architecture, integration with the Unreal 3 Engine, several iterations of the user interface (WinForms and WPF), and a cross-language API (UnrealScript, C++ and C#) to control and monitor Muvizu externally.
Senior Software Engineer | Various Projects
During my fifteen years at Digimania, I was involved in dozens of smaller projects, including:
Virtual Character Technology, a virtual human system that was used for Ananova, NCR cash machines, and several other applications.
Several small J2ME games in Java for early mobile phones that supported it.
A content management system for MTV.
A website that procedurally generated braille tutorials for a local council.
A system for ITV viewers to enter competitions and buy media via SMS messages.
Lead Programmer | Pilot Advance
A stylised 2D physics-based action game in the style of Thrust and Oids.
This was a mashup of my two favourite games from the 80s, with some fresh gameplay ideas. It made heavy use of particle effects, which was a technical challenge on the Gameboy Advance.
Binary 9 was a small Gameboy Advance studio started by Stewart Gilray, the producer from my previous project (Soldier of Fortune at Runecraft). After releasing Pinball Challenge Deluxe, the studio regrettably closed while Pilot Advance was still in development. Stewart later went on to found Just Add Water and developed Gravity Crash which was heavily inspired by the work we had started with Pilot Advance.
Programmer | Soldier of Fortune
We converted the Quake II engine and the game to the Dreamcast console. C++ wasn't properly supported on the Dreamcast and caused significant memory overhead, so we made the decision to port the entire engine and game to C. I was responsible for the scripting system, inventory and weapons, and a new front-end menu.
The original scripting system used a lot of dynamic memory allocation, which wasn't feasible on the Dreamcast. I wrote a tool that calculated the maximum amount of memory each level could possibly generate. Then I only allocated that amount of memory when the level started and refactored the system so that each allocation happened sequentially, but was never freed. The entire block of memory was released when the level ended.
At the time, my colleagues thought it was crazy, but it worked perfectly. It was much faster than the original heap based system, and was guaranteed not to run into fragmentation issues. In the last few years, I've seen similar techniques become popular in discussions around memory arenas.
Programmer | Take The Bullet
Take The Bullet (a.k.a. Project TTB) was supposed to be a launch title for the Sega Dreamcast that was unfortunately never released. It was a third-person game with car driving sections where you played a bodyguard protecting a client.
I designed and developed a bytecode-interpreted scripting language for controlling cut-scenes and interactive game entities. It was reused in several released titles including the PC game of the sci-fi TV series, Farscape.
Programmer | Braveheart
Braveheart started as a regular real-time strategy game under the name Tartan Army, in reference to Scottish football supporters. As the game expanded with a clan management system, a tie-in with the Braveheart movie was arranged and the game was renamed.
I assisted the development of AI for driven and walking ground units. There was an extra layer of difficulty as the lead AI programmer was a true Scot at heart and had used Gaelic terms throughout the code. For example, "deosil" and "widdershins" for turning clockwise and counter-clockwise respectively.
I also took over development of the rendering system, completing the Glide (3Dfx) renderer and implementing the OpenGL and Direct3D renderers from scratch. The unreliable state of OpenGL drivers on Windows at that time meant we regrettably had to drop OpenGL support before release, but the Direct3D and Glide renderers performed well. The Glide renderer had high frame rates but lacked some details due to technical limitations with the 3Dfx's handling of textures, while the Direct3D renderer was a little slower but looked incredible.
We also had a software renderer that was implemented by a colleague. In total, the renderer was capable of supporting four radically different back-ends with a single unifying API. My experience with 3D cards at Gremlin was invaluable in creating this.
Lead Programmer | Modular Game Engine | Æther | TMmy
Designed and built a modular game engine for prototypes of two entirely different games. This was a major challenge and involved developing physics, collision detection / handling, scripting, and rendering modules.
Lead PC Programmer | Reloaded
Lead developer on the PC version of Reloaded. First experience of managing junior programmers.
Programmer | Actua Soccer: OEM Edition
Created OEM versions of Actua Soccer to showcase the 3Dfx, PowerVR, ATI, and S3 hardware-accelerated graphics cards that were about to be released to the public.
BSc (Hons) Software Engineering
The third year of my degree was spent working at AT&T in Malmesbury, Wiltshire. I was responsible for writing tools that analysed the log output of digital telephone exchanges. It was this experience that made me realise my passion in programming was in games.
My final year dissertation was to develop a raycasting game engine in the style of iD Software’s Wolfenstein 3D for the Linux operating system, and a low-level VGA driver to support it.
I had wanted to work on something that would help me start a career in the games industry. My professor wasn't convinced but needed a Linux VGA driver for his own project, so this was the compromise we agreed upon. It's incredible how many ways you can almost completely destroy an old CRT monitor by messing with the VGA timing registers. The whistling noises they make are something else.
I'm a keen gamer, with a particular interest in quirky 2D or retro-inspired games.
My husband and I have a shared interest in Lego, which has been steadily filling our house for many years.
I play the guitar and previously managed a successful guitar teaching business in my spare time.