Portfolio

This page contains videos of various projects I’ve worked on. This is not a complete list of projects for reasons of company confidentiality but it should give you an indication of my areas of experience. If you would like more information in any area please get in contact with me.

Jump to category:

  1. Projects while working at Pixel Toys
  2. Projects while directing Sabresaurus
  3. Projects while working at Kwalee
  4. Projects while working at Neon Play
  5. Projects while working at Four Door Lemon
  6. Projects while working at Canalside Studios
  7. Projects while working at 13IG
  8. University Team Project – Dark Oz
  9. Older personal projects

Projects while working at Pixel Toys

Battle Sister (Oculus Quest 2)

Developed the world building technology BLAST used by level designers and environment artists to build huge levels that are automatically streamed and rebatched using custom editor pipelines and runtime rendering system.

Led the graphics development involving custom shaders, VR optimised dynamic colour grading, special effects, various culling and rebatching solutions.

Created a system for achieving granular and nuanced facial expression using film quality face capture running at 72fps on standalone VR.

Heavily involvement in all areas of code architecture, such as AI, animation, cinematics, designer visual scripting, performance by default.

Featured in the making of Battle Sister video here.

Drop Dead: Dual Strike (Oculus Quest)

Part of the 3 person code team that remastered and expanded Drop Dead as a launch title for Oculus Quest. I worked on the expanded horde mode features, rebuilt much of the multiplayer code to better handle latency and packet loss and new weapons.

Warhammer AoS: Realm War (iOS, Android)

Worked on much of the client/server architecture as well as both the client and server code. Particularly around inventories, store, client UI, live ops and moderation tools, guilds, analytics, matchmaking, asset bundles, repeating events and tournament systems, ARKit features.

Server development in JavaScript/MongoDB. Various tooling to help various feature teams and individual developers work on multiple server instances simultaneously, version control server code and handle deployment and data migration.

Projects while directing Sabresaurus Ltd.

Revengard (Nintendo Switch)

I am leading development of Revengard, an upcoming wave survival first person shooter. Revengard is in the final stages of development and will be launching in early 2021 on Nintendo Switch.

SabreCSG

I created SabreCSG Level Design Tools for Unity, a set of tools for rapidly building levels in engine using constructive solid geometry. SabreCSG consists of two parts: a core code library that turns input boolean brushes into output polygons, and editor tools to create, edit and manipulate brushes as well as texturing tools. SabreCSG has been used in games such as the wonderful High Hell

Contracting

In addition to developing their own projects, Sabresaurus also offers contracting services to games companies. Sabresaurus has helped with technical requirements on the following games:

Super Powerboy (Apple TV, iOS) – Pixel Blast

Implemented nearly all of the UI throughout the game as well as game flow and meta game, including:

  • Full front-end UI (main menus), in game HUD and pause
  • Objectives system and progression
  • In-game seamlessly repeating tutorial system
  • Achievements and leaderboards
  • Video in UI tech as well as working on the video pipeline
  • Analytics
  • Localisation (including Arabic mixed-direction support)
  • Narrative screens
  • Optimisation throughout the project
  • Gameplay prototyping, in particular additional hazards

Warhammer 40,000: Freeblade (Android, iOS, tvOS) – Pixel Toys

As a contractor helped port the popular iOS game to Android, mostly this involved plugin work including working with multiple ad providers and adding offerwall features. On a subsequent contract worked on the Apple TV port.

Drop Dead (Gear VR, Go, Rift) – Pixel Toys

Helped develop synchronous multiplayer code, allowing multiple players to take on levels together in Score Attack. Implemented Gear VR controller support for Drop Dead which supported the new 2017 Gear VR model at launch (featured in The Verge). Worked on Rift port features including the weapon/item attractor system.

Heavy work on game performance, ensuring the game consistently hits high VR-comfortable frame rates, isolating bottlenecks and fixing them.

Projects while working at Kwalee

Wave Champions (iOS)

I was Lead Designer and Lead Programmer on Wave Champions for iOS. Wave Champions is a 3D racing game where all race tracks are created in game using the touch based track creation tools. I took the project from its initial idea, through to prototyping, production and soft launch and subsequent updates. For much of the early development of Wave Champions I was the sole person on the project, but as the project progressed the team size grew so that I was leading a 5 person team.

