Welcome

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 finished my PhD in Human Interface Technology at the HIT Lab NZ and am now based in my home country of the UK, in Cambridge. I am currently working as a programmer and designer, producing quests and other content for the MMORPG Brighter Shores, working at Fen Research. I'd love to network with fellow game enthusiasts and professionals. Please feel free to reach out via e-mail or on social media (links above).

Notable Projects

Select a project below to see more information.

Brighter Shores (2025 - Present)
Proprietary Engine
Professional Project

Programmer and designer for the MMORPG Brighter Shores at Fen Research, working alongside the original creators of RuneScape.

Key Contributions

  • 'The Maintenance Crew' Quest: Lead developer for this quest, featuring real-time skill-based puzzles and introduced the game's first large-scale boss fight with multiple phases and novel mechanics.
    Responsibilities included:
    • Narrative design and cutscene composition.
    • Dialogue and character creation.
    • Puzzle design and implementation.
    • Boss design and implementation (for 'Krakanaxa').
  • Filtration Station Minigame: Designing, implementing, and balancing the game's first large-scale minigame (currently in development).
  • Project Milestone: Collaborated extensively with the balancing team on a major design and balance overhaul of the game's core systems, aimed at incentivising player engagement and enjoyment.

Video & Screenshots

All images below are sourced from the Brighter Shores Wiki (https://brightershoreswiki.org/), © Brighter Shores Wiki contributors, licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0). [Modifications: images have been resized and colour balanced].

Navigate with left/right arrows.

'LeverQuest' - RPG Engine Demo (2024)
C++, raylib, entt
Personal Project

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.'

Features

Video & Screenshots

Navigate with left/right arrows.

3D Software Renderer (2024)
C++, SDL
Personal Project

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.

Features

  • 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.
  • Model/material loading. ObjParser parses and loads obj files and their accompanying mtl files into the renderable class used by the renderer.
  • Full rendering pipeline. Renderer takes the 3D model data provided as a Renderable and puts it through the pipeline to convert it to screen space coordinates.
  • Z-Buffer implementation.
  • Triangle rasterization. Rasterizer takes the data provided from the renderer and fills the triangle accordingly with the edge-finding algorithm (not scanline).
    • Texturing is implemented and is read from the mtl files provided. (Textures must be png files).
    • Two texture filtering algorithms - either nearest neighbour or bilinear filtering.
    • Two shading algorithms - either flat or gouraud shading.
    • Basic directional lighting.
    • Multiple textures are supported.
    • Texture atlases are supported. Can be used with bilinear filtering if atlas 'tiles' are a consistent size.
  • A GUI that displays the scene's framerate and allows the user to select from various pre-selected scenes.
  • Multithreaded processing thanks to the opm library.

Video & Screenshots

Navigate with left/right arrows.

VR Wildfire Learning Environment (2023)
Unity, VR
Research Project

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.

Features

  • In-depth design developed using a framework to synergise learner's preferences and VR's features with task and environment design.
  • Fire propagation based on wind speed, wind direction, moisture level of fuel, and slope inclination.
  • Scripted live demonstrations of fire behaviour.
  • Interactive lessons that allow the user to experiment with different simulations.
  • Randomised quizzes to encourage reflection and reinforcement.
  • In-depth tutorial that covers the environment's controls and tasks.

Video & Screenshots

Navigate with left/right arrows.

VR Security Training (2020)
Unity, VR
Professional Project

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.

Features

  • Individual persistent user profiles and statistics.
  • Multiple individual randomised hazards.
  • Task management system in which users must complete multiple tasks to complete an object.
  • In-game voice recording and playback.
  • Instructors can record trainee interaction with simulation as a video file and later review.
  • Statistics saved as CSV file for instructors to review later.
  • Tutorial system with Text-to-Speech voice.
  • Inventory system in which users can add and remove virtual objects from the world around them.

Video & Screenshots

Navigate with left/right arrows.

Prop-oriented World Rotation (2020)
Unity, VR
Research Project

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.

Features

  • Implementation of "POWR" in a demonstration game.
  • A variety of enemies and obstacles with their own logic.
  • Wave-based shooting mechanics.

Video & Screenshots

Navigate with left/right arrows.

Doki Doki Mouse (2022)
Unity
Game Jam Entry

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.

Video & Screenshots

Navigate with left/right arrows.