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

For my masters project I decided I would make an N-Body simulator. However, I wanted to apply this to a game scenario, so I thought it would be an interesting visual demonstration if I could turn the particle simulation into a galaxy which can be explored.

So far, the N-Body simulator supports a raw CPU brute force simulation O(n²), GPU brute force and a Barnes-Hut simulation O(n log n). The procedural universe can currently render a galaxy where flying up to any star will allow you to explore the star system. Furthermore, you can explore the planets up close. The planet renderer is a stripped down version of my procedural planet generation.

The goal is to allow intergalactic exploration and explore different graphics optimisation techniques. Currently the skybox is baked in realtime when you transition into a star system and planet. The arms of galaxies are rendered using many camera facing sprites which fade out on approach, this produces a volumetric effect.

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.

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.

Sumo Digital Rising Star game 2018

The Sumo Digital Rising Star competition, run by Grads in Games, is an annual competition which features different areas of games development. I entered the Rising Star Code, which consists of three stages: The Skills Assessment, The Dev Project and The Interview.

My game, SphereRoll was lucky enough to reach the final stage of the competition. The game was part of The Dev Project stage, where we had to make a game using the Unity Engine.

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