Samuel Cairns
C#/C++ Programmer & Unity Game Developer
C#/C++ Programmer & Unity Game Developer
Hello! I'm Sam and I am a Game Developer and Programmer. Whilst I typically make games in Unity/C#, I also have knowledge of Godot/C# and C++ Game Programming. I have worked on two shipped games, one alone and one as part of a team. Alongside some software development, I have also produced low-level games and engine prototypes using the DirectX and OpenGL graphics API's, inclusive of Entity Component Systems and modularity. Â
All games featured on this website are complete games which I have worked on and contributed to extensively, and the majority are solo projects. Whilst I have been developing games since 2023, I have been programming since 2014. Since 2023, I have developed over 20 games within both academic and professional environments.
I worked part-time as a gameplay programmer for Goblin Games on a council contracted project for the Women's Rugby World Cup 2025. I also run a small start-up indie studio, Arcadium LTD.
I have been programming for 11 years and possess 3 years of experience in Game Development, and 1 year of professional industry experience.
Expanding upon a previously produced game in OpenGL, I produced a DirectX implementation of spatial illusions, featuring 4 unique levels.
Previous low-level graphics API development conducted by myself utilised a specific development pipeline targeted towards 2D platformer gameplay. This work introduces an Entity Component System (ECS) to enforce modularity, where hierarchy and class structure was carefully designed to formulate individual gameplay layers such as collision, physics, and mesh rendering.
Three levels of the game feature a seamlessly integrated teleportation trigger to produce illusions such as an endless corridor, or a falling loop trap where the player repeatedly finds themself back where they started. The fourth level includes a dynamic environment, where block textures shift when out of the player view frustum.Â
Alongside a modular integration pipeline, the application also includes lighting which can be toggled, a skybox, a first person player controller, and varying geometries. There are also collectible crystals which promote the full exploration of the perplexing virtual environments.
DirectX 3D 11, C++, PC.
School of Fish - 2D Aquatic Ecosystem Simulator
School of Fish is a 2D aquatic ecosystem simulation comprised of 16 different species of fish all with unique behaviour.
The game is targeted towards the secondary education industry and covers topics surrounding Natural Geography and Biology at a GCSE level. It includes a default state ecosystem which can be observed by the player, as well as a complete editor mode which allows the user to control the state of the ecosystem through the ability to add and remove different species from the environment.
There are 5 ocean layers within the game, representing various light levels, temperature ranges, and depth ranges. A comprehensive tutorial also guides the user through all gameplay dynamics.
Natural processes within an aquatic ecosystem are depicted such as the food chain (predator and prey), growth, hunger, breeding and natural end of life.
This was an individual project which was completed over the course of 3 months whilst undertaking 3 other projects simultaneously.
A WebGL version of the game can be played here: https://arcadiumltd.itch.io/school-of-fish
Unity, C#, PC & WebGL Game
PULSE is a racing game which was originally developed for Xbox but is currently being overhauled and converted for PC usage.
This game was developed by a team of 6, where I was one of two programmers. I worked on the following systems:
Vehicle Selection UI
Vehicle Physics (unique to each vehicle)Â
Drifting Physics
VFX & SFX Implementation
Progress Tracking & In-game Checkpoint System
Vehicle Controller & Input Maps
Accessibility and Sound Settings
Realistic Tachometer, Speedometer
Gearbox and Engine simulation
Pixelisation shader parameterisation
Performance Optimisation
Unity, C#, Xbox Game
Road Rage - Multiplayer Game
Road Rage is a 3D multiplayer game created using Unity Relay.
Programmed in C#, this game facilitates two formats of multiplayer connectivity: P2P Unity Relay Server, and LAN server.
Using Unity Relay, a host user initiates a server and obtains a join code which can be given to other prospective users. Upon entering the join code, players enter a lobby. Similarly, the LAN server can be initiated, and the host can supply their local IPv4 address to other users on the same network.
The game features NPC traffic which obey networked traffic lights. These lights change automatically, but can also be changed by player by clicking on them. Players collect coins around the map, and coins are deducted for red light traffic infractions. Each player gets 3 lives, and lives are deducted upon collision with other players or NPC traffic. Once the player loses all lives, they become a spectator for the remainder of the game instance.
All aspects of this application were programmed and implemented single-handedly, culminating in a cohesive online gameplay experience. The multiplayer back-end utilises a server-authoritative model operated using Remote Procedure Calls (RPC) and server-side verification.
Unity, C#, Online Multiplayer PC Game
Crushing Depths is a minigame management horror game, You're running a routine diagnostics check in a submarine, until something finds you in the dark crushing depths of the ocean.
A 1-bit narrative game which takes about 10 minutes per play-through with immersive sound and elusive gameplay. Whilst the majority of the game is based on a virtual computer, the main character is situated within the control room of a submarine, isolated from other crew members. Witness the virtual demise of your peers and ominous surroundings as you tackle a series of time based minigames, which challenge your reactions and demand that you provide temporarily relief from a submarine plagued with turmoil and mechanical blight.
This game was developed for a 4 day Game Jam, in which two of three available awards were obtained. The game achieved awards for the best use of theme (1-bit) and for the best game overall.
I worked as one of two programmers alongside 3 designers and an artist, to produce a visually appealing and intense gameplay experience with scalability and the opportunity for further development.
I worked on systems such as the virtual computer cursor, screen space and button collision. I also developed the core system of the logistics for narrative development, allowing events to be triggered and for the storyline to develop from one chapter to the next. This development was conducted in a manner friendly for designers, with interfaces (class abstractions) developed to facilitate modular event construction to speed up the production pipeline, optimise code through object-oriented approaches and code reusability, and scalable solutions to simplify the process of our planned future development of this game.
Additionally, the button system and collision detection was custom built by myself, for optimal and appropriate use beyond the standard system implemented within the Unity game engine.
Unity, C#, Arcade Machine Game
Ad Astra - UoN Tower of Power
Ad Astra is a single-player arcade style vertical scroller produced for the University of Northampton "Tower of Power". Implemented for a specific screen, the game includes propulsion physics and a simplistic character controller which allows the player to navigate through the atmosphere in the search of helpful items such as fuel boosts and virtual currency. With a limited fuel supply and harmful obstacles, the player must traverse the skies to optimise their resources and attain a higher altitude than their peers.
This award-winning project was developed as part of a 4 day University Game Jam, where I worked as one of two programmers within a team of 6. This game won the competition and achieved the prize of "best overall game".
My main contribution towards this game was the infinite gameplay system. This comprised of two types of level "blocks" which are used to construct the game environment. The first is default level blocks, where item spawn points and locations are decided, along with the background. These level blocks are used at the beginning of the game and will retain the same layout at the beginning of every game instance. The second type of level blocks are randomised. Spawn points are assigned by the designer, alongside every possible item that can spawn in a given point. This ensures that when a random level block spawns, the objects within the block are randomised. These level blocks spawn after the default level blocks, meaning that once the player gets above an initial altitude, predictability diminishes.
The level block system utilises garbage collection and memory optimisation through spawning random level blocks above the player (and out of view) player altitude increases. When a new level block is introduced, the block at the bottom of the stack is deleted. This ensures that the game only ever has a maximum of 3 level blocks spawned at a given time, stabilising performance and negating statistical dependencies.
I also worked on generic bug fixing, performance improvement, optimisation and some aspects of the player controller.
Ad-Astra will undergo a future conversion for suitability as a mobile game, including UI restructuring and a refinement overhaul.
Unity, C#, Specialised Mobile Game
Scrum Showdown is a game developed by Goblin Games, a team that I worked with as part of a promotion for the Woman's Rugby World Cup 2025, contracted by West Northamptonshire Council.
The game runs on an arcade machine which was built in-house, and is suitable for one or two players. I worked as one of two programmers, primarily developing the gameplay aspects of two of the four minigames included within Scrum Showdown.
One of the minigames I developed, 'Kick-Off' involves Player vs CPU or Player vs Player interactions, in which both players must choose the speed and direction to kick their ball, in order to hit targets at the other end of the playing field in order to score points. I specifically developed systems for target spawning and respawning, target movement, the input and control system, ball kicking, score-keeping and CPU AI.
In the other minigame I developed, 'Tackle', the player(s) receive input prompts on their side of the screen indicating what button they must press in order to successfully tackle the training dummy. Failing to hit the correct button would slow the player, giving the opponent an advantage. As the game progresses, the player(s) move faster, therefore the prompts appear quicker. The closer prompts are hit to the training dummy, the higher the accumulated score is for that input. For this, I worked on systematic training dummy spawning, player movement with a fair speed curve, an AI system for how accurate the CPU's inputs are, and the system for spawning prompts and relaying this to the player in an engaging and interactive manor.
Upon completion of this project, the arcade machine was taken to tour various libraries and locations within Northamptonshire, for public events and continued promotion of the WRWC 2025.
Unity, C#, Arcade Machine Game
Fun in Fifth - Unity / C#
Fun in Fifth is a mobile game which has been released in the public domain on Google Play. It is a indie game which I created for Android (and eventually iOS) from the ground up. This is the first release under the company title Arcadium LTD, a small indie-games studio which I created in 2024. Arcadium LTD is already working on its second public release.
Fun in Fifth has 3 core gameplay modes: Race mode, time trials and free play. There are also 4 maps with unique racetracks for the player to use. By default, the player has access to only one map, and race mode. They must collect coins which can be used to purchase the other gamemodes and maps. There is also a shop, where the player can purchase 4 vehicles in addition to the default car. Each vehicle can be upgraded in terms of vehicle colour, wheel colour, engine power, braking torque and tyre traction.
In race mode, the player races against 4 NPC's to the finish line. In time trials, the user races none other than themselves in order to beat their personal best. In free play mode, all racetrack restrictions are removed, granting the player access to roam the entire game map as they desire.
Fun in Fifth utilises a number of gameplay and application features such as: a vehicle controller, lap timer, lap progress detection, player place detection, day and night conditions, an optimised offline storage solution, a comprehensive shop and upgrade system, a settings and in-game reset function, and an anti-cheat system which currently remains unbroken. There is also a major update planned for the future, which will contain a large number of new features.
I released Fun in Fifth on Google Play to provide a free application (with no adverts) for any audience. The game has a low PEGI rating (3+) and is considered family-friendly by Google Play.
Check out Fun in Fifth on Google Play here: https://play.google.com/store/apps/details?id=com.Arcadium.FuninFifth&hl=en
Fun in Fith also has a complete Dev-log which can be found on Arcadium's official website: https://www.arcadium.uk/
Unity, C#, Mobile Game (Published on Google Play, Arcadium LTD)
Interstellar Isles was the first console (Xbox) game I created as part of a group project, in which I was the project lead. The game involved a series of floating islands in space, which the player could navigate using their jump boost abilities. Asteroids falling through the sky threaten the player, and various landmarks on the islands.
There are three major islands, each with a special ability. One has the radio tower for turret communication, one has a jump pad, and one has the spacecraft (providing regenerative player health). The jump pad provides large jump boosts. Each island has a turret with a corresponding satellite, which the player must rotate towards the radio tower. All landmarks could be subjected to asteroid damage, which would restrict the player's unique abilities.
The player has a weapon which they can shoot asteroids with, and there are additional weapons available on other islands.
Within this project, I managed all project lead responsibilities including hosting team meetings, delegating tasks and responsibilites and ensuring deadlines were met in a timely fashion. I also designed a number of the game's core features and mechanics.
I also worked as one of two gameplay programmers, creating core features such as random island deviations through space, the damage animation states of all 9 landmarks, flow of the game from one state to the next, asteroid spawning, all collision events and an infinite wave system.
Unity, C#, Xbox Game
Secrets of the Labyrinth - Godot Arcade Game - Game Jam Winner
I worked as project lead and one of two gameplay programmers to develop this top-down puzzle game. Secrets of the Labyrinth was a University Game Jam group project which took place over the course of 3 days. It is a game created for an in-house arcade machine which was built by the University. The game jam was for students from first year, to graduates. All five of us were first year students at the time.
The game can be played with one player or two, and is operated using joystick and button controls on the arcade cabinet. In single player mode, the player must find all three keys (with limited lighting) before they can use the exit. In multi-player, the players must race to find all three keys in order to escape before their opponent. The game also includes power ups such as increased light, increased movement speed and teleportation tunnels. If the game lasts too long, a dust storm can also eliminate you from the game. Each instance of the game has a randomly generated maze.
I specifically worked on application flow aspects such as the intro screen and how it transitions to the main game loop. I also programmed the functionality relating to the user interface, as well as collision mechanics between the player and interactable objects. Additionally, I handled all project-lead related tasks including time and resource management, as well as a large portion of the game mechanics.
Godot, C#, Arcade Machine Game
I created this Fireboy and Watergirl clone using C++ and the SFML high-level games multimedia library. The game contains a main menu, level selector, two fully playable levels and basic settings.
Since this was not created using a game engine, I prototyped scalable systems for producing any number of levels for the game. This included level data storage, as well as reusable functions for in-game mechanics such as moving platforms, doors (with and without triggers), lava, fire, green goo, text prompts, boulders and teleporters.
I designed the level system in a way that repeatable functions relating to physics updates, collision detection and gameplay mechanics could be called within a script which contains logic specific to each level. This would also allow for expanding upon the level with functions which exist only within a single level, where repeatability is not essential. As such, this served to maintain the code overhead for the engine code I had written for the specific purpose of creating more levels with ease.
The game extends upon the functionality of the original game by simply containing mechanics which are not found in the original game. It is one of the first game projects I completed.
C++ / SFML, PC Game