DRIVE OR DIE – solo project

Survive the dungeon trials and create custom trails around hells minions as you dodge fireballs, avoid spear attacks and navigate deadly traps in a procedurally generated dungeon!

Beat all the rooms to face off against the dungeons boss, good luck!

You can play/download the game here:

Drive Or Die was my final year submission for my degree. The aim of the final year project was to solo develop a game that showcases our specialism, mine being programming I wanted to design a game that would do exactly that while also challenge myself.

I decided to design the project based on 2 core systems that I wanted to develop, the first being procedural generation and the other being custom mesh generation in real time. I had been playing a lot of Enter the Gungeon around this time and loved the dungeon environment so decided a dungeon crawler would be a great place to start.

I started by creating preset rooms with various doorways in each to give me a base template of how they would intersect with each other. The player would always start in a room with 4 doors, 1 in each direction so that after clearing the starting room they would have complete freedom to choose which direction they began navigating the dungeon.

I then created a system that would hold a list of room presets which could be instantiated upon loading in, the system would check certain parameters and if met, would spawn in a randomised room from the list so long as it is compatible to be linked to the room whose doorway leads into it and the number of rooms decided to populate the dungeon is larger than 0. A secondary system would then run checks to correct any anomalies within the generated dungeon layout such as any doorways on the edges of the map that lead to nowhere.

Dungeon generation during prototype

After placing in model assets I created several material variants for the grounds tiles and then programmed each room to randomly choose between these material variants to create purely randomised aesthetics, I also did this with the materials attached to wall segments. Finally each room would also have a 40% chance to contain trap type tiles, if this 40% is met a system would kick in that randomly picks an amount to be placed in the room up to a maximum of 6 per room, the trap tile type that would spawn in and the randomised location on the floor. Once all that was decided the normal floor tile that was in the trap tiles location would be replaced with the trap tile chosen.

Final Dungeon generation
Starting Room

There are two trap types, Spikes programmed to rise up out of their slots through animation after a timer and Crumble tiles, these will crumble away as the player drives over them revealing a pool of lava underneath.

Spike Trap Tiles
Crumble Tile

After implementing player movement and working on several enemy mechanics I then turned my focus towards the players attack mechanic, the way it works is by use of Object pooling I would relocate the position of points as the trail is drawn behind the player. Each point would then be assigned an integer value in ascending order and when the players collision collides with the trail after drawing a shape the mesh generation system runs.

By getting the integer number of the trail point the player collided with and the last assigned point, any point with an integer value below the collision point is discarded to cut off any trail section that does not help form the shape created.

Once all points are accounted for that form the shape a script that uses an ear clipping algorithm to perform triangulation, once the position of the vertices and which vertices will make up the triangles for the polygon are sorted a mesh is generated and assigned to a mesh renderer object fed back to the scene.

Finally this new mesh can now detect collision within its mesh collider and this creates the players main attack mechanic of trapping enemies inside custom meshes.

To keep gameplay from becoming mundane I programmed some enemies to be invulnerable to damage from the main attack and instead would be destroyed when the player rams their vehicle into them instead.

Mesh generation mechanic
In game footage of main attack mechanic and trap tiles

Starting room



Welcome to Stop n Chop! The answer to how to make chopping vegetables a competitive and fun experience (maybe even a future esport?).​

In Stop N Chop you must use timing in order to chop the cucumbers and tomatoes in order to achieve the highest score while avoiding the chefs hands that become increasingly more and more difficult to avoid as you progress!

This was a solo project and my first mobile release currently available on the Google Play Store found here:

What started off as one of my university modules during the second semester of my first year turned into a fully developed and published app, the goal of this module was to solo design and develop a basic prototype for a mobile game over 10 weeks. I got to work immediately and found I had the prototype for the game finished within the first week. I decided rather than just leave it there and hand it in at the end of the module I would use the extra time to further it’s development.

Prototype during the beginning of the module
The game after deciding to keep developing over the 10 week period

During development I decided that instead of instantly failing the player if they hit the chefs hands when chopping the cucumber or using a generic life system, I decided to create a second mini game that gives the player 1 last shot at redemption, if they manage to chop all 4 tomatoes without hitting any hands the game will continue with their current score. Hitting a hand however will end the play through and log their final score.

I was very happy with how much I managed to get done especially with Stop N Chop being my first real solo project, my first mobile game developed and my first game published! While I was still only a 1st-year student with lots to learn and made many mistakes during development, I was determined to see it through and I still look back on this project and find myself proud.

