Unity

Viewfinder

Details


Project Type: Porting

Role: Senior Programmer

Team: 1 Senior Programmer, 1 Lead Programmer, 1 Senior QA

About


I played key role in porting Viewfinder to PS5 & PS4. For most of the project I was the sole programmer working on the PS5 version while the lead programmer on the project worked on the PS4 version. Once the PS5 port was done I also worked on the PS4 version of the game.

While working on the PS5 Port I was tasked with designing and implementing many of the PS5 Controller Features. This included designing and creating the haptic vibrations played by the controller as well as implementing other controller features.

A big part of the project involved implementing much of the platform specific functionality like serialisation, controller management, user management, platform dialogs and much more.

Another big part of my role on the project was working very closely with QA to make sure that the game met all the TRCs so that it could pass console certification.

The game was released on 18th July 2023.

Hellboy Web Of Wyrd

Details


Project Type: Porting

Role: Senior Programmer

Team: 2 Programmer, 2 Senior Programmer, 1 Lead Programmer, 1 QA, 2 Senior QA

About


I worked as a key member of the team porting Hellboy Web of Wyrd to PS5, PS4, Switch, Xbox Series X|S and Xbox One. During the project I worked closely with the other programmers to establish a framework for porting so that we could share work where appropriate across all platforms as well as other projects. This enabled us to much more easily develop platform specific and platform agnostic features that could easily be used across different platforms and different porting projects.

A big part of the project involved implementing much of the platform specific functionality like serialisation, controller management, user management, platform dialogs and much more.

One of my focuses on the project was optimising the game so it could better run on the lower end platforms and meet performance targets.

Another big part of my role on the project was working very closely with QA to make sure that the game met all the TRCs so that it could pass console certification.

The game is due to be released on 4th October 2023

Distant Kingdoms

Details


Programming Language: C#

Engine: Unity

Project Type: Own IP Development

Role: Programmer

Team: 5 Programmers, 4 Artists, 3 Designers , 1 QA, 1 Producer and several contractors for Animation, Sound and UI.

About


Distant Kingdoms is a fantasy city builder game on PC that I worked on as a Programmer, it was published by Kasedo.

For this project I was initially a Junior programmer but was then promoted to Programmer, I had multitude of roles and responsibilities that spanned the entirety of the code-base but primarily I handled a large portion of the gameplay mechanics implementation.

The game released into early access on May 5th 2021

 

Dungeon Generator

Video


Details


Programming Language: C#

Engine: Unity

Project Type: Personal Project.

Technical Features


Separating Axis Theorem Based Room Placement

The dungeon rooms are initially placed by randomly spawning them inside a radius. This results in a lot of overlapping squares, Separating Axis Theorem is then used to detect which squares are overlapping. The squares are then moved outward from the overlapped squares until they are no longer overlapping, similarity to how a lot of physics based collision systems work. So Separating Axis Theorem is in this case quite literally used to separate the dungeon rooms.

Delaunay Triangulation

Now that the rooms have been placed they need to be connected. A great to connect a large volume of points is triangulation. Delaunay triangulation is a form of triangulation that results in the points being triangulated in such a way that no point is inside a triangle. This is ideal for dungeons as that means we wont have any crazy overlapping or strange long connections.

Urquhart Graph

Once the rooms have all been connected we don’t need every single connection so you want to construct a planer graph for a more balanced amount of connections. There are lots of different planar graphs that can be used but i chose the Urquhart graph due its simplicity and elegance.  How it works is you go through all the triangles and simply remove the longest side. This results in a very pleasing and effective set of coordinates.

About


In this project I created a procedural dungeon generator by combining several different algorithms. You start by randomly placing a set amount of rectangles in a defined radius. You then separate out the rectangles so none are overlapping using Separating Axis Theorem. Once you have all the rooms placed you connect them up using Delaunnay Triangulation. This results in a nice set of triangles but we don’t need that many connections, we need to make a more dungeon like layout which i do here by using a Urquhart graph to get a very dungeon-y lay out of paths. We now have all the data we need, we just have to construct it. So we take the rooms and replace the inner areaswith floor tiles and the outer areas with wall tiles, we then can replace connection lines with corridor tiles and then finally we have a dungeon.

