About Me and What you'll find here

I started studying programming at Staffordshire University way back in 2021. As of this May I have completed my course, and here you can find noteworthy projects I've worked on during that time. This page is being updated regularly, check back for new stuff!

Binding Of Isaac style dungeon layout generator

In my second year the optional module I took was Tools Development, where I got to choose a tool to create. Having been interested in Procedural Content Generation (PCG) prior to this, this seemed like a good time to have a first go at it. The tool was created for Unity and allows the user to decide under what conditions a room should be generated in a tile depending on other nearby tiles. This is somewhat similar to Cellular Automata, but importantly does not iterate over the whole grid n amount of times.

Check the Github Repo

AI (not LLMs!)

Alongside PCG, AI has long been a fascination of mine. My first attempt at it was at the back end of foundation year, where as part of my first Unity project I implemented an incredibly janky pathfinding 'algorithm'. This project, however, includes an adversarial chess AI, a Goal-Oriented Action Planning (GOAP) AI for a game made specifically for the Advanced AI module, and a Genetic Algorithm (GA) AI for another. This module was one of my favourites, if not my favourite to work on.

Check the Github Repo

Low Level Programming and Optimisation

The main part of my third year's first module was to optimise the compute time and memory load of a simple physics simulation framework written for the module. This was another module I looked forward to, and though it wasn't what I expected I still enjoyed the problem solving aspect of it. Implementing changes and seeing the program run noticeably smoother was satisfying every time, and seeing the time taken to generate frames tickled my numbers-go-up itch. The project includes a quadtree-like algorithm where colliders in the scene are split into segments, with the user being able to change how many segments are present during runtime.

Check the Github Repo

2D Dungeon Generation

Inspired by my work in Tools Development, for my final year project I produced a Unity application that can generate 2D dungeon levels consisting of walls and floor, with the intention of measuring the time taken to generate levels per generation method. The one I find most fascinating is Cellular Automata, an algorithm that determines whether a given cell should be alive or dead depending on how many of its neighbour cells are alive. This simple ruleset produces complex results like that seen in Conway's Game of Life, where the cells' states are iterated indefinitely on a timer, producing emergent behaviours imitating basic lifeforms. By setting the iteration count to a low value of around 3-10 it is possible to create cave-like structures, or more maze-like or labyrinthine levels depending on the parameters set.

This is a project I intend on adding to over time. Specifically I would like to explore L-Systems - a type of formal grammar where a given set of characters (representing instructions) is iterated on based on a ruleset - which has been used to generate dungeons, trees, and whole cities.

Check the Github Repo