Crazy Crane – Group Project – Lead Programmer

Crazy Crane is a one button game in which I worked with a team to develop, the goal is to stack buildings from a swinging crane in an attempt to build a tower to a certain height, the crane would frantically swing faster after each stack and if a bird flew into the crane knocking it. Dropping too many building blocks would result in failure.

I had the role of Lead Programmer for this project and designed and created the main mechanics of the game and all of it’s systems.

I started off by prototyping the games crane swinging mechanic by having the magnet of the crane automatically rotate around the crane cockpit until a collider attached to the magnet collided with another collider that ran across the current position of the cranes bar, once collided it would change rotation direction. I then connected the magnet to the cranes holder by using

I then programmed various sized blocks to appear at the magnets position and have them drop upon the player pressing the button on the gamepad we had for this game.

The early stages of Crazy Crane

For the one button aspect of the game we made a makeshift controller that utilises a joystick and a single button, the joystick was for navigating the menu and the button was for the actual gameplay, personally I found it a lot of fun to have a game that uses a different style of hardware for input rather than a traditional mouse and keyboard layout!

It was great to work with a different style of input

I added in crane movement when more blocks are stacked the crane will rise, a life system, camera shake as well as programming the birds that have a random chance to appear and swoop in knocking the crane and increasing it’s speed.

I spent a lot of time working with the artists and implementing models into the scene the way they wanted it to be designed, the Voxel art made a great addition to the wacky nature of the gameplay. Personally I enjoyed the funny looking albeit slightly crazy sun the most so I programmed the sun to always stare at the crane even as it rises to add to the charm.

That sun constantly staring always gets me

Speed Hatcher – group project – lead programmer

Created over five days for a university game jam by a small team in an ode to the incredible theories of 19th century futurism. 

Move back and forth across the screen to catch the falling eggs into your speed hatching machine and watch your score increase as each hatched chicken is yeeted into the fields beyond. Watch out for those rotten ones though!

disclaimer: we do not condone the idea of intensive breeding

Speed Hatcher was the product of a week long game jam in my 2nd year of University, for this game jam rather than a theme each group was given an image of a painting created in the 19th century that depicted what people thought various aspects of life would look like in the future.

Our painting titled: “Intensive Breeding” depicted a lady placing chicken eggs into a machine that seems to accelerate the development process from egg to baby chick, we chose to run with this depiction literally and create a game around birthing chickens through this machine as quickly as possible.

My role in the group was that of the lead programmer, I developed all of the main mechanics of the player as well as gameplay systems such as the timer and scoring system. What started out as a 2D game was eventually moved over to 3D with a fixed camera perspective, I first started on a simple spawning system for the eggs that would randomly instantiate an egg based off a random X offset with a fixed Y position.

Speed Hatcher originally started as a 2D game

After adding in poles to allow more Arcady randomness to the drop point of the eggs I also worked on the scoring system, assigning different egg types to different points, some eggs would award more points than normal eggs and some would take points away if they were rotten!

Encountered a funny bug with too many eggs spawning in from the start

After implementing the player and some environmental models I got to work on making the machine throw out chickens when eggs fall inside, to do this I simply destroyed the egg object, added on a score representative of the type of egg that landed into the machine, instantiated a chicken model and upon start set it’s velocity and a rotation as well as spawn in a puff of smoke particle for added whoosh effect.

Who knew launching chickens would be so satisfying

After placing in all final models I created the timer system and then programmed the large hand on the clock to rotate with the timer to give an in game quirky representation of how much time the player has left. I did some bug fixing and made it so any rotten eggs would not only take away from the player score but also stop them being able to collect eggs for a short period of time as the machine spews out yolk.

The game really had some eggsplosive gameplay

Bac atcha – solo project

What’s this? An isometric arcade shooter with no guns or bullets? No problem! Turn
your biggest threat into your greatest defence as you inhale your enemies and use them
as the ammo to spit back out towards your foes!
Break the chains that hold you and ascend as you give enemies a taste of their own
medicine, they want to push you around? Well for them it’s right “Bac Atcha”!

Bac Atcha was created in my 2nd year of university as part of a 3D modelling module, each student was tasked with designing a 3D level, modelling and texturing the assets, then using them to either make a game or put together an interactive scene to showcase the models, I chose to do the former.

