Software

Training, Visualisation and Research

Since 2019 I have worked at and with MXT to build immersive technology for infrastructure visualisation, training and research.


Other Serious Games

In 2022 I participated in a Meta hackathon with a prototype mixed-reality productivity app designed to make vacuuming more engaging. I also developed a prototype for an environmentally-focused 360° video player with videos displayed around a 3D Earth.


Less Serious Games

Sometimes I work on games that are just fun, too! Gitch was a mobile puzzle game built by a tiny hobbyist team while I was at university, and Squingle is a hypnotic VR puzzle game in which I worked on the user interface and multiplayer aspects. Revival: Final Ascent was my final year team project for my Computer Games Programming Degree, featuring 3D platforming, alien mysteries and a kindly old man.


Even Less Serious Games

I've participated in game jams from small online university jams through to Global Game Jam and Ludum Dare. My favourites are ECOLLAPSE 2030, a retro platformer set in a calving glacier; Stopn't, a sci-fi ship racer with a jammed throttle; Make Yourself At Home!, a frank conversation with a cup of tea; Membrain, a VR brain game about language and love; and LUCID SUPER DREAM, an experiment in seeing just how much is too much. All these (and more!) are available to play on my itch page.

Ray Tracing

I first started paying attention to ray tracing with the announcement of NVIDIA's 20xx series video cards, which would feature dedicated hardware support for ray tracing. Not knowing much of what that meant, but interested all the same, I started with a popular starter project, Ray Tracing in One Weekend.

I later progressed to writing real-time GPU ray tracer in Unity, as the game engine I was most familiar with. A university assignment at the time had me writing the first iteration of my orbital physics engine, and planets are spheres, so it seemed a natural fit.

For my bachelor's disseration I used real-time ray tracing in the Unity game engine to create an interactive simulation of the visual effects of special relativity.

Since then I have experimented with variations on the Ray Tracing in One Weekend formula to branch out into other areas of programming, for example writing a real-time ray tracer in C and OpenGL.

In the future I would like to return to relativistic ray tracing and further develop a spectral renderer for both artistic and realistic graphical pursuits, as well as explore acceleration techniques for more complex scenes.


Orbital Simulation

Kerbal Space Program left a lasting imprint, leading me to learn about Keplerian two-body orbit simulation and patched conics approximations for representing realistic spaceflight in games. I've implemented simple orbits in various environments, and in the future would like to develop an open source orbital physics model to bring the fun of KSP's physics to game developers everywhere.