Game Development Projects

Gravity Commando Logo PNG.png

Gravity Commando

Overview: A fast-paced gravity swapping FPS with puzzle elements. Submission for MA final year project.

Genre: First Person Shooter 

Role: Programmer, Designer, Environment Artist, Co-Writer

Year: Games MA Year 2

Development Time: 8 months

Mlem Mlem

Overview: Play as a chameleon traversing a dangerous tropical forest. Made in collaboration with Casey Lodge.


Genre: Top-down action adventure

Role: Programmer, Co-Designer

Year: Games MA Year 1

Development Time: 7.5 weeks


Sunday Roast

Overview: A dark comedy game about a family trying to survive a meal together.

Genre: Visual Novel, Management Game

Role: Programmer, Game Designer, Animator

Year: Games MA Year 1

Development Time: 4 weeks

Lonely Frontier

Overview: A relaxed space exploration game. Reach the flag to clear each level.

Genre:  Puzzle, Casual

Role: Programmer, Designer

Year: Games MA Year 1

Development Time: 5.5 Weeks


Workplace Hazard

Overview: It's your first day at Cutting Corp. LLC, try not to slice your coworkers!

Genre: Puzzle, Casual

Role: Programmer, Designer

Year: Games MA Year 1

Development Time: 4.5 Weeks

Octo-Ninja Hachimaru

Overview: Play as Teen Ninja Hachimaru as he & the Octopus Takuro use their powers to save a tycoon's daughter! A game designed and developed by Aisosa Ugiagbe. 

Genre: Action Adventure, Platformer

Role: Programmer

Year: Games MA Year 2

Development Time: 8 Months

Mlem Mlem

Chameleon Character Controller

Mlem Mlem is a top-down action adventure game where you play as a chameleon who uses his tongue both for eating bugs and grappling across gaps.

For this project, I was paired with Casey Lodge, who handled modeling and texturing for the main character and environment while I was in charge of programming the game logic and character controller. 


The basis for the character controller is a concurrent state machine where states can coexist so long that they affect different parts of the Chameleon’s body. There are three of these body parts: Head, Body and Tail, this was conceived to diminish the total number of states allowing for code to be reused.

For example, with this system, the chameleon’s Body can have a moving and an immobile state which is independent of the Head’s state which determines whether the tongue is extended or not. Some states force other body parts to take on new states such as the Grappling state which forces the Body to stay immobile.

Sunday Roast

Events Based Dialogue System

In Sunday Roast, you play as Leona as she attempts to get her family to sit down for a meal together. In this dark comedy visual novel, players must balance the satisfaction and drunkenness level of guests so that all can come out of the dinner alive! 


In order to integrate the management elements of this game, I had to implement a custom dialogue system. Because special events are triggered when characters reach a certain amount of drunkenness of dissatisfaction, a branching dialogue system would have been very ineffective as branches would have to be repeated. 

Therefore, this system is based around a LIFO (Last In First Out) Queue which allows events to be introduced and resolved immediately without disrupting future events.

Workplace Hazard

Concave Mesh Cutting

Workplace Hazard is a casual game which combines cutting mechanics from  Fruit Ninja and the dark comedy of games like Oddworld.

This was made as part of a short MA project focused on developing coding ability. As a result, I chose to focus on the problem of concave mesh cutting in Unity since the targets of the cutting are humanoid.​


The process can be summarized in three steps: convex decomposition, convex mesh cutting and stitching. Because of time constraints, step 1 was not done manually for the model usedThe basic convex algorithm was provided curtesy of David Arayan. In order to reassemble the newly generated pieces, I had to keep track of each convex component's neighbors (components which touch each other) on each side of the cutting plane. The stitching step therefore consists of merging neighbor convex meshes into concave ones.


To improve this method in the future, I could attempt to do Step 1 programmatically at compile time which would result in a mesh-agnostic algorithm.