phone +(44) 7542909753

About Me

Hi, I am a 35 year old programmer from Ireland. I am an enthusiastic C/C++ software engineer with an excellent academic background always looking to expand my skills in a challenging team atmosphere working on current edge technology. I am analytical and methodical with strong problem solving skills and an ability to quickly learn and apply technical expertise.

Awards and achievements

Work Experience

Football Superstars

At the time of writing I have just started working on Football Superstars with some of the guys I used to work with at BGS. The project is an exciting one, the game has bucketloads of potential and once we get to grips with the extensive codebase the game is destined for big things. I'm on the team as a game developer although I expect to working primarily as a UI programmer, something that I've missed on SingStar Dance. Stay tuned for more updates!

Previous experience

SingStar Dance

I worked with Sony from January 2010 until September 2010. During this time I worked as a gameplay programmer on the core dance gameplay from the R&D stage to master submission of the disc. I developed a prototype R&D dance system evaluating the AI LiveMove gesture recognition on the PS3 platform using the new PS Move technology. Once the project was greenlit I integrated the prototype system into the SingStar codebase. I worked with the content creation team to develop a way of marking up dance routines and score them in-game.

I developed the system to score dances including gesture recognition, the different scoring modes and the markup of the dances. As part of the content creation I developed several facilities including dance recording & playback and debug UI feedback for the content creators to allow them debug their marked up dances. I also assisted in developing several UI components such as the off-camera display and the scoring displays. At time of writing the game has yet to go through format QA but based on feedback from E3 and Gamescon it promises to be a highly successful title.

During my job at Sony I learnt all about the challenges in developing for the PS3, PS3 libraries all using C++ and a bit about gesture recognition.

Championship Manager

I am worked as a Front End GUI Programmer with Beautiful Games Studio in Wimbledon, London. I was part of the Front End team from October 2008 until January 2009. During this time I have helped architect structural changes to the Front End including developing a model-view controller based component system, back end bridge and optimised Front End loading and reloading. I was also responsible for several crucial screens in the game (Tactics, match day, player suites along with the main squad and squad fixtures screens).

All development work was highly critical both in terms of quality and performance as the results of all work undertaken had serious implications in what end-users saw and interacted with in the game.

At this job I have been primarily working with C++, STL and XML within the confines of the custom Front End system for the game.

For more information about my role at Championship Manager at BGS see my Champ Man page.


Before BGS I was working with Learnosity Australia as a voice and web developer. Working mostly with ColdFusion, PHP and Asterisk PBX. My main roles were:

UI Experience

I've worked on the UI for 2 commercial game titles. I worked extensively on the UI at Championship Manager and while my experience at SingStar was primarily in gameplay I did develop several UI components for the game.

AI Experience

Before starting with BGS my primary focus in games was in AI.

I have used various AI techniques in my demo work, for my first game Revelations, a first-person shooter, I developed a finite state machine, simple decision making and basic pathfinding solution for the AI.

Abertay coursework

As part of coursework for the MSc in Abertay, I created a simple 2D game that used Fuzzy Logic and Genetic Algorithms to land a spacecraft. The fuzzy logic controller for the game alters the thruster force being applied to the spaceship to land it safely below a certain velocity. The genetic algorithm creates populations of spaceship actions (i.e. thruster direction and force magnitude), simulates applying them to the spaceship and through mutation and reproduction creates candidates that land the spaceship by applying the correct sequence of actions. By evolution and mutation a solution is (generally) found that lands the spaceship.

      For a group project, I implemented the AI for a Lego RTS game. This involved developing an overall master AI to control the building and strategy manager, group AI logic to control the behaviour of groups of units in a way that mimics a real-world command structure. Individual AI for units was done using a simple finite state machine. I also created an influence map which the Master AI reads and uses to direct groups of units. I also helped develop the pathfinding for the individual and groups of units using A*.

      As part of the DirectX module in Abertay I created a racing game that involved AI opponents. The AI races around the track following one of two racing lines while also targetting and firing rockets at other opponents. The AI for this game involved finding a way of representing a track to an AI oppponent and developing a system for them to follow it while also targetting pickups in the process. AI followed a scripted path around the track but would also react to actions taken by the user and alter their direction and actions based on this. The targetting of the player uses raycasting to determine which opponent is in sight before eventually firing.

MSc thesis

      My Masters thesis was influenced by the AI of F.E.A.R. and the work of Jeff Orkin. F.E.A.R. won various awards for the AI in the game and utilised a technique known as Goal Oriented Action Planning(GOAP). The basic idea of GOAP was that an agent has a collections of actions and a set of goals. Given a specific goal the agent would find a solution by chaining actions together using A*. Actions are given a cost so that A* can decide the cost of a particular route and determine the cheapest way to arrive at the goal. Each action has a precondition and an effect. If a particular action's precondition wasn't satisfied then the algorithm would look at other actions available and try and find an action whose effect that would bring the agent closer to the goal. By chain them together the agent could form a plan (e.g. find ammo, reload, attack) . All the agent would need to do was to monitor its goal and check if it has become invalidated. If so then the agent may need to replan for a new goal.

As part of my MSc I created my own GOAP system that used A* for both planning and for navigation. The dissertation involved developing a GOAP and finite state machine system and was placed in a game scenario where experiments were carried out between the two. Comparisons were made on three levels, the first was based on the results of simulations in Domination, Capture the Flag, Deathmatch and Last Man Standing modes. The second comparison examined the two systems from a technical perspective and investigated how each system performed from a memory management, CPU usage and efficiency standpoint. The final comparison considers the merits of the two systems with respect to ease of management, flexibility and re-usability.

You can find the source, thesis and executable can be found in the Downloads section of the site.

Other Experience

Interests and hobbies

For further information about me, please see my games or non-games CV.

Games CV

Non-Games CV


I've had an article published by about a college project I participate in called Blok Wars, have a look

Gamasutra mentioned the article, a first for me getting mentioned on their site! Link

Latest blog posts

Project Image

The game above is a futuristic racing simulation where the player pits their wits against AI opponents. The game includes features such as collision detection and response, rigid body dynamics, environment mapping, 2D UI, particle effects and fully functional AI.