Freejam - CardLife
One of the main systems I worked on in CardLife was the building system. In conjunction with a designer and an artist, we developed a system of interlocking pieces to be easily extendable and moddable. I also worked on and developed many other systems including, reworking and optimising the creature AI, player movement, the dynamic flora placement in the world, tree cutting and bush harvesting. I implemented a basic LOD system to handle all of the cardboard models including creatures, flora and buildings as well as working on some internal development tools for exporting models to the cardboard format and an icon exporter for the players inventory.
Freejam - Robocraft
In my time on the Robocraft project, I worked on most aspects of the game. Some of my main responsibilities included reworking and maintaining the weapon systems, implementing the Mech Leg movement part and creating the initial implementation of camera controlled steering. I also implemented the robot painting system as well as the in game surrender system.
Arooga - Pure Slots

During my time at Arooga, I worked on an unreleased Android port of its Pure Slots game on Facebook. This involved researching the available options for Android development and selecting the most appropriate based on the current and proposed future requirements of the project. I also worked on a prototype casino game for the Samsung GearVR.
Fuzzy Flyer
I created a 2D physics based arcade/puzzle game for iOS and Android mobile devices. The game contained 105 levels and a fully developed level designer to allow players to create and submit their own levels. The player can also use 3 unique power-ups to help them complete levels. The game was created using the Cocos2D-x engine and heavily utilised the Box2D physics engine. Parse was used as the games server side backend. Git was used for source control management. The development also included the implementation of analytics using Google Analytics. Facebook login and sharing was also integrated allowing players to backup their current progress to a server. In App Purchases were implemented to allow the players to buy additional power-ups. The game was written primarily in C++ with Objective-C and Java used for integrating Facebook, Parse, Google Analytics and In App Purchases for iOS and Android respectively.
Trinity College Dublin - Masters Dissertation

Character Based Interactive Storytelling for Role Playing Games
My masters dissertation introduces the concept of character based interactive digital storytelling into role playing games through non-player characters that dynamically interact with each other and the player. While traditional games have a mainly linear storyline, the principle behind my project was to create non-player characters with their own goals and motivations, who dynamically choose how to achieve these goals based on their internal personalities and social relationships. This leads to a more dynamic experience for the player.
This is a relatively new concept and was implemented through a personality model, social relationship model and Goal Oriented Action Planning (GOAP). The game was set in a typical small town as found in traditional role playing games. The world consists of characters, including farmers, a sheriff, shopkeepers and a land baron whose dynamically chosen actions shape the course of the game.
The project was implemented using C++ and the Ogre3D rendering engine. I used the GOAP planning algorithm created by Monolith Studios. I selected GOAP from a number of algorithms as it best mimics human reasoning. GOAP is primarily used to control A.I. characters in first-person shooters. However, I took the principle and applied it to role playing games. This enabled the non-player characters to create quests that can be given to the player or undertaken themselves or by other non-player characters.
Institute of Technology Carlow - Undergraduate Thesis
Ultimate Racing
For my undergraduate thesis, I created a 3D PC racing game. This game was controlled with an Xbox 360 controller and allowed the player to race against an A.I. controlled racer or against another player over a network. I integrated the Ogre3D rendering engine with the NVIDIA PhysX physics engine to be used as the core of the game. The vehicles were controlled by applying forces to them with the PhysX engine. I created track and vehicle models using the Blender Animation Tool and I wrote custom A.I. to control the opponent vehicles. This involved setting up waypoints around the track for them to move between and then deciding what actions should be taken between these waypoints. I created the networking aspect of this game from scratch using the Windows Sockets API (Winsock). It allows two players to connect over a network in a client-server style architecture with one player assuming the role of the server. Game information is then serialised and sent and received by both players.
Physics Projects
3D Particle and Rigid Body Simulations
(C++, OpenGL)
These projects involved creating a simulation involving a particle emitter and applying forces to individual particles. A rigid body simulation was also created in which forces are applied to boxes and spheres and where these collide with each other in a realistic manner. This was achieved by implementing the following: gravity force, air resistance, impulse forces, Euler integration algorithm, Runge Kutta 4th Order integration algorithm, broad phase collision detection, narrow phase and contact modelling, collision response.
Cloth Simulation (C++, OpenGL)
This project involved modelling a piece of cloth. The cloth is set up as a network of point masses and springs. The Verlet integration algorithm is used to resolve the spring forces on each point mass. External forces such as gravity and wind are applied to the cloth. Collision detection and resolution was also implemented between the cloth and a sphere. A system of dynamic inverse constraints was also used to resolve springs that exceeded their maximum length.
AI Projects
Artificial Neural Networks for Motion Pattern Recognition in Robocode (Java)
This project was to create a A.I. controlled virtual robot for use within the Robocode simulation environment. Robocode is an open source educational game that allows users to write Java code to control miniature tanks that fight other tanks within a game area. I created an Artificial Neural Network to control the targeting system of my robot to better predict the movement of the target robots. I used an artificial neural network because it's an adaptive system that changes its structure during a learning phase and can be used to find patterns in the movement of the target robots.
Finite State Machine, Pathfinding and Sensing (C#)
This project was to create and implement a framework that could be used to control characters within a game. The test bed for this application was a 2D top down environment built with XNA. A Finite State Machine (FSM) was created to control the behaviours of characters. A messaging system was created to notify agents of events within the game world. Pathfinding was implemented by splitting the game world into a grid and using the A* search algorithm to find the best path between the agent and their goal location. A sensing system was also created and implemented to model an agents sight.

