My Projects



Cloud Imperium Games - Star Citizen

2014 - Present

Currently I am working on the most funded crowdfunder project ever - Star Citizen.

Star Citizen is a massive undertaking, a giant persistent sci-fi universe where players can take up a multitude of different roles. My work specifically has been working in the Manchester studio of CIG, Foundry 42, where I have mostly been working on the Arena Commander module. This is the dogfighting component of the game in which players can fight other players online and AI opponents in a space combat arena to test out the flight and combat mechanics in the early stages of the game's development. The game is extremely detailed, both in terms of graphical fidelity and the simulation of gameplay systems and physics.




TT Fusion - LEGO Games

2012 - 2014

During my time at TT Fusion as a gameplay programmer, I worked on 3 games in the popular LEGO franchise, for Nintendo 3DS, DS and PS Vita. This involved working with designers making a wide variety of fun gameplay mechanics, enemy types and encounters.

Personal Projects

Bonkadonk

Fight to be the Last Ball Rolling in Bonkadonk, a 2-4 player competitive ball bashing game.
With a variety of abilities and powerups available to players, Bonkadonk is an
easy to learn but hard to master competive game.

This is a game I have been working on for about half a year now in my spare time. The game is made in Unity and features both local and online multiplayer. Bonkadonk is a physics driven multiplayer game in which each player controls a marble. Players will want to hit off the other players out of the game arena, while trying to avoid them being knocked off themselves.






Tempus Fugit - Asylum Jam Entry


An entry into the 48 hour Asyjum Jam, a game jam focused on creating innovative horror games.
Tempus Fugit is an experimental game in which you have to escape from a monster who's only presence is that it slows down time around it.

Made in Unity.



Starnauts 2D Unity Project

This was a test project I did trying out Unity's 2D toolset. I created a tile based level system which can load in level files created in an external editor and prototyped various character movement abilities.
Artwork from Adam Atomic.

Mind of Molyneux - Molyjam Entry


An entry into the 48 hour Molyjam game jam, in which games had to be themed around a quote from game developer Peter Molyneux. Made in Unity.

Have you ever wondered what it is like inside the mind of Peter Molyneux? In the "Mind of Molyneux" we explore the madness that lies within. Try to tame the inspiration within the Mind of Molyneux and create brilliant ideas at the right time. Make sure to make enough so that Molyneux's game projects are as great as they deserve to be! Features ambient Molyneux-chill background music. Feed Peter's creativity (madness.) Features actual Peter Molyneux quotes, and hundreds extra procedurally generated Molyneux quotes.


Untitled Heist Game (WIP)

My most recent project is an experiment in asymmetrical social cooperative gameplay. The game is currently still in active development. In the game there are 3 players who all fill different roles as they try and break into a building and get out with the goods. The roles all have completely different gameplay experiences and all rely on communication with their team-mates to succeed. 

The first role is the player who oversees the whole operation and has a view that looks like this.


The second role is the operative on the ground who has to get in and get the goods with the support of their team.


The final role is that of the hacker, who has to hack into the security systems of the corporation to unlock doors for the operatives, shut down cameras and generally make sure the operative can proceed and isn't caught during the operation.


All of these roles work together in unison, where each job is essential and requires constant communication with the other players if players are to succeed. For example the operative on the ground relies on the overwatch player to be given instructions on where to go and when the area is clear.

The game is being created in Unity and is my first major project using the engine. It is currently in the prototype stage but has fully functional networked multiplayer for all of the 3 classes.

Tube World

An extension of the openFramewrks engine that I started with Mini Hexagon (see below) this project turned into a full 3D world with a focus on the player being able to fly through tubes. Development reached a point where there was a fully functional rudimentary in-engine level editor, where you could place new objects, move, scale and rotate them.


Mini Hexagon

After getting slightly addicted to Terry Cavanagh’s Super Hexagon, I decided to try to replicate the look of the game as a way of learning the openFrameworks toolkit. The result was a pretty simplistic recreation of the Hexagon look without any of the gameplay. This also has the first iteration of a command line interface for various functions and debug variables that can be modified during runtime which was further developed in Tube World. 


Tile World


This was the follow up to my 3D terrain generation in OpenGL: A 2D split-screen real-time combat game with procedurally generated worlds and destructible terrain. The game supports two players and has controller support for the Xbox 360 controller.


Astro Junk


This is a Java game I made over a couple of weeks that was one of my first attempts to make a fully featured game. It was made using the Slick 2D game engine.


Features include:
  • Saving / Loading
  • Ship combat
  • Resource collection
  • Configurable controls
  • Health / Fuel / Weapon overheat mechanics
  • Fully functional menu
  • In-game radar




This is a game that I started working on about a month ago and I have been working on it for about half of that time. I did all of the programming and Clarissa provided a lot of the artwork for the game. The game is now in a state that I am happy to release and is something that can be played! Astro Junk is a more expanded version of the classic game Asteroids with the controls designed to invoke the classic Asteroids feel. However the main difference is that the asteroids drop resources when destroyed, which allow the player to purchase new upgrades when the player returns the base.

Procedural Terrain Generation



This project involved investigating how to generate procedural terrain and how to render this using OpenGL. The code was written in C++ and used OpenGL for graphics and SDL for input/output.


Terrain is procedurally generated and is constantly updated as the user moves around the world, dynamically removing and adding terrain segments allowing the user lots of terrain to explore.


Terrain colouring is also used to provide variation in the terrain, low altitude sand appears, and on cliff edges a darker rock colour is present. Textures are used to add additional detail.

The code and binaries for this project are available on google code.

Anaconda

This is a snake based game that I originally started working on back in 2008/09 as a way to learn C++. I have recently gone back and tidied up the code as much as possible and lots of improvements. The code is still pretty messy, but it still manages to make a fun game for multiple people. (Local multiplayer only I'm afraid...)


The game is a basically a multiplayer snake-like game, but with complete freedom of movement. It is mostly inspired by the Anaconda mini-game that was included as part of Timesplitters 2, but this version expands and improves on the original version.


Source code and binaries forthcoming...

StarCraft - Brood War AI

For my undergraduate final year project at the University of Bath I developed an AI for the real-time-strategy game StarCraft - Brood War. The AI made use of the development methodology and tools of Behaviour Oriented Design which was created by my project supervisor Dr. Bryson.



The project involved creating an array of different behaviour modules which were created in Java, which were then connected to the BOD action selection mechanism POSH. I created a POSH action plan which tells the AI when to perform the exhibit the different behaviours.

The AI was competent enough to be competitive against other AIs, including the official Blizzard AI that came with the original game.

The code is available on the ABODE project page, as well as detailed instructions on how to run it are available here.


ABODE

(Repository)

ABODE was a tool that I used extensively during my final year project (see above). Due to the knowledge I gained from doing my project, I ended up working with a Ph.D. student at the University for a couple of weeks further improving the ABODE software.



The work mostly involved vastly improving the usability of the software. A lot of time was spent fixing the problems I discovered during my previous time using the software. The project is available on google code here.

Ray-Tracing

As part of the Advanced Computer Graphics course I took at the University of Bath, I developed a ray-tracer written in Python. This made use of NumPy for linear algebra functionality.


The ray-tracer worked with a single light source and featured reflection, refraction and shadow casting.