Games
Redline Racer (PC Version)
I was one of 4 engineers on the team; I wrote the motobike engine audio code and tooling, AI balancing code, and some of the visual effects. I also assisted with portions of the menu and networking code, special bike unlocking, as well as setting up the installer.
PC
Racing
C
Redline Racer (Dreamcast Version)
The game was only released in Japan. I wrote the VMU code, and worked on localization, fitting the game on to the GD-ROM, and general bugfixing and optimization.
Dreamcast
Racing
C
Suzuki Alstare Extreme Racing
I mainly worked on menu system updates before moving to another project.
Dreamcast
Racing
C
Trickstyle
Came in near the end of the project to help out with fixing bugs before release
Dreamcast
PC
Racing
C
Hunt for the Red Baron / Master of the Skies - The Red Ace
I was the sole programmer on this project, along with an artist and a game designer. The game was designed to be purchased and downloaded over the internet over a 56kbs modem, so the entire download size was limited to 15MB. The game used Renderware and an internal engine developed at Criterion. The game was a 3D WWI flight combat game, and I wrote all the code for the game, including the vehicle dynamics, audio, VFX, menu system, AI, and game progression. The project was completed in around six months, and was the best-selling game from Fiendish Games at the time.
PC
Flight Combat
C / COM
Red Ace Squadron
Red Ace Squadron was the sequel to Hunt for the Red Baron, and added more realistic environments and multiplayer. I improved the vehicle dynamics considerably, and added multiplayer support. However, I left the company before the project was completed.
PC
Flight Combat
Multiplayer
C / COM
World Tour Soccer 2
Integrated Lua as a scripting engine, and led the Game Modes team of three engineers, as well as authoring some of the game modes myself.
PSP
Sports
C++
Lua
Internal Sony Prototypes
Developed several internal small game prototypes for the PS3, PS2, and for testing a motion controller prototype. Also created a cut-down SVG renderer for using in Playstation Home on the PS3
PS3
PS2
Prototypes
C++
EyePet
Wrote the menu system for the game using the Scaleform Flash engine, and its hooks in to the base C++ engine. Wrote a singing minigame whereby the player could sing to their pet and teach it to sing songs. The system used a fast fourier transform combined with autocorrelation and a hidden Markov model to track pitch and timing. I also write the menu hologram VFX.
PS3
Pet Simulation
Buzz! The Ultimate Music Quiz
I was the lead programmer on this project, joining the team halfway through development. I was responsible for planning and aligning on the deliverable milestones with our publisher, as well as managing the coding team of 3-4 engineers. On the coding side I worked on Spotify integration (sadly dropped due to licenising issues), game mode coding, and tooling to control the automated lipscyncing from the recorded voice acting.
PS3
Quiz
Blue Toad Murder Files (PC version)
I came in nearing the end of the project, largely to get it to launch and help fix the remaining bugs.
PC
Puzzle
Kinect Fun Labs - Air Band
I was lead programmer on this project, with 1-2 other programmers, a game designer, audio designer, artist, and a producer. The game was made in Unity, and the team finished it and Mutation Station in six months. Air Band was the first released Xbox 360 title to be built in Unity. Among other things, I wrote the pose detection, video compression, Kinect/Microsoft login and authorization flow, and menuing system.
Xbox 360
Kinect
Kinect Fun Labs - Mutation Station
The was the second Kinect Fun Labs title that I was lead programmer on, made concurrently with Air Band. It used many of the systems I wrote for Air Band.
Xbox 360
Kinect
Kinect Nat Geo
I started off on this title helping out writing game modes and writing a system for the Kinect to detect voting gestures by groups of up to six people - normally the Kinect could only detect the gestures of two people (US patent 20140357369A1). Later the lead programmer left the company and I took over as lead for the rest of the project.
Xbox 360
Kinect
Educational
Kaijudo
I was lead programmer on a small team including 3 other programmers. The game was a mobile game designed to be released with a physical set of toys. We finished the Alpha build ahead of time, and the only remaining work was to add more levels and other content, but sadly the toy line was cancelled, and along with it the game. I worked on monster AI and level tooling, as well as the menuing system, and the system for reading QR codes to unlock monsters in the game.
Unreleased
Card Game
Furby Boom! companion app
I was lead programmer with 4 other programmers reporting to me for this companion app for the infamous Furby toy. I worked on the menu system, infrasound Furby communication, and the in-game item unlock system, as well as managing the programming team.
iOS
Android
Companion App
MMX Racing
I was one of three senior programmers writing this mobile racing game. I integrated Scaleform in to the game to use for the in-game UI and menus, and wrote much of the menuing system. I also wrote all the audio code for the game, and the game progression and unlock systems. I also wrote some maching learning scripts using R to test the performance of the vehicle upgrades so that we could accurately predict the difficulty of any race against the player’s current vehicle setup. I also set up the company continuous integration server to make builds and run automated tests using Jenkins.
iOS
Android
Racing
Race Kings
I worked on the menu systems and the player pairing and tournament systems, which used the ‘GameSparks’ backend-as-a-service platform. I also worked on profiling and optimizing the android version of the game.
iOS
Android
Racing
The Crypt
A personal project in which I created a full 6dof VR system using a Oculus Rift DK1 headset along with a Kinect and a Sony Move controller. This was before the release of the HTC Vive and Oculus DK2. By making my own 30ft ‘umbilical’ set of cables I was able to make a full room-scale experience in which the user had to retrieve a treasure from a crypt. The crypt features stone statues inspired by the ‘Weeping Angels’ Doctor Who antagonists, which could only move when the user wasn’t looking at them. I showed it at several VR events in the Brighton area.
VR
Oculus Rift
Kinect
C#
Unity
Other Software
Tilt Brush by Google
Before joining Google, I had reverse engineered the Tilt Brush file format and written several tools for working with Tilt Brush files, including a web-based viewer, a converter to import Tilt Brush files in to the Unity engine, and a tool to allow the user to change the scale of Tilt Brush sketches before the feature had been added to the application. After joining Google, I worked on several features for Tilt Brush, including autosaving, offline video rendering, Google Drive integration, porting it to the Windows Mixed Reality platform, designing hand-based gesture controls, sketch simplification for large sketches or low-end hardware, and porting it from PC to the Magic Leap and Oculus Quest. I was able to get Tilt Brush to run almost the entire PC feature set on the Quest, and it was an Oculus Quest launch title.
VR
Creative Tools
Unity
C#
Mobile
Streaming AR for Google ARCore
I worked on a team that was using Unreal Engine to stream high-fidelity AR content to mobile devices. It was released by Google and for a time if you searched for certain cars on an Android handset, you could view a very high-quality rendering of a car you might want to purchase in your own driveway using ARCore. I worked on the user interface systems and application flow.
AR
Mobile
Built-in Terrain authoring and Rendering for Unity
I was Engineering Manager for the team responsible for the Terrain system in the Unity game engine. The team was responsible for authoring tools, runtime rendering, and performance optimization of terrains in Unity. My duties included personnel management, mentoring, leading planning and agile development, collaborating with other departments, ensuring high code quality, collaborating with the engineers on technical designs, and doing code reviews. I also made sure that I also regularly fixed bugs in the code in order to stay familiar with the codebase, reduce the bugfix load on my team, and to ensure that my coding skills stayed sharp.
Unity
Terrain
C#
C++
World - next-generation terrain authoring and rendering for Unity
I was one of several Engineering Managers on the team producing the ‘World’ next-generation terrain system for Unity. Initiailly I was only resposible for the runtime rendering portion of the system, but as time progressed I my responsibilities expanded to include the whole thing. During this time the team was also responsible for maintenance on the old terrain system, so I tried to spread the bugfixing pain across the whole team as best I could, while still continuing to fix bugs on it myself. As with my work on the terrain team, I collaborated with the engineers on the technical designs.
Unity
Terrain
Game Engine
C#
Film & Television
Dinotopia TV series tools
I wrote a variety of internal tools to assist the technical directors with various scene-related operations, such as code to turn lights on and off for the city scenes depending on the time of day.
Framestore
TV Series
VFX
Softimage
C
Framestore image-based lighting tool
I had to update a tool that a previous employee had written to generate HDR images for image-based lighting and apply them in Softimage. Unfortunately the previous author had not saved the version of the source code that they had used to create the version of the tool all the tech directors were using, so I had to try and reverse engineer what they had done. I was able to get a version that very closely matched the original tool. Also, after that I set up a CVS server for the R&D department to use so that we wouldn’t find ourselved in that situation again
Framestore
Lighting
Internal
Xbox ‘Mosquito’ TV ad
I wrote a tool that would take the 3d models of the mosquito and generate a series of voxel representations of it at different levels of detail. These voxel models were then rendered in Mental Ray to create the distinctive blocky look of the mosquito in the ad.
Framestore
TV Ad
VFX
Mental Ray
C++
You Can’t Change Me - Roger Sanchez music video
The music video featured people being transformed in to cubic ‘voxel’ versions of themselves. I wrote the tool that would take the recorded video along with the rotoscoped 3d models of the actors, and create a scene file full of voxels that was then passed to Mental Ray for rendering.
Framestore
Music Video
VFX
Mental Ray
C++
Harry Potter and the Prisoner of Azkaban
I wrote the system that translated the animation of the Hippogriff in Harry Potter to a large motion base with the model Hippogriff mounted on to it, along with the actualtors for the wing stubs and neck. The actors would then ride the motion controlled Hippogriff, ensuring their motions looked natural once the model Hippogriff was replaced by the CG one. The tool was written in MEL in Maya.
Framestore
Feature Film
VFX
MEL
Maya
Framestore Rosetta - file format conversion tools
I wrote a system for converting between various 3d modeling packages and renderers. The intention was that we would support Maya, XSI, and Houdini, and be able to transfer data between them and renderers like Renderman and Mental Ray. At the time I left we had export from Maya and partial export from XSI and Houdini, and import in to Renderman and Mental Ray.
Framestore
Pipeline Tools
Internal