I used Autodesk Maya to model and Adobe Substance Painter to texture.

I knew from the start I wanted to create isometric platform like stages that featured different biome environments on each. the gameplay however started off as this tower defence style game in which the player would shoot bullets at ever approaching enemies that increased the score counter at the bottom. I decided to scrap this due to gameplay causing the player to focus more on the survival of the static tower in the centre drawing attention away from the models and props that would be modelled and laid around the stages.

Bac Atcha early tower defence gameplay

After rethinking the style of game I wanted to make I decided on one that would facilitate the showcasing of the environments and models better while still being fun, instead of being stationary in the centre of the screen the player would now be able to run around the stage allowing the players eyes to see more of the stage as they follow the player around, this also leaves room for stage to have their own modelled centre piece that represented the biome they were in.

I also liked the idea of having the players cannon becoming a cannon like mouth, instead of shooting out bullets it would now suck in enemies which it can then fire back out at others. I decided to do away with the score counter which was another aspect that drew the players attention away from the environment and props so instead of simply being about killing enemies by shooting at them I decided to take this new suck in and fire back mechanic to facilitate the new gameplay loop.

I added knock back to enemies when they had other enemies fired at them and placed 4 chains around the stage edges that were holding it up, by knocking enemies back into these chains the player could break the chains causing the stage to fall and advance to the next. Having chains in each corner also meant that by default the players focus would be drawn to every side of the stage giving more attention to the models and props that were designed for each biome platform.

New core gameplay loop implemented

After adding in further mechanics and systems such as now having the players amount of hits they can take displayed at the top, fixing various bugs and having enemies that are knocked back able to knock back any enemy they they contact creating this domino effect it was time to start modelling.

The Grass biome is the first stage and comes with a very green and
earthy looking platform complete with a grass/leafy textured ground. The stage consists of low poly trees and bushes to fence off the edges of the stage. Every stage comes with a centrepiece to really drive the aesthetic home, for the grass biome I modelled a well and complemented it by creating a “fire fly” particle effect that surrounds it as well as a sun beam coming down on top of it.

The Snow biome is the second stage, it depicts a winter wonderland theme and the stage itself has a light snow texture painted on as well as a trail of footprints to help drive the idea that it is deep snow and not simply a white ground. The modules present include snow covered low poly trees and bushes as well as a low poly igloo. The centrepiece for this stage is a rather handsome snowman complete with a top hat and scarf for extra cool points. To help push the theme I also created a snowing particle effect.

The Lava biome is the third and final stage, once this stage is completed
the levels cycle back through. The stage floor comes with lava cracks textured. The
stage is surrounded by low poly volcanic boulders and the centrepiece for this stage is
an active volcano to give off the theme of a hazardous lava wasteland. I created a lava
spewing particle effect that gives off the idea that the volcano is spewing lava bursts. I
also created an embers particle effect that helps drive the idea that the air is very hot
and dry.

For the enemies I decided to go with a charming little ghost that would chase the player around the stage, they are adorable!


Made for a game jam based on the theme “satisfaction“, OCDone will have you playing various Wario Ware style mini games all themed on emulating moments that bring us satisfaction! 

For this game Jam I took on the role of producer/project manager, the game jam was held at the start of my final year at university and it mixed the new 1st year students, 2nd years and 3rd years into groups.

The idea was to have 2nd years tasked with the bulk of the development while having a 1st year paired up with each 2nd year, this allows the 2nd years to practice their taught skills and allows the 1st years to get a feel for how games are made as well as act as a great ice breaker and form connections with everyone. I myself being the 3rd year were there to oversee the project and guide where possible, being the producer I helped design the project, assign roles to others based on their skills and experience, organise and maintain individual tasks as well as assist those who are struggling.

OCDone was designed to emulate some of the more satisfying things in everyday life, hosting various mini-games that are designed to give the player the most satisfying outcome. Some of the mini-games include:

  • Organising alphabet soup to form a word
  • Popping bubble wrap
  • Finding a pound coin on the floor
  • Logging into the universities submission site and it actually working
  • Having the DVD logo actually hit the corner of the screen

The games themselves are purposefully void of anything that could stop the player from completing the mini-game, while in some games the satisfaction feeling arises from the overcoming of challenge, OCDone is not about the challenge, it’s about that satisfying feeling you get from the little things in life, the times when your day is just going the way you want it to and nothing is fighting you to stop it.