I'm a graduate Unity Game Developer/Programmer currently working on procedural level generation and editor tooling.
I am currently working on a procedural level generation system that builds coherent tile based levels.
Also working on tooling to make the system easy for designers and artists to work with.
Projects
Please click on the tiles to learn more about each project.
Unity Game
Unity Game
Unity Game
Unity Game Work in Progress
Reinforcement Learning in Unity
Machine-Learning in Unity
Web App
Proc-Gen
AR Unity Game
Processing
Unity App
Web Game
Yonder is a tranquil game about delivering packages to your neighbours and helping the community.
I was inspired by certain elements of "Zelda: Wind Waker" and "Animal Crossing"; thinking that I would personally enjoy a game with the simple and relaxed gameplay loop of "Animal Crossing" and travelling by boat. I really enjoyed crafting the world and I plan on eventually expanding upon this idea.
This was created for the "8 Bits to Infinity VimJam" where the theme was "There and Back" and the game had to include collectibles.
This is the second game I have scored myself, unfortunately I was unable to complete more that one track within the Jam's timeframe. With this I decided to go with a quartal harmony (building the chords in fourths) for a dreamy feel; and riffing on the results.
A short top-down shooter game where you fight against an evil tree, burning its roots as you go.
This was a game I made for the Weekly Game Jam 166, where the theme was "Roots".
Track 1 - Main Gameplay
Track 2 - Menu
Track 3 - Boss
Android_505 is a first-person "running simulator" where you play as an android escaping its duties.
At the start of the project I found myself struggling to come up with an idea that would match the theme of "Carpe Diem" well. At that point I decided that I should start with the movement mechanics and allow the game to develop from there. The result ended up focusing heavily on narrative, which is something I rarely get to work on. Overall this project was a huge learning experience, as it forced me to adjust my workflow and think more about story telling as opposed to functionality.
A fast paced first person shooter with randomised elements and permadeath. Currently in early stages of development.
I began working on this after graduation as a passion project with the idea of combining my love for randomisation and fast paced first person shooters.
One mechanic that I very much enjoyed working on was the limb system for enemies- being able to damage each limb individually and having them react with physics.
The biggest thing I have learnt from this project so far, is that with a large complicated project its important to design from the top down, beginning with broad strokes then honing in on the details. I learnt this the hard way by becoming laser focussed on the weapon system- reaching a point where I thought it was finished- later having to refactor it multiple times to work with the new features I was adding.
Features & Mechanics
Rocket Jumping
Exploration
Dynamic Limbs
Physics
This project explores the use of Reinforcement Learning in producing an agent that can react to its environment appropriately.
The Agent was trained to react to certain types of obstacle with the correct animation state in order to avoid collision with said obstacle. This acts as an alternate approach to Finite State Machines for example.
This makes use of the Unity MLAgents package.
Read More
The subject of of undergraduate dissertation- this project explores the use of machine learning as an aid in creating images.
It uses an autoencoder trained on real-world map data to generate satellite style images based on layouts you create.
There were two main steps to this project, the first was developing and training the neural network model, for which I learnt how to use Keras, a Python library that interacts with TensorFlow. The type of model I chose was an Autoencoder, this is a kind of neural network that learns how to both encode and decode an input. By training this on road map images with their sattelite counter-parts as targets, the model is able to interpret images of the former style and produce an approximation of that image in the latter style.
The second step was creating an application that would house this neural network and allow for users to interact with it. This took a lot of experimentation as, at the time there was little up to date information on how to do what I had planned. I used Unity Engine for this.
Want to make some music but lacking inspiration? Use this web app to generate chord progressions in any key or mode you choose.
I decided to make this generator as a way to practice and break out of certain playing habits. It was also a great excuse to learn how to put together a web app using a Web App Manifest, and sharpen up my JavaScript and CSS.
Project Valkyrie is a roguelike with randomised levels and loot.
Developed by a team consisting of my self and 5 others. I was responsible for designing and implementing the procedural mechanics in the game.
I focused mainly on two systems: Level-generation and Item generation. The concept for the levels was that of a labyrinth that the player must navigate to progress. I decided to adapt Prim's algorithm to generate levels using tiles, this way the artist could create different tile-sets that could be swapped out without any change to the code.
Initial Procedural System Plans
Early Prototype
Examples of levels in final prototype (top-down)
For the item generation I took inspiration from games such as "Diablo 2" and "Path of Exile", with items deriving from a base type, then having modifiers added on in the form of affixes. These items had tiers that would dennote rarity and be reflected in the potency of the modifiers.
Nano-Bots is an Augmented Reality puzzle game where you control different kinds of tiny robots with different abilities, built for Android devices.
I focused on character and level design during pre-production, knowing that each character would need a unique silhouette and personality to reflect their abilities, and that these abilities would need to be made evident through gameplay.
Developing an AR game was a unique challenge. Having to consider real world space and scaling in order to support the concept of controlling nano-bots in real-world situations.
This water simulator was created for a prototype physical art intallation, which allowed users to rotate a virtual glass of water using a glove containing a gyroscope.
Within this project I was responsible for the visualisation (this), which I created using the Box2D library in Processing. This was my first time using Processing and Java, and I learnt a lot in the making of it.
The PC parts comparer is a prototype tool that allows users to build a PC by selecting parts and comparing them. The system provides a 3D visualisation for each part as well as an overview of the final system, showing how much each part costs.
As the lead programmer on this project I was responsible for the underlying systems such as shortlisting and item comparison, I also designed the main UI.
This project taught me a lot about working in a team with different roles and articulating my ideas to those with different skillsets.
Final Prototype
Initial Previsualisations
Flow Diagram for System
A game I made for the 2018 "js13k" competition. In this game jam contestants are challenged to create a web based game in under 13kb of space (compressed and minified).
This was my first full web game, built using the barebones "Kontra.js" game engine.
The 13kb limitation was really challenging, it reminded me how important optimisation is for both performance and file size. It was also very satisfying to get the game running on mobile and desktop browsers.