Here, you can find a mixture of personal, professional and research projects. You can also find more of my work featured on my GitHub or learn more about me and my background here.
I have recently completed a PhD in Human Interface Technology at the HIT Lab NZ and am now based in my home country of the UK, near London. My research focused on using virtual reality for training firefighters, building upon my knowledge gained in previous projects while undertaking a Master's in Computer Science at the University of Kent, from which I graduated with a distinction in 2020. The demo created as part of my Master's dissertation won the “best demo/poster” award at VRST 2021 conference in Osaka, and has now been published as an academic paper. Outside of research, I am focused on continuing to improve my design and C++ abilities, experimenting with 3D graphics and implementing gameplay features from my favourite titles. I also love participating in game jams.
I'd love to discuss job opportunities or network with fellow game enthusiasts and professionals. Please feel free to reach out via e-mail or on social media (links above).
Select a project below to see more information.

The objective of this project was to create a vertical slice of a Baldur's Gate 3/Divinity: Original Sin 2-inspired CRPG without using a game engine, such as Unity or Unreal. Instead, I built the engine on top of the low-level 'raylib' library in C++, primarily using raylib for window management and rendering. The goal was to learn how to build systems and tools from scratch, which I take for granted when using large-scale game engines, such as pathfinding, particle systems, visual effects, or serialisation.
In this demo, the player awakens in a cave and must navigate through a goblin cult that has occupied an underground dungeon. The player must repair a lever that opens their escape route through a series of quest chains to leave the dungeon area. Due to this, the demo was dubbed 'LeverQuest.'
Navigate with left/right arrows.

A software renderer written from scratch using C++ and SDL. Creating a 3D software renderer has been a challenge I have wanted to tackle since I first started developing video games. But, it also presented an ideal opportunity to learn more about the fundamentals of 3D renderering while improving my 3D maths and C++ skills. A complete "fixed-function" rendering pipeline was implemented, and a maths library and OBJ/MTL parser were written to support it. The project has three scenes showcasing shaded and textured environments with a GUI to select between scenes, shading method, and texture filtering.
glm was not used for this project. Instead, I created the following:slib - A helper library. Contains mutliple vector/matrix classes with operators overloaded for convenience.smath - A maths library. Can generate all necessary matricies for the renderer.ObjParser parses and loads obj files and their accompanying mtl files into the renderable class used by the renderer.Renderer takes the 3D model data provided as a Renderable and puts it through the pipeline to convert it to screen space coordinates.Rasterizer takes the data provided from the renderer and fills the triangle accordingly with the edge-finding algorithm (not scanline).mtl files provided. (Textures must be png files).opm library.Navigate with left/right arrows.

As part of my PhD, working with industry experts and stakeholders, I designed and developed a custom virtual reality learning environment over a year and a half. I used this environment in two user studies, with over 50 participants, including professional firefighters.
Navigate with left/right arrows.

This project was created as part of a research project with the University of Kent. The purpose of the VR environment is to teach new security guards the basics of a typical patrol. The environment was designed to test the user's situational awareness and understanding of correct procedure.
The training environment was created using Unity and the SteamVR SDK.
Due to nature of the research project, the source code is not available for this project.
Navigate with left/right arrows.

Prop-oriented World Rotation (POWR) is an experimental technique to enable games to map objects from the user's physical environment to objects in the virtual world. For example, the user's bed in their room reinforces a crate in the virtual world. This allows the users to benefit from haptic feedback from the virtual world without needing any bespoke prop or device.
A game was developed to demonstrate this technique. The game is a shooter (similar to Time Crisis) where you shoot all the robots to advance to the next checkpoint. Each checkpoint has a virtual object the player uses for cover, scaled and mapped to a physical object in the user's room. The crate object is mapped to the bed, and any door object in the game is mapped to the room door.
This project won the award for best poster/demo at the "VRST 2021" conference as voted for by conference participants.
Navigate with left/right arrows.
A game jam entry submitted to "8 Bits to Infinity #36 - Mouse Jam 2," with the theme of creating a game that was only controlled by the mouse. I chose to recreate my days of playing old flash games by creating a mouse-controlled "maze" game with a variety of different enemies with different behaviours. Feedback was positive from the community and a was the entry played by a Japanese streamer which is available to watch below.
Navigate with left/right arrows.