Hey I'm Tom! I am a Game Programmer & Developer, below you can see a collection of the projects I have worked on.

Game Programming

Midnight Gambit

About

Midnight Gambit is a Stealth-Action Roguelite about a vampire in a casino. The game initially started as my final year project of my MFA in Game Design & Development. During this, I decided to take the game further and put the game on Steam, creating modular content to easily expand the game.

Project Info

Role: Gameplay/Backend Programmer, Director, Designer

Team Size: 18

Time Frame: Started January 2025 (Ongoing)

Engine: Unity

Introduction

When I began working on Midnight Gambit, my intentions were to strengthen my overall gameplay programming skills. It is good to note I am the sole programmer of this game, despite the use of some packages that I integrated into my workflow. Because the initial idea revolved around gameplay I had not created before, I decided to breakdown the core systems into chunks that I aimed to complete in 10 months; at the end of these 10 months I would showcase the game at EGX Comic-Con London 2025.

I broke the game down into 3 larger areas: AI, Player Controller & Abilities, Economies & Gambling. This allowed me to scope the project and create the Game Design Document early. This was beneficial in the academic environment, as bringing collaborators on-board early with a clear design and timeline was fundamental to create a project of this scope. To aid with this, I also created a 1 week prototype to showcase these areas.

Midnight Gambit Prototype

AI: Frameworks, Pathing, Modularity

Early on I experimented with several behaviour frameworks before settling. Early iterations used CrashKonijn's GOAP, allowing guests agents to self-asses needs like thirst, bladder and entertainment and set goals such as order drinks or use the restroom. This initially was great as it brought a lot of life to the casino. As the game shifted from pure stealth to stealth-action, I found that the guard agents required faster, more reactive logic. I decided to transition them to a custom State Machine architecture, which proved faster and more responsive in playtests. Eventually, all NPCs adopted this system, with states replicating the ones I created using GOAP, having a CheckNeedsState instead.

As I continued to focus on optimizing NPC interactions with the world and player, I wanted all NPCs to be easily accessible. So I created an Agent base class, which manages movement, vision and alertness. This architecture keeps behaviour modular, scalable, and efficient across all NPC types. It was at this point I also added Aron Granberg's A* Pathfinding Project for navigation, ensuring agents has better local-avoidance.

Player Controller & Abilities: Unity's Input System Package, Scriptable Objects

I then created the players movement system, and from the get-go I knew I wanted controller support. This lead me to use Unity's Input System Package, allowing me to design locomotion with keyboard & controller easily. Some of practical skills I picked up were creating variable speeds based on the joystick, as well as sprinting behaviours.

Economies & Gambling

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.