Professional


Fortnite Chapter 5 Splash Screen
Fortnite
Epic Games
Unreal Engine
C++
Gameplay
Multiplayer
Tooling
Performance
Fortnite

Fortnite

(2024 - Present)

Epic Games
Unreal Engine
C++
Gameplay
Multiplayer
Tooling
Performance

I joined the Fortnite's Battle Royal team in late 2024, an extremely experienced team focusing on delivering everything required for a Fortnite Season.

I was responsible for helping to implement everything from new Weapons, Vehicles, Abilities, Map Changes and seasonal activities. Anything that a given season might need.

I did this while also implementing better tooling, doing low level optimization to ensure features ran performantly and jumping into basically any issue that needed to be fixed.

Summary

  • Developing seasonal gameplay features within a fast moving experienced team.
  • Maintaining and upgrading evergreen gameplay functionality.
  • Debugging a wide range of issues in one of the world's biggest games.
  • Developing bespoke tools to make designers and QAs lives easier.
  • Refactoring and optimizing core gameplay systems.
Fortnite x Fall Guys promo art
Fortnite x Fall Guys
Mediatonic
Unreal Engine
C++
Character
Physics
Prototyping
Networking
Fortnite x Fall Guys promo art

Fortnite x Fall Guys

(2023 - 2024)

Mediatonic
Unreal Engine
C++
Character
Prototyping
Networking
Physics

In early 2023 I was picked to join a small team who's goal was to create a Fall Guy's character inside Fortnite. We ported the core character and it's functionality from Unity to Unreal and then adapted it all to work inside Fortnite.

I played a key role in developing the character; Creating a new Mantle and Ragdoll system inside Unreal Engine, making tools and integrating our character into Fortnite. I'm immensely proud of what we achieved in this team.

Summary

  • Working quickly and with little overhead on a small team with a big goal.
  • Implementing key character functionality such as a physically based networked ragdoll, character collision systems and a complex mantle system.
  • Creating tooling for debugging character functionality for QA and developers.
  • Researching and developing a system that bridged functionality from Fortnite to our Fall Guys character.
Fall Guys
Fall Guys
Mediatonic
Unity
C#
Performance
Multiplayer
Consoles
Fall Guys Free for All promo art

Fall Guys

(2022 - 2023)

Mediatonic
Unity
C#
Performance
Multiplayer
Consoles

I joined Fall Guys in early 2022, at the end of season 6 and just before the big free to play launch. At that time it was all hands on deck to fix the hundreds of issues that had appeared across the new platforms we were releasing on. I helped out with optimizing and bug fixing on the Switch. It was exhausting but very rewarding.

When not working on switch issues I was deep in the belly of the game working on refactoring parts of the core game and networking systems as well as helping out with replication issues (a fun problem space in a sudo physics based game).

I worked on the following 3 seasons and helped out with the Creative mode before moving onto a new initiative.

Summary

  • Supporting and extending gamplay for new seasonal maps and obstacles.
  • Refactoring low level network and game systems.
  • Tackling physics replication issues.
  • Working on improving visual and network LOD systems.
  • Console specific optimisations and bug fixing.
CSR3
CSR3
NaturalMotion
Unity
C#
Pre-Production
Physics
Multiplayer
Mobile
CSR3 app icon

CSR3

(2021)

NaturalMotion
Unity
C#
Pre-Production
Physics
Multiplayer
Mobile

I helped out briefly about a year into CSR3 pre-production. Primarily research and development on getting multiplayer stood up and working on producing deterministic results from the game's custom physics engine.

I'm not sure how much of my work still exists in the game but it was a fun little period.

Summary

  • Multiplayer design, research and intial implementation.
  • Helping with the in house physics engine.
  • Working on consistent floating point operations.
  • Helping debug and improve developer workflow.
CSR2
CSR2
NaturalMotion
Unity
Raknet
C#
C++
Mobile
Networking
Matchmaking
Tooling
CSR2 app icon

CSR2

(2018 - 2021)

NaturalMotion
Unity
Raknet
C#
C++
Mobile
Networking
Matchmaking
Tooling

CSR is a very popular mobile racing game. It's relatively simple but addictive gameplay loop, car collecting and guinuinely impressive graphics made it a really interesting project to work on.

I showed an interest in the games' Raknet multiplayer setup and worked on a new feature that added skill based matchmaking to the CSR2. A lot of this matchmaking functionality was implemented by me on the multiplayer server itself.