This system will hopefully be fleshed out further in the future with the addition of a random interior to the dungeon rooms with multiple kinds of tiles.

Netherspoons

Video


Details


Programming Language: C#.

Engine: Unity.

Project Type: Game Jam.

Role: Programmer.

Team: 1 programmer, 1 Artist, 1 Sound Engineer.

Technical Features


Beer Pouring Mechanic

The pouring of the beer works by holding down a game pad’s trigger and you will pour a beer into a cup, if you release the trigger you drop the bear. You can hold two beers at once, one in each hand, which corresponds directly to your left and right trigger.

Robust Settings System

All the settings and game values are controlled through a settings system accessed in unity’s inspector, this allowed for all the games elements to be easily tweaked and controlled. This was everything from goblin spawn rate to beer pour time, right down to the points gained for different actions. This was done so during the game jam anyone on the team could change game elements if they wanted and didn’t need me to directly change the code, saving us a lot of time.

Procedural Goblins

To add a bit of variety in stead of just creating a few different goblins I asked the artist for several goblin parts per body art that were interchangeable. This meant that i could create a system that would spawn a goblin made up of different random parts that also had their colour randomly selected from a defined range of hues that would be appropriate to the type of body part or item of clothing.

About


At the 2019 Global game jam i went in as a team of three, one programmer, one artist and one sound engineer. We decided we wanted to make a small single mechanic game for the game jam to try and actually get everything we wanted done within the 48 hours we had.  We landed on a game about a retired wizard running a pub for goblins, initially we wanted for there to be more involved in running the pub but we decided to stick to just serving them beer to keep the game simple. How the game works is a goblin comes in and ask for a certain type of beer that is colour coded, you then need to pour the beer from the correct barrel with either your left or right trigger and bring the beer to the goblins table. you can hold two beers at once independently pouring with your left and right triggers, if you let go of the trigger while holding a beer in the corresponding hand you will drop the beer. you need to break even my the end of the day and you lose the game if you run out of money. this simple mechanic and lose state ended up being both a lot of fun to make and play and was one of the most successful game jams i’ve been a part of.

2D Water Simulation

Gif


Details


Programming Language: C#

Engine: Unity

Project Type: Personal Project.

 

Technical Features


Cellular Automata Based Water

Cellular Automata works by each cell looking at its neighbors and reacting to the neighboring cells based on a rule set.  What you see in the gif above is the cells behaving like water due to a rule set that makes them avoid each other and objects with a preference for heading downward simulating gravity.

About


A simple experiment to see if i could make a Terraria style water simulation using Cellular Autoamta.

TrainsMission

Video


Details


Programming Language: C#

Engine: Unity

Project Type: Game Jam

Role: Lead Programmer.

Team: 2 Programmers and 1 Artist.

Technical Features


Procedural Generation

Most of the game is procedurally generated. The placement of the stations as well as the train lines are completely random so the game is different each time you play. It also randomly names the stations from a list of station names that is loaded in from a text file.

Splines

To connect up the the stations after they are generated I created a spline system to act as the tracks that the trains could follow.

About


Trains mission was my submission to the Grads in Games Competition “Search for a Star”. The game started out as a game jam game created at the 2018 Global Game Jam. make this game was a great experience and I really liked the game idea so me and the artist(Molly McCarthy) who also worked on it kept developing it after the jam. It soon became better then what the search for a star game I had been working on so I kept working on and it became my search for a star game. The game consists of a procedurally generated subway system that the player has to make their way through to a certain station. After search for a star me and the artist have continued to improve and polish it with the intention of possibly releasing it fully on Itch once its good enough.

Search For A Star

Global Game Jam Page

GitHub (Most Recent Version)