Procedural UniverseImGuiGoogleTestDirectXC++CMake
Masters Project - In progress
Demo Source

For my masters project, I'm creating a procedural universe where you can explore millions of worlds, from universe scale to planet scale. I've used techniques such as the realtime baking of a skybox to render distant galaxies, and a volumetric effect using lots of camera-facing billboards.

The procedural planets are taken from my 3rd year project where I've modularised them so the planet can be randomised with various components. The components I have so far are: terrain, water, rings and an atmosphere. Every planet is different due to way they're seeded, theoretically there are 263 - 1 (max 64 bit integer) possible unique planets.

Procedural Planet GenerationFastNoiseDirectXC++
3rd Year Project (84%)
Demo Source

My 3rd year project was creating procedurally generated planets. The features include: LOD (level of detail) Terrain, Water, Clouds, Biomes and an Atmosphere. The LOD terrain is based off CLOD (continuous level of detail) and uses six quadtrees to form a cube. This is then mapped to a sphere.

I use 3D Simplex Noise for terrain generation and don't draw any panels beyond the horizon for performance. The terrain is also dynamically lit using shaders. The biomes are generated by using two noise maps, the first is for elevation, the second for moisture. For more details on the project, view the report.

Also, check out the editor I made to play around with the parameters in realtime.

Masters Team Project

This project is a multiplayer medieval real time strategy game. We're using C++ for most of the project and Unreals built in networking for multiplayer. The goal is for players to host their own server (listen server) to play with or against their friends.

So far we've implemented city building mechanics, resource harvesting, troop recruitment and fighting. All of this works over multiplayer, with a menu screen allowing players to host a server. We have weekly playtests to ensure multiplayer is bug free and to decide what to work on next.

Dawn of CivilisationBlueprintsC++Unreal
Personal Team Project

Over summer a friend and I decided to play around with Unreal. We worked on a game where you can control a civilisation with procedurally generated worlds.

Retrospectively, as this was our first time developing using Unreal, the code was not very maintainable and was very improvised. However, we implemented various features including custom navigation for use on a spherical world and a nice, smooth arcball rotation.

Zombie OutbreakUnityC#
Search For A Star game 2020
Play Source

The Search For A Star competition, run by Grads in Games, is an annual competition which features different areas of games development. The competition consists of three stages: The Skills Assessment, The Dev Project and The Interview.

The game was part of The Dev Project stage, where we had to make a game using the Unity Engine. My game, Zombie Outbreak is a Zombie Survival game where you have to harvest resources and build a base to survive the night. You can view all of the submissions here.

Sumo Digital Rising Star game 2018

The Sumo Digital Rising Star competition, is the same as the Search For A Star competition I entered above, except it's for students not yet in their final year of study.

My game, SphereRoll was lucky enough to reach the final stage of the competition. You have to roll a sphere around a level with turrets to reach the goal. As the player, you can shoot at the turrents, but due to the concentration needed to roll around the level, I implemented auto aiming to help out. You can view all of the submissions here.

Uni Assignment - Third year (80%)
Play Source

For the Games for the Internet module we were tasked with creating a game using the Phaser game framework. The theme for the game must be time travel. My game, called Life, is based on the progressive life of a character. Each level is a different stage of life, where the goal is to reach the time machine at the end of each level.

Team Project - Second year (81%)

For the professional skills module I worked in a team with one other member. We could make whatever game we liked so we chose to create a Worms-style game called Ghosts.

We used Unity to create the game. I implemented random terrain generation using 2D perlin noise, and destructive terrain using voxels.

PortfolioNode.jsExpressAmazon AWSTravis CIMaterialise CSSGulp
My portfolio
Play Source

I decided to experiment with devops and new web technologies, therefore, I decided to rewrite my portfolio using Node.js/Express and find a good devops workflow. Using Travis CI for continuous integration, when I push to master it deploys to Amazon AWS and the new changes are live in minutes.

Whilst this probably wasn't worth the time and effort to speed up the overall development of the portfolio for the amount of time I work on it, it was definitely a good learning process which can be reapplied for any future web applications.

Pathfinding VisualiserTL-EngineC++
Uni Assignment - Second year (100%)

The assignment for the 2nd year Games Dev 1 module was to implement the A* search algorithm and visualise it graphically.

After already implementing A* in my personal project I could reuse the code and focus on getting a visualisation working where it shows the open and closed list. The most challenging, but fun part was making the bezier curves.

Hover RacingTL-EngineC++
Uni Assignment - First year (100%)

Our 3rd games assignment was to create a hover car racing game. The hover car can drift and collide with other objects (including AI). You pass various checkpoints each lap (in order). There are multiple AI hover cars which follow waypoints around the circuit. The map was made using a simple map editor I wrote.

Uni Assignment - First year (98%)

The 2nd assignment was to make a 3D version of the classic Frogger game. My version was endless however, so the aim was to beat your highscore. Other features included a Game Menu, moving floating tires which the frog jumps on to cross a lake, and camera animations.

Piano Booking ManagerPHPMySQL
Professional Work

  • Login form
  • Lesson attended screen
  • Manage pupils (new/edit)
  • Calculate earnings for a specific timeframe