I wrote tools to stress test the server, creating a bot framework that emulated the multiplayer flow of the game but in a way that could be run thousands of times concurrently.

I also helped maintained the multiplayer stack in Unity itself, helping out with client-side multiplayer issues and feature work.

Summary

  • Extending and maintaining Raknet/Unity multiplayer implementation.
  • Low level network performance and bug fixing.
  • Implementing bot tools for multiplayer tuning and load testing.
  • Mentoring and helping on board new teammates.

Personal


Picture of a photography website
Carpenter
Open Source
Solo
C#
Websites
Framework
Images
Picture of a photography website

Carpenter

Open Source
Solo
C#
Websites
Framework
Images

Carpenter is a static website generator which I originally created to make creating and maintaining my photography website easier.

Carpenter initially allowed me to template common html code and apply it to multiple pages (via a small config file for each page in my site). It allowed me to build a static version of my website on my desktop which I could then upload.

As my site grew and became more complex, Carpenter had to grow to support it. This is an incredibly cool feedback loop to be a part of and the project continues to be used and present fun challenges.

Summary

  • I wrote my own static website generator!
  • Homebrew config system.
  • Lots of system/framework design decisions
  • Performant parsing and file generation.
  • Wide range of tools and programs that support website creation.
  • Getting to make your own website with your own website generation framework is a weird flex.
Picture of the beautiful code behind the library
JpegMetadataExtractor
Open Source
Solo
C#
Images
Parsing
Library
Picture of the beautiful code behind the library

JpegMetadataExtractor

Open Source
Solo
C#
Images
Parsing
Library

JpegMetadataExtractor is a small weekend project which I made in C#, it's a library that extracts image metadata from Jpeg images. Like a lot of my projects, this started with a basic requirement, I needed to get the dimensions of an image fast (at least faster than C#'s builtin Image class).

After a few weekends on and off I had a little self contained library which could extract metadate pretty dam quickly. In the end I wanted something that was presentable and had a feature set that others might find useful and I think I achieved that.

Summary

  • Jpeg metadata extraction library.
  • Implemented an effective and performant parser of an old spec with lots of edgecases.
  • Clean interface designed for easy use and extension by others.
Image of a colourful console application running
PowerPing
Open Source
C#
Networking
Tool
Commandline
Image of a colourful console application running

PowerPing

Open Source
C#
Networking
Tool
Commandline

The windows console Ping tools was probably one of the first console applications I ever used. After watching YouTube videos, I found that, by pinging different domains I could get their IP address which might let me bypass the firewalls that blocked different Flash game sites at my school. Needless to say it didn't work.

During university I found a book in the library that showed how to implement a fairly basic ICMP program C#. This became the starting point for a project that, over 5+ years, became a very feature complete and (in my opinion) very pretty console Ping program.

It's got a lot of features and parts have been rebuilt many times. It's big but I'm proud of how far it got.

Summary

  • Powerful console ping tool.
  • Custom implementations of low level network protocols.
  • Bucket loads of functionality (scanning, flooding, listening, graphing) and customizations.
  • Solo maintainer on project, reviewing pull requests and tackling user issues and suggestions.
A colourful map of small squares
SC4Cartographer
Open Source
C#
Art
Reverse-Engineering
Tool
A colourful map of small squares

SC4Cartographer

Open Source
C#
Art
Reverse-Engineering
Tool

SC4Cartographer is a program which creates maps for SimCity 4 save games.

Being a grid based games, there is something really satisfying about seeing the layout of a city. This was a lockdown project that started when I saw an image of just the zones (what you place in the game to plot out residential, commercial and industrial buildings) of a city. Inspired, by it's mosaic like beauty I decided to distill this functionality into one program.

It was a really fun project that involved deciphering how this 20+ year old game worked, a lot of highs and lows there.. I'm thrilled with the end result, the community actually used it and I saw some really beautiful maps.

Summary

  • Creating a tool that produces interesting little pieces of art out of SimCity 4 save games.
  • Reverse engineering how a 20 year old game works.
  • Lots of customization options and different map layers available.
  • Creating a mod and a new niche in a small community.
Visual Coding
Creative Coding
Solo
Java
C++
Graphics
Physics
Art

Creative Coding

Solo
Java
C++
Graphics
Physics
Art

I've been doing creative coding in different forms for over 10 years. Creative coding is an abstract term for any coding that focuses on ashetics and visuals over function. Basically it's using code to make visually interesting things (or at least that how I used it).