Time Monkeys (iOS, Apple TV)


I helped on Time Monkeys for several months, mainly working on weapons and visual effects. I implemented about a dozen weapons, from shotguns and flamethrowers to homing rocket launchers and lightning guns, both in terms of gameplay functionality and visuals. I also implemented a number of powerups, visual effects (such as the rewind effect) and rag dolls. I was also heavily consulted throughout my time at Kwalee for technical advice on what could be achieved on mobile hardware and how best to implement various functionality and visuals.

Farm Fighters (iOS)


Farm Fighters is a 2D ballistics game for iOS, I joined midway through the project and worked on the project for a couple of months as a programmer before leading Wave Champions. On Farm Fighters I designed and implemented a remote configuration system, created a localisation system, implemented shop and purchasing/inventory support, implemented improvements to terrain and water rendering, added URL scheme support, implemented a crash logging solution, memory logging and native plugins (using a mixture of Objective-C and C++, with interop to the Mono code) as well as some UI implementation.

Projects while working at Neon Play

Bravo Force: Last Stand (iOS)


Developed the first person shooter from the first prototype to release and post-release support. I programmed the entire gameplay code, including the AI, ballistics, animation, physics, graphics. I also did extensive level design work, including the basic blockouts from which the final level geometry was built by artists, the placing of enemy spawns, animation splines. Additionally I animated every cut scene.

Over a million downloads to date as well as #1 Game in Belgium, France, Spain, Chile, Mexico, Luxembourg and Argentina as well as #1 App in Belgium, France and Spain.

I was interviewed along with the company founder for a The Sixth Axis article

Draw Story (iOS, Android)

Worked on Draw Story in 2012 as the sole programmer, working with a UI artist and data analyst. I coded the original version of the game, including the drawing, UI, network communication, drawing rendering, story galleries, as well as the cloud scaling server code. Draw Story was released several years after I left with much of my code still in use.

Mobil 1 Track Challenge (iOS)

Developed the ad-hoc local multiplayer to the racing game over wi-fi.

Traffic Panic London (iOS, Android) and Jewel Jumper (iOS)



I developed the mission system that was used in both these games. I also did minor graphics work on each, developing the custom shader for the cars in Traffic Panic London and a custom shader for the characters in Jewel Jumper.

Projects while working at Four Door Lemon

International Cricket Captain 2011 (iOS and Mac)

Worked on the Mac and iOS ports of the boxed PC sports title. For Mac this involved low level graphics work to port the engine’s render code from DirectX to OpenGL ES as well as replacing platform specific code such as file IO. For iOS I was involved in updating the iOS build with the new PC changes and supporting new features.

QuizQuizQuiz (WP7)


I ported this quiz game from iPhone to Windows Phone 7 while working at Four Door Lemon in Summer 2010. Now on sale on the WP7 marketplace.

I wrote a postmortem article for the game, which you can read here.

Projects while working at Canalside Studios

Pirates: Battle Stats


With this game I wrote the quad system to use multiple types of texture and stencil, in combination with a variety of lighting modes (for different specification PCs) and also several cursor-ray to quad section solving systems as I needed to find a more efficient way of achieving the collision with the required machine minimum specification lowered. I also developed various rendering implementations to draw the 3d scene on a range of hardware (from old on-board GPUs to the latest graphics cards.) However, I ended up implementing a more optimal approach with the 3d artist rendering the scene to a texture with varied light maps which I could then blend. This meant we got offline visuals at the price of rendering a texture, but was only possible because we didn’t move the camera and therefore the 3d quads and 2d scene texture could be aligned correctly.

Newspaper Valley: Word Wings


My principle tasks here were to build up the core gameplay backend code for making the questions and level progression work and also developing the 3d graphics code to cope with the high-poly alpha-textured scene, which required culling methods and alpha-depth sorting to deal with all the foliage.

Vessel Wars


I primarily had a graphics focus on this game, we had the game working in a couple of days and worked on the prototype for two weeks. This video was recorded at the end of those two weeks. I coded the never ending vessel walls, utilising displacement mapping and blending between two maps so that the walls pulsate. The effect is quite subtle and is more apparent when you can actually control the game. I also wrote a morph target system for the blood cells, so that they would change shape, however this was disabled as the effect was not noticeable. I also developed the shield effect, the space ship’s shaders and the laser effect.

