Find code for most of my projects over on my GitHub

Visual/Interactive Projects


Watch some Gifs of my creative coding projects! (Most of these projects have accompanying videos).
The projects displayed in this section are all created using Processing, a language built on Java purpose built for creating generative and interactive art and "sketches". I thouroughly enjoy creating these pieces as it allows me to easily visualise algorithms and acts as an output for my creative side!

Unexpected Orcs


Unexpected Orcs is an in-development Action RPG with roguelike elements. It is the spiritual successor to the unreleased flash game of the same name created by the same team in circa 2010.

Digital Deck Builder

(Honours thesis project)
Download Thesis


The purpose of this project was to create a software system that allowed users to play Deck Building games (a genre of tabletop card game) in an online environment. The project required the system to be flexible and able to play new games with minimum effort. Prior to this project, all Digital Deck Builder implementations (deck building games played virtually) allowed users to play only a single deck building game. This project addresses this limitation by creating a generic deck building environment that can play a variety of deck building games. Three games were implemented as part of the project to demonstrate the system’s functionality. These games are Dominion, Ascension: Valley of the Ancients, and Caveman.

The project was made possible by the fact that deck builders share a few commonalities. The structure of players card decks, basic game mechanics (such as purchasing and playing cards), and game setup are all similar among the games within the genre.

As the games are to be played online, a web-based solution was created. Both the front-end and back-end were programmed using the JavaScript language. In order to create the backend functionality, node.js was used to run JavaScript outside of a browser environment, while (a web socket implementation) handled communications to and from the clients. The front-end used P5.js, a basic graphics library, to render the games in-browser.

Adding a game to the system is a case of creating two files and adding them to the system’s configuration file. Firstly, a JavaScript Object Notation (JSON) configuration file, holding the game’s basic information (such as cards, player statistics and starting decks) is required, as is a JavaScript custom functionality file. This holds the end-game condition as well as describing any cards whose functionality is not already built into the system and is too complex to be handled by JSON.

The resulting system has a few limitations; however, it fills the requirements set out by the project. Most notably, the completed system can:

Future versions of the system could include features such as player log-in and improved visuals, however the system is currently ready to play.