Gameplay Programmer with AI Expertise and Team Leadership Experience
Skytail
Lead Programmer, Additional Design
Released 26/03/2026 for Meta Quest 2 & Meta Quest 3
Skytail is a VR game in which you use telekinesis to fight enemies, defeat intimidating bosses and explore islands in the sky together with your bird-dragon companion. As you progress you enter trials which give you new telekinetic abilities to master, building on your skills and creating rewarding and physical gameplay.
EnemY AI
Enemies in Skytail include both waves of small enemies which are fought via telekinesis powers as you soar through the clouds, and a boss which you must strategically destroy at the end of each combat section.
Enemy Wave Coordinator - The largest part of work for this project was implementing the waves, ensuring that the rules outlined by designers were enforced as enemies were killed and new ones spawned. There were different types of waves, so I made use of Scriptable Objects and Interfaces so that generic functions such as “SpawnEnemy” could be used for each wave type to internally calculate which enemy to spawn, for example. This kept the executing code clean and readable.
Enemy Stage - The enemy stage determined the placement of enemies using a curved grid. Enemies could favour particular parts of the stage, but had to be placed somewhere their internal movement pattern would fit.
Boss - The boss had tendrils which extend outwards from it’s centre, and multiple phases during the combat. The main challenge with this was how often the design changed and the code had to be adapted, coupled with the time restrictions. However, the result is exactly as envisioned despite the numerous changes.
Lead
My time as lead programmer on the project essentially began in January of 2024. My responsibilities included creating a project timeline, allocating tasks to the growing team, flagging early when either additional resources or a scope reduction were needed to meet deadlines and communication with other departments for features and timelines. Feedback from other departments regarding my programming team’s performance also went through me.
The timeline was incredibly unforgiving, and even with consistent scope reductions I had to very carefully monitor the rate at which tasks were completed compared to where we needed to be. If at any point I felt we were not on track or the work took longer than anticipated, it was up to me to resolve that issue until the timeline was realistic again with suitable buffer room for unexpected issues.
I largely achieved this through use of a spreadsheet in which each task was tracked, as I unfortunately found Jira insufficient for the level of oversight I needed due to the time restriction. One key issue was priority conflicts; asset implementation may be high priority for one department but it may not be high priority for code, but with a separate spreadsheet I was able to represent this. It provided an excellent overview of each month of work assigned to programmers, provided an easy reference to see who had previously worked on a feature and was invaluable for planning work for each programmer. There were drawbacks, particularly the maintenance, and I would not implement such a system again unless absolutely necessary. However for the case of this particular project I saw an issue and I solved it by creating a powerful tool that ended up being invaluable for every department.
Design Contributions
From the very beginning of Skytail I was heavily involved with the creative process - I even came up with the original pitch and underlying core mechanic of the game; telekinesis in VR. This was the concept I chose to pitch based on the VR games I had enjoyed the most, those being Super Hot VR and Beat Saber. When analysing what I enjoyed about these games, I realised it was the physicality and the fact both experiences simply can’t be replicated outside of VR. To this end, I aimed to pitch a VR game that truly made use of the hardware and justified being available on this platform. Thus, telekinesis.
Throughout the project I put forward many artistic and tonal suggestions. I was also working closely with the designers to help them problem solve solutions, give new perspectives and rapidly prototype ideas to help us find the fun and determine if a proposal was feasible. I recognise in some studios this is a very rare opportunity, so I am very grateful that I was able to use and hone my design skills but I am able to recognise when to step back and focus on my primary role of programmer.
Unreleased Skytail Predecessor
Between Jurassic World ending and Skytail as (it was released) beginning, there was an unreleased game which is technically considered part of the Skytail project. It was once again a VR title, though significantly more ambitious than both Skytail and JW. On this project I was once again heavily involved with enemy AI and gained further experience with best practice, prototyping multiple different types of potential enemy and of course animation implementation. I became comfortable with Object Oriented design and generally gained a much stronger understanding of game programming fundamentals. My 3D maths improved, my physics improved, and I had a lot of fun trying out new systems patterns and seeing their benefits and draw backs. My exposure to underlying systems also started here, providing a solid enough understanding for me to know which direction to take them in for Skytail as lead programmer.
Furthermore, I had begun to take a more active role and gained confidence with voicing my thoughts on the overall experience of the game and potential issues. It’s this confidence that I took into Skytail that allowed me to become lead and so heavily shape the game. It was the failures of this project both as a project and as a product which allowed Skytail to run so successfully and to be such a solid player experience despite the incredibly tough circumstances of it’s development.
Tools Team
During this period I also spent some time on Coatsink’s Tool Team - a small group of programmers that created and maintained packages and tools meant to be used on all of our Unity projects. I had the responsibility of creating a unified animation system that would be an alternative to Unity’s Mechanim. At which point I pointed out that would be ridiculous, why on earth would a studio of 80 people do that. I verified my conclusion with several senior programmers, and so I instead spent my time on the team working on our system for adding SFX, VFX and other events to animation clips. I was proactive in giving myself work and improving the tool, though ultimately I left the team because of this lack of direction while I needed to learn and develop my skills after being limited to raptor AI with ECS.
Jurassic World Aftermath
Intermediate Programmer on Dinosaur Team
Released Part 1 17/12/2020, Part 2 30/9/2021 for Meta Quest & Meta Quest 2
Jurassic World: Aftermath is a game in which the player ventures to an abandoned Jurassic World facility on Isla Nublar, and must complete various tasks all while evading a group of 4 raptors and various other dinosaurs and threats.
ECS / Data Oriented Design
A unique challenge of this project is that it was built using Unity’s ECS package as it was being written. We had to learn the new way of working with scripts and systems and apply it to the designs given to us to implement, as well as communicate with Unity to give feedback and adapt to the rapidly evolving package. All in all it was a challenge, but it was a fascinating insight on how libraries and packages are developed. Now, I have a great love for systems that mimic the data oriented design approach as I believe it to be very elegant and versatile especially during fast paced development.
Raptor AI
The raptor AI was the largest chunk of work that was undertaken for our team on this project. Initially, as per “Alien Isolation did it”, Utility AI was implemented in an attempt to make the raptors a compelling and fun enemy to play against. However, as anyone who has actually worked with such a system knows, it is a very poor choice of AI algorithm for the vast majority of circumstances. The result was a black box where the raptors were not predictable nor understandable, so even though their internal logic was sound, they appeared erratic and unintelligent. They lacked intentionality and most importantly, were simply not fun to play against and success felt random rather than as though you could outsmart them. Therefore we adopted a more traditional state machine, which was significantly more fun to play against in large part due to how the designers were able to tune the system.
The raptor work also included extensive animation implementation to ensure everything blended smoothly and there were no obvious errors such as jerking or foot sliding. This is where I gained a lot of experience with Unity’s Mechanim but also general animation principles.
Additional Programming
Although my main role on the project was raptor AI, I also aided various teams with bug fixes, creating hacking minigames and rewriting the T-Rex code from Object Oriented to ECS and further refined the system with animation implementation and general smoothing and playtesting feedback.
AI Director
As I had experience with AI Directors due to my dissertation and the original game design was quite different from the eventual linear experience, myself and the team explored the possibility of introducing an AI Director into the game. Unfortunately due to time constraints and the linear path, the resulting AI Director ended up drastically reduced from it’s original design and ended up not resembling a true AI Director as it did not make a judgement on the player but rather controlled the abstract idea of tension which then had the output of the ambience system. It is rare that an AI Director is applicable to a game, so I am glad that myself and the team decided to reduce it down and focus on the more important aspects of the game such as the raptors.
Presentations & Soft Skills
As part of my work at Coatsink I have given a number of presentations and talks. Technical presentations on AI Directors, more informal discussions for Pride month and a retrospective break down of everything that we did well and poorly on Skytail. I love any opportunity to share knowledge and discuss how we can best proceed in the future, and I think they are invaluable to long term success. After all, if past mistakes are repeated over and over then frustration is inevitable.
Furthermore, I greatly enjoy finding the most effective way to communicate information to the team who may need to use a tool or script I have created. After all, documentation may not be sufficient to communicate complicated concepts and it may rapidly become outdated. In addition to house documentation, video tutorials and short meetings where people can ask questions and I can gather feedback are also invaluable tools. For me, it’s all about adapting and treating each situation as a unique case.
In my work generally, I am very keen to solve the problem the team is actually facing, and target that issue precisely rather than attempt to implement a new unsatisfactory general solution or process. Innovation is absolutely necessary in the varied and rapid world of game development. Day to day, I am incredibly proactive in calling attention to issues which may compound in the future, or as Lead I will address them as soon as possible. Perhaps it’s very much my nature as a programmer, but I believe in a very simple and logical see problem, fix problem. Naturally it can’t always work this simply, but the simple approach greatly smoothed out the development process and kept everyone focused on Skytail as opposed to the unreleased predecessor.
Finally, I absolutely love meeting new people and getting to work with people. The fact that we’re together to create an amazing experience for players never gets less exciting for me, so as a result I’m enthusiastic and passionate in my communication and interactions with others. I also know how easy it can be to misunderstand someone or misinterpret directions, so I am very clear in my communication and make sure people feel supported and confident in our interactions. Work takes up so much of our lives, so lets make it as pleasant as we can for each other!
Game Jams & Personal Projects
Labyrinthus Sofia
Explore a maze of pillars using various crafted tools in an attempt to find your way. Who knows what lurks around each corner, or what may lie at the centre?
Labyrithus Sofia was a project I was working on as part of the Self Development Days at Coatsink, until the requirements of Skytail meant I could no longer afford time away from that project. The idea was to find your way through a randomly generated maze while avoiding being caught by roaming creatures at night, all while a deeper lore played out that the player could find if they looked hard enough. It was very much inspired by the PS1 horror games and analogue horrors that were popular at the time. A 3D artist and a technical artist made the maze pieces look so good!
Honestly I had so much fun making the maze generation. I used a combination of algorithms to create a maze with a guaranteed way through with a good amount of branching paths, regions (hellish/heavenly/darkness) and generating materials with a different likelihood of generating in each different region. I also implemented AI specifically designed to hunt the player in a maze, so 8 agents all spawned around the player in a circle and were dormant unless they spotted the player. If the player left the circle, the agents would start again with a new circle. This ended up being very effective for catching the player a reasonable number of times while not needing to analyse the maze that had generated. If the player did not move enough and seemed to be camping in the same grid square, the agents would determine which had the shortest path and then approach the player. All in all, I had a blast with every part of this, even the crafting menu, and I learnt a lot about what it means to make a game.
I had intended it to be as simple as possible so it was realistically achievable with as small of a team as possible, though no Self Development Day projects ended up being made by Coatsink so ultimately the project went on for too long and the concept became obsolete as the inspirations became outdated.
Go North
You and your expedition team are trying to get to the North Pole. Who knows what you’ll encounter?
This was an extremely fun project myself and a handful of people worked on during one of our weekend long game jams. It was a very simple choose your own adventure game with entirely randomly generated events. Since the code was so simple, I actually worked on the art for this one alongside the head of the department. We had a CRT monitor shader on so it was very fun to make something bold in black and white that looked good with the filter. And really, it was just a bit of silly fun. You can actually buy merch on my RedBubble even though we never released it haha!
Just for Fun
Professional level graphic design and illustration. Below, t-shirt design.
Above, sticker designs. Below, acrylic keychain designs.