Game Jams

Risky Rain (Unity/C#) | Ludem Dare 44

26-29 April 2019. First Ludem Dare game jam, theme is "Your life is currency".

Idea: Third person shooter, player health decays over time. Player can spend health at a shop for upgrades and special ammo, player heals when killing an enemy

Global Game Jam 2017 (Unity/C#)

I took part in the Global Game Jam 2017 at City, University of London. This year the theme was “waves” and with a team of 5, we created a game where the player manipulates gravity waves in space to navigate the spaceship to the goal.

I was in charge of programming the backend of the game in Unity(C#). The whole project was done within 48 hours. We ran into a couple of issues, some team members were working slowly and not speaking up about problems until asked. As a team we worked together to solve the issues, and managed to complete a demo of the game to present.


Tetris (MonoGame/C#)

Completed in 3 days, this is a tetris clone created using MonoGame(C#) to practice my game programming. I decided to do Tetris because it is a favourite of mine, and I didn't have a game idea to work on. It only makes use of one square texture I created in Inkscape to create the tetriminos.


  • Random Bag implementation for fair distribution of tetriminos
  • Speed increases as lines get cleared
  • Ability to Hold tetrimino for future use
  • Next and held tetrimino is displayed


  • Left/Right arrow keys to move left/right, hold for faster movement
  • Up arrow key to rotate 90 degrees clockwise
  • Down arrow key to Soft Drop
  • Space to Hard Drop
  • "C" to hold a tetrimino

Snake (MonoGame/C#)

A quick and simple clone of the popular game "Snake" done on a plane journey.

Arrow keys to move

University Projects

Automatic Generation of High-Quality Time Slice Images


A time slice image is a time-lapse video condensed into a single image. Because of all the manual slicing and arranging, they take a lot of time and effort to produce.

In this project, an algorithm has been created that automates the creation of a time slice image from a time-lapse video. User feedback is collected from time slice images created with random parameters, using source time-lapses from YouTube. The data is then used to threshold the images, which are then used with features collected from the input videos to generate a Random Forest model for each parameter. We can extract features from a new video, put those into the Random Forest models and it will return time slice parameters that are most suitable for it.

Cursed Hunters: A 2D Side-Scrolling Fighter (XNA | C#)

The idea was to create a game while separating game engine code from other game code.

I decided to create a side scrolling fighter, somewhat similar to "Final Fight" by Capcom (December 1989).

Driving Game (OpenGL4.0 & FMOD | C++)

A driving game created using OpenGL4.0 with shaders. Audio is implemented using FMOD.

The "Figure-8" track was generated using Catmull-Rom splines using 16 control points.

Boids Flocking Algorithm (Bullet Physics Engine | C++)

This is an implementation of the boids flocking algorithm using the Bullet Physics Engine.

Both the boids and obstacles have a random starting position, and would eventually flock and follow the "leader", which is just the boid that can't "see" any other boid".


iOS Game

My first iOS app using Swift. While trying to learn the language, I made a simple game with SpriteKit where the player has to tap as many green circles as possible while avoiding the red ones within a set time.

Completed on 18/10/2016.

Discord Music Bot

My first try at Node.js. I used the discord Node.js API to create this simple bot for a discord channel I share with friends.

Detects chat commands and displays relevant outputs, can play back music from specific folders.

Freelance: HomeHunter (Property Website)

This project was to create an online property agent that allows end users to bypass property agents when they want to list their property for sale on Zoopla and RightMove.

I was responsible mostly for the back-end of the system (PHP and MySQL Database), but the front-end people were having trouble so we helped out with some javascript too.

Most of it is complete but it was put on hold by the client due legal issues when laws have been changed. We have no idea if or when the project will be resumed.

The project has been taken off the site. I have re-hosted the main page, link below. No other part of the site will function without database access, so all links have been disabled.

Project put on hold: August 2015