Ironclads: Naval Warfare


Again for this game I was principally the graphics programmer, coding the water and terrain effects. The projectile trails and animated splashes when they hit the water. I also wrote a system to load meta-bones from the model for placement of locations such as flags, fire spawning and cannon barrel exits. I wrote a quick flag shader and the normal mapping effect seen on the ship. To support the ship effects I wrote a material application tool as we had issues with the version of the FBX plugin we were using at the time.

Stitch-Up


Platformer prototype developed in 8 days. I worked mainly on the level editor for this project.

University Team Project

Dark Oz


I was lead programmer on this project, Team 6 consisted of 10 developers (a mixture of programmers, artists and designers) and we decided to adapt the (public domain) classic story The Wonderful Wizard of Oz but give it a twisted retelling. Dark Oz principally is a puzzle-platformer where the player controls Toto (the dog) and must get through the levels safely with his owner Dorothy. The game is written in C++ with Haaf’s Game Engine upgraded to support DX9, Box2D physics integrated and levels driven by Lua. The integration of these libraries and the exposing game engine functionality to be controlled via Lua (via ToLua++) were my main programming areas on the project.

Projects while working at 13IG (Indie)

DodgeFoot

I was both the producer and a programmer on this part-time indie project. DodgeFoot is a Facebook game created in Unity3D (with a server backend to handle authentication and high score tracking). Players take control of a small character at the bottom of the screen that must avoid a giant stomping foot that gets faster and faster. The game featured three game modes, Bleep Test where the player must get from side to side as many times as they can, Flock where the player is a shepherd and must keep their sheep alive for as long as possible and Capture the Flag where a flag and target zone are repeatedly randomly placed and the player must score as many flags as possible.

DodgeFoot was developed part-time over the course of a month by myself (team lead, Facebook integration, server back end, high scores, main menu), Ben Blakemore (gameplay coding) and Lap Pun Cheung (art), with Dennis Lane providing music and sound effects.

Older Personal Projects

City Simulator (2011)


Implemented in C++ with DirectX 9.

  • City model created with GhostTown (a plugin for 3ds max)
  • City light maps created using automatic unwrapping and render to texture in 3ds max
  • Interiors are faked using Joost van Dongen’s Interior Mapping technique
  • Splines are created in 3ds max, then exported via a custom MAXSCRIPT I’ve written. The splines are then interpolated using Catmull Rom to give the nice curving paths of the vehicles
  • The HUD is created in Photoshop and based on the Halo ODST drone HUD, certain parts of the HUD react to camera movement (yaw, pitch and height are animated)
    One of the things I enjoyed most about the development of the project is the key role that 3DS Max played. This is the first opportunity I’ve been able to use 3DS Max in such a big way, for procedural geometry generation, lightmap calculation and traffic path creation (via MAXSCRIPT). In the future I’d like to extend my knowledge of MAXSCRIPT and Max driven automation which is proving extremely powerful.

Software Renderer (2010)


Implemented the following from scratch in C++ with GDI to teach myself core components of 3D rendering:

  • OBJ File Support
  • Model-Mesh structure
  • Vector2 and Vector3s
  • Matrix class – Being used here with a Rotation Y matrix to turn the tank
  • 3D projection of vertices to screen space via WVP matrix implementations

Morph Target Animation (2010)


Especially suitable for non-skeletal animation such as facial animation and cloth simulations. This example uses multiple vertex streams and blends between them using a vertex shader. This approach is a differing method to CPU or VTF based implementations and does not require the calculation of vertex textures, making it quite simple and straightforward. I believe the performance should be better than the usage of VTF. Because of the nature of the implementation each morph target must have the same topology (vertex/index count and ordering.) The video below is an old version, the newer one cycles through multiple morph targets rather than just two. I’ve spent some time commenting the source code so it should be quite explanatory.

Implemented with C#/XNA 3.1 and HLSL, source available here

Mika the Meerkat (2009)


A platformer I developed while at university, this was my first introduction to using XML in games (having previously used it for a range of other purposes). Part of my focus was to allow the game to be edited on the fly with a level editor you could jump straight into. I wanted the game to be quick and easy to expand without having to save and reload levels which can be a hassle. This game advanced a little beyond the point here supporting more advanced level editing capabilities.