
Low Level Games Programmer
I'm a games design and programming graduate from the University of Staffordshire with a focus on data-oriented design and Entity Component System (ECS) architecture.My dissertation, which compared Sparse Set and Archetype-based ECS implementations, was published at CGVC 2025. The work has also been nomintaed by my university for TIGA's outstanding graduate of the year.Alongside my native C++ projects, I enjoy working with game engines and have hands-on experience with both Unreal Engine and Unity.Outside of programming I like to cook, dive, collect records, and play dungeons and dragons.I'm currently seeking a programming role where I can deepen my games development skillset in a creative and challenging environment. If you're interested in working together, you can find my CV here!
My dissertation at Staffordshire University has now been published as a peer-reviewed paper. The study compares the two primary types of Entity Component System (ECS) architecture—Sparse Set and Archetype—through a series of C++20 implementations and benchmarks based on Conway’s Game of Life.
This research deepened my understanding of C++, memory management, cache behaviour, and game engine architecture, while also giving me the opportunity to work with GLFW, Vulkan, and CMake for the first time.Although the academic phase of this project is complete, I am continuing to develop my Archetype ECS implementation with the goal of turning it into a fully featured small-scale game engine.The following abstract summarises the published paper’s findings:
Entity-Component System (ECS) architectures have emerged as a powerful alternative to traditional object-oriented solutions in video games and real-time simulations. However, different ECS implementations present distinct trade-offs between iteration speed and modification costs. Despite its growing adoption, a comparative analysis on the performance characteristics of ECS implementation types has yet to be conducted. This study compares the performance of two widely-used ECS implementations: sparse-set and archetype-based. To facilitate this, an implementation of each architecture was developed in C++20 and their performance was examined in terms of iteration speed and entity modification costs. The results show sparse-set ECSes enable cheaper entity modifications but scale poorly during iteration, while archetypes excel at large-scale iteration through cache efficiency but incur higher composition change costs. These findings provide valuable and actionable guidance for developers selecting ECS architectures for their specific applications.
This paper was co-authored with my dissertation mentor, Ben Williams, and is now available as a published conference paper. The full paper can be found here, and the code for both ECSs can be found here.
Dunegon Cook is a chaotic, fast paced dungeon crawler and cooking game, in which the player must fight their way through a dungeon to gather ingredients, and the next day cook them into complex meals for impatient customers.
For this project I worked in a team of 29 students, including 4 other members of the tech team. My contributions included enemy AI, damage and health, the player controller for the dungeon portions of the game, the camera movement, storage mechanics for ingredients, and plate mechanics, as well as an unused dungeon generation system and more last minute bug fixes than I can count.We worked in Unreal Engine 5 using Git for version control and Microsoft Teams Planner to manage tasks.This has been my biggest and most successful group game development project, and I'm proud of how both the game and the team came together.You can play it here.
Last year, before the release of Unity's Behaviour Package, I created my own solution for behaviour trees in engine.Implemented using scriptable objects, with CompositeNode, DecoratorNode, and ExecutionNodes that are easily inherited from to provide functionality. Blackboards are also implemented through the IBlackBoard interface, allowing for more user control over data storage.
The tool also comes with a visual editor, which can be used to easily create and edit different behaviour trees.
This package was used as a part of my Game AI module at university, alongside a set of steering behaviours and pathfinding algorithms, for which I recieved a 1st. Below is a video demonstrating the behaviour tree in action, with an agent that can intelligently select weapons and buffs, steer away from enemies, and pathfind to pickups.
The code for this project can be found here.
This is a project I am currently working on to try and use my ECS in a more dynamic environment than it was initially benchmarked in. This project uses C++, and SFML for windowing and rendering.Whilst the project is a Sinistar Remake, my main goal with this project was to explore engine architecture, and try my hand at implementing a few systems core to game engines in my ECS. The engine created for this project - "Weave" - currently includes the following:
A Mathematics library with a templated Vector2
A 2D physics system with multiple collider types, customisable physics materials, and quadtree collision
A C++ recreation of C#'s Action class
Thread pools
2D rendering
Animations
Event based input handling
As I've worked on the project I also made a few important upgrades to my ECS, including:
System Groups (to organise, Update, FixedUpdate, and Render systems)
System Ordering
Easy Multithreading
Command buffers
I plan to continue with this game, next adding Sinistar itself, and it's drone helpers. So far this project has been great fun, allowing me to test my ECS in action, and learn much more about engine architecture, multithreading, and particularly physics in games.Feel free to take a look at the code for this project here!