Personal Projects


Load Management (Unreal Engine 4) 2019 – Present

After the Extra Credits Holiday Jam 2018, I wanted to re-create and extend the game that was made using Unreal Engine 4. Although very early in development I have been focusing my efforts in procedural terrain generation. The land masses are made up of triangle segments as shown in the right screenshot below. Then once they’re placed into the world the terrain system I made will rotate and position all the segments into the correct spot, ensuring the islands appear as a continuous land mass.

I am currently working on extending this and using Perlin noise to modify both the placement of the segments and modify their vertices. Then using cube-to-sphere mapping, I wish to project the flat terrain onto a sphere/globe object.

Technologies Used

  • Unreal Engine 4
  • C++

Explosive Profit 2015 – 2016

Explosive Profit is a web game coded with HTML5 and JavaScript using the Phaser IO framework. It can be described as a ‘Clicker’ or ‘Idle’ game in which the player must try to earn as much money as possible in order to unlock bigger and better forms of earning money.

It involves the player trying to generate as must energy as possible by essentially blowing up ‘bombs’. The energy generated is then harnessed to fill up batteries which when filled give the player money. The player can also choose their ethical alignment and either side with holy or unholy powers, these then can be upgraded through the use of research points.

In order to store and manipulate very large numbers within JavaScript I implemented the Big.js library which greatly simplified the task. I also opted to take a modular approach to the code structure. As a result of this, the app was built out of many separate JavaScript files. To optimise these files for web I utilised Grunt to merge and minify them.

Technologies Used

  • JavaScript
  • HTML5
  • Phaser IO
  • Grunt


Polytypic Arts 2014 – 2015

Polytypic Arts is a website I developed that allows users to purchase items from a store. They can also create an account and login which stores their personal details if they wish to make multiple purchases with ease.

It utilises a combination of JavaScript, PHP and SQL to make the website function as intended. All data verification and validation is performed server side and I implemented the bcrypt hashing function to protect the sensitive data from modern attacks.

Technologies Used

  • JavaScript
  • PHP
  • SQL
  • HTML, CSS, JSON


Extended Indicators 2014

Extended Indicators is a simple mod for the game Don’t Starve Together. It’s a quality of life mod that I created in Lua and it modifies how an existing UI element operates. In the game there is a player indicator which informs you of where your teammates are. By default it has a maximum range before the indicator disappears, however I extended it to an unlimited distance. Even though it’s rather simple, it has been subscribed to by more than 500,000 people.

Technologies Used

  • Lua
  • Don’t Starve Together Modding API

AutoMate 2013 – 2014

Automate is a home automation system that was developed by me and a small group of others for a competition run by the Engineering Education Scheme Wales (EESW). Physically it’s a plug that devices can be inserted into, then it communicates with a central hub (Raspberry Pi), which can enable or disable the power of the electronic devices that are connected to it. The user can then wirelessly control the devices through the use of a mobile app.

I was tasked with developing both the server software for the Raspberry Pi and the mobile app. I chose to develop the app using HTML5 with Socket IO in order to communicate with the Raspberry Pi. While the server software was developed in JavaScript using Node.js. In order to physically send a signal to each plug I used RPI-GPIO which meant the server would send a signal to the GPIO pins on the Pi.

Technologies Used

  • JavaScript
  • HTML5
  • Raspberry Pi
  • Node.js
  • Socket IO

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top