Background

Hey! I'm a graduate student currently based in the UK with a first class degree in Physics with Astronomy at the University of Leicester. Throughout my time in education I have worked on passion projects that revolve around modding games. Some of which are very popular, such as 'Parallax' and 'Beyond Home' for the game 'Kerbal Space Program' which have both received overwhelmingly positive feedback.
​
I love working on new projects because I get to learn all about new technologies and talk to so many new people. Collaboration is really important in game development and I thoroughly enjoy it - being able to share ideas with, teach, or learn from my peers drives me to deliver the best results possible.
​
All of my work can be found via my online prescence where I go by 'Linx' primarily, or 'Gameslinx'.
Feel free to take a look at my work below and let me know what you think!

My Work
Parallax
A mod for Kerbal Space Program which vastly improves the look of the game's environments
"A Game Changer" - ShadowZone
Kerbal Space Program is an over-a-decade old game which captivated millions. It is a physically accurate space sim with huge environments which include entire planets. Sadly, these planets are extremely barren with not much to see.
​
Parallax delivers on its goal to massively diversify and populate these environments by using many techniques that weren't available when the game originally released. This is done by utilizing compute shaders, procedural generation and GPU instancing to populate the landscapes of KSP with thousands of objects at great framerates. It is capable of running on hardware that was available back when the game launched in 2011.
​
It has been praised as one of the best mods that Kerbal Space Program has received to date, amassing over 430,000 downloads over two years.
Here is a link to Parallax on the Kerbal Space Program forums.

Demonstrating the massive amounts of foliage Parallax can achieve

Creating alien environments inspired by other media

Realistic asteroids using tessellation at high performance

Demonstrating the massive amounts of foliage Parallax can achieve
Technical Features
Here are some of the features I have learned to fully utilize for the best performance and most immersive experience
-
Compute Shaders to massively speed up object generation
-
GPU instanced geometry
-
Custom shaders to support GPU instancing, complete with animation
-
Full LOD system using compute shaders
-
Biplanar mapped terrain
-
Meshes fully collideable
-
Basic shader animation for wind simulation
​
It has been reported that this mod runs just as well as the base, unmodded game. I am always looking for ways to deliver an immersive experience by utilizing new techniques in every project.
DART
A collaborative project for Kerbal Space Program which recreates Nasa's Double Asteriod Redirection Test in-game

My Role In This Project
The DART mod was requested by Squad in collaboration with NASA. I worked closely with a very talented team of well-known individuals in the Kerbal Space Program modding scene to create a to-scale accurate recreation of the Didymos-Dimorphos asteroid pair in Kerbal Space Program. Players would be able to journey to these asteroids with the goal of successfully redirecting Dimorphos by... smashing a spacecraft into it!
​
I was in charge of developing the systems that the artist on the project required in order to achieve the desired visuals for both asteroids. I created the logic and shaders involved in the asteroids' surfaces and environment. At the time of the project in 2021, there was no detailed imagery of the asteroid pair. I was working from concept art and artists' impressions of the asteroids.
​
Now that the DART mission has run its course, I am proud to say that my role in the project resulted in both asteroids in-game looking very alike to how they really look!
​
Here is a link to the DART project on the Kerbal Space Program forums.



Tools / Small Projects
A series of tools and other demos I have created in order to speed up and/or assist workflows
Range subdivision on a plane
Range subdivision on a sphere
Fast Linear Radial Subdivision / Mesh Cutout
This tool is for subdividing and/or cutting out a mesh into two parts based on its distance to an object or point in space. It is useful in combination with tessellation shaders in order to increase the level of detail of an object if it requires a higher tessellation factor than the GPU hardware limitation.
​
Using the tessellation, hull and domain shader stages are expensive even when the mesh is not being tessellated at all. This tool cuts out the part of the mesh which will contain tessellated triangles, allowing the rest of the geometry to use a much cheaper non-tessellation shader where there wouldn't be any anyway. There is a significant performance gain by doing this - especially on large terrains.
​
On a 225 vertex chunk, this implementation can perform the subdivision in realtime at over 1,000 FPS. Obviously, T-junctions will exist with this approach but the tessellation range will never cause these to be revealed.
Octree on a 3D mesh

Octree from above
Octree With Visualizer
Octrees are a spatial data structure that can be used to massively improve querying the distances between objects. Here is a full octree implementation complete with a visualization tool to show how the data is partitioned on a 3D terrain.
​
I used an octree in my Parallax project in order to determine which GameObjects with colliders should be enabled or disabled depending on their distance to the player's spacecraft or rover. This massively saved on CPU time, resulting in a smooth experience despite there being (visually) thousands of highly detailed objects in the scene.
​
Of course, there is no need to try processing GameObjects or colliders when nobody is anywhere near them, but looping through every object each frame is slow and this approach massively speeds this up by only needing to query the tree to find out what is nearby.
Compute Shader And Instanced Foliage Demo
This tool generates objects that lie on a mesh of any shape and topology. It is useful for placing a large amount of objects across a wide area and is also able to directly interface with shaders for GPU instancing.
​
A good example of this in action is grass! This compute shader picks a random position on a triangle and determines where to place an object according to various parameters in the tool. There are many different variables, so I have only showed a few here.
​
This method of generating grass is much faster than using geometry shaders.
Terrain Generator with Hydraulic Erosion
Procedurally generated terrain using simple noise functions powered by compute shaders.
The entire terrain from the mesh creation to the erosion is handled by the GPU. This allows for high fidelity and fast generation times.
​
The hydraulic erosion featured here is an implementation of the steps described by the following paper: https://www.firespark.de/resources/downloads/implementation%20of%20a%20methode%20for%20hydraulic%20erosion.pdf
​
​

Dusty and glowy asteroid using unity's particle system


Glowing asteroid using custom tessellation and animated shader

Dusty and glowy asteroid using unity's particle system
Asteroid VFX using Unity Particle System
Custom asteroid shaders and VFX to bring life to the asteroids of Kerbal Space Program. Each asteroid has different effects on gameplay, and all the systems work together to create an immersive and creative expansion to the otherwise mundane asteroids in KSP.
​
The particles use Unity's Shuriken particle system with care taken to ensure that the system remains locked to the asteroid despite floating origin updates.
​
​
