Projects


Written Articles






Other Projects




Fighting AIs

October 2022

Teaching reinforcement learning agents to fight, in a vaguely MMA style.

The agents are given inputs based on their environment; the positions, velocities and accelerations of all of their and their opponent's limbs. The goal is to hit the opponent hard, and not get hit themselves, with greater weightings to hits involving the head. Interestingly, they seem to favour a clinch-style position.

I wrote the entire reinforcement learning architecture completely from the ground up, in C#. Each "agent" has roughly 10k trainable parameters in a dense network structure. I would love to try this project again, but with a proper ML library like PyTorch or Tensorflow. It would also be interesting to give the agents "eyes" and use convolutional network to process the vision as part of it, which could be affected by taking damage from the opponent.





Slime Mould Simulation

May 2023

A GPU-based simulation on the growth of slime mould with spore exploration. It also has support for object interaction, so can be placed in a maze - although they are not very good at solving them.

100,000 spores are initialised in a circle, which move with a nearby messaging system; cells are formed as surface area is minimised but overall spread is favourably wide. In real organisms, this means that a large area can be searched for food with a minimal amount of matter.

Inspired by Sebastian Lague's excellent video.





Beat The Tube

March 2020

A 2D game about building and driving a car across rough train to beat a tube train, which races between platforms beneath you.

The user is given the choice of several different chassis, engines and tyres, which all have unique characteristics - a more powerful engine has higher top speeds, but is heavy may be impossible to control on a lightweight body. There are 210 possible combinations.

Beat The Tube was nominated for Bafta's Young Game Designer award in 2020.