I started with Processing and then OpenFrameworks , I particularly loved making particle systems with rudimentary Newtonian physics. Often I'd see visuals in a game and then try and implement them (sometimes leading to interesting results..).

I still dabble to this day, the visuals on the main page of this site is a port from an old processing sketch. Alot of my programs can be run in the browser so check them out at OpenProcessing .

Summary

  • Making little visual programs and art.
  • Using different physics and mathmatical concepts to make visually interesting things.
  • Working accross platforms, languages and different frameworks.
  • Collaborated with others and shared them with the community.
Simcity 4 Reverse Engineering
Simcity 4 Modding
Open Source
C#
C++
Game
Tools
Libraries

Simcity 4 Modding

Open Source
C#
C++
Game
Tools
Libraries

While working on SC4Cartographer, I created a library to parse and extract data from Simcity 4 save games. This kicked off a bunch of random projects and tools based on modifying or reading Simcity 4 data:

  • SC4Parser - This was a C# library that I wrote and released to help me and other quickly extract data from Simcity 4 save games. Because of the way the save games are structured this has seen quite a bit of use for reading core game data files.

  • SC4MessageViewer - SC4MessageViewer was a small DLL mod that I created for Simcity that display game events in a console window while the game was running. My first foray into DLL modding and meant as a debug tool.

  • SC43DViewer - This is a prototype project that I created to view Simcity 4 cities inside Unity. While still in the early stages it actually works quite well. It's surreal to see cities rendered in this way.

  • SC4Extractor - A small utility tool I wrote to allow SC4Parser functionality to be easily run from the commandline.

  • SC4SaveDiff - A console tool that displays a detailed differences between 2 save games.

  • SC4HeightMapExtractor - Another small commandline tool that extracts the heightmap data from a save game to a CSV. Sounds weird but I find this really useful as having convenient access to heightmap data comes in really handy for some projects, fake data never looks as good.
Miscellaneous Tools and Programs
Misc Tools and Programs
C#
C++
Go
Tools
Commandline

Misc Tools and Programs

C#
C++
Go
Tools
Commandline

I've written alot of small tools and programs, it's how I got my start programming. If I see a problem or something I want to work in a specific way (or just because I want to) I'll normally write something to do it.

Here is an unordered list of tools I've written over the years that are a bit too small for their section.

  • Stitcher - This is a command line sprite sheet generator I made for a university games project. Able to produce absolutely huge (and highly unperfomant) sprite sheets for animations it served it's purpose (and was a fun excuse to write some Go).

  • HttpPing - While working for a web agency, I wanted to have a little display in the office to show if all our sites were up. Realising that there was a difference between a host being reachable (with say pings) and the website actually returning things (which could be done with GET calls), I put together a small tool that fired http requests to a given URL and returned the results in a familiar and colourised ping format.

  • Skimmer - For some reason (I can't remember why) I found myself needing a port scanner. Instead of using a pre-existing solution like NMap, I favoured writing my own in Go. It was a really fun excersise and it is quite lightweight I still find myself using it every so often.

  • NetworkTests - This is a collection of Batch and Powershell scripts performing various network tasks. In here are some of earliest programs I ever wrote. Now admittedly Batch and Powershell scripts were probably the most useless languages to try and write proper programs in but everyone has to start somewhere. I loved console user interfaces and some of these are still the favourite I ever made.

  • LilSyncy - Being an amateur photographer (who bought a rediculous digital camera where each raw image takes up 40mb) storage setup for photos is important and tedious. Backing up all my photos on a NAS is a good first step but keeping this backup in sync was always annoying. So I wrote this commandline tool that can automatically find differences between 2 file trees and copy over (or delete) files as required. It's saved a lot of time, and is fun to watch run (which is the most important thing for a command line tool).

  • FilmSniffer - So I have a secret hobby, I love watching bad films with friends. At a certain point in time our list of bad films was so big we wanted an automated way of retrieving information about each film (plot, runtime, release date etc), so I wrote this commandline tool to find said information via OMDb. I love making command line tools and ones that look colourful so this was a fun one. It became out moded when we moved the bad film list into a mega google sheet which did this type of thing automatically.

  • NetworkTrayGraph - Does pretty much was it says on the tin, displays network send and recieve rates in a little graph in the windows system tray. Inspired by the processor and ram usage graphs that ProcExp64 can display, but for network interfaces!