Procedural Caves
Developer and experienced IT professional with a Master's in Computer Games Technology (Distinction)
from Abertay University and an Honours degree in Computer Science. Over 10 years in IT Operations,
specialising in automation across diverse technologies. Strong teamwork and communication skills,
with a passion for continuous learning.
Not currently seeking employment.
Abertay University
MSc Computer Games Technology ( – )
Grade: Distinction
Notable modules and grades:
Heriot-Watt University
BSc Hons Computer Science ( – )
Grade: 2:1
Procedural Caves
As part of a dissertation project, a tool was developed within Unity to procedurally generate 3D caves containing stalagmites and stalactites using cellular automata and isosurface algorithms.
The tool works by evolving a cellular automaton over a number of generations using multithreaded execution to produce a 3D grid of values that is then polygonised by a marching cubes or dual contouring algorithm, and rendered using custom shaders.
Features:
Viva Las Mages
Cover artwork by artstation.com/ockopus
As the lead programmer and co-designer in a team of 7 (consisting of artists, designers and an audio specialist), developed a vertical slice of a game over 12 weeks based on a novel concept featuring dungeon exploration, card playing, and risk-reward mechanics.
The end product has a playtime of around 25 minutes and contains components such as an interaction system, inventory management, first-person movement, a poker-based card game with unique rules, a merchant shop, and slot machines.
Main contributions:
Terrain Generation
A C++ application was developed in a DirectX 11 framework that enables the procedural generation of terrain using a recursive implementation of the midpoint displacement (diamon-square) algorithm, sine and cosine waves and random height values.
Post-processing filters - grayscale, gaussian blur, bloom and vignette - were also implemented using shader programming.
A simple shooting mechanic for destorying animated floating orbs (achieved via Perlin noise-based vertex displacement and propagation of sine waves applied to sphere models) using ray-sphere and sphere-sphere intersection tests was added.
The terrain is able to be modified via user-defined tiling, amplitude and roughness parameters.
Features:
Reinforcement Learning Snake
A C++ application was developed, leveraging the SDL library, that applies a Q-learning reinforcement learning algorithm to a Snake-type game.
Reinforcement learning is a machine learning paradigm that involves training an agent by rewarding the actions it takes, chosen based on the current state of its environment, with the goal of the agent being to maximise its cumulative reward.
Q-learning is an iterative solution that finds the optimal policy for agent behaviour that yields the greatest reward by factoring both current rewards and potential future rewards into an agent's decision making.
Features:
Client-server Pong
A version of the classic game Pong was implemented in C++, leveraging the SDL library and SFML API (for network functionality), that can be played over a network.
A server computes the position of the ball and sends position updates to clients using UDP. Clients send their paddle positions to the server which forwards them to the opponent client, also using UDP. Session initialisation traffic and score updates are sent using TCP. The application is able to handle client disconnections and reconnections.
Prediction and interpolation are used for the ball (client side) and paddles (client and server side) to reduce network traffic and to enhance the player experience by reducing jarring movement during periods of suboptimal network conditions, such as latency, packet loss and out of order delivery.
Features:
Graphics Programming
An explorable scene featuring a snow-covered landscape and an animated bonfire was created with C++ in a DirectX 11 framework, making use of matrix transformations, shader programming, textures and public domain models.
Features: