Steambots
View on Steam
UnrealBlueprintsIndie
Steambots is a co-op puzzle platformer where you play as three faulty robots who have to escape their factory to avoid being scrapped, supporting up to three players either online or local splitscreen.
Steambots started life as a game jam with a group of university friends, and have since started an indie studio with the goal of a full release in late 2025. I am the sole programmer on the team, and manage the project's Perforce server.
We took the game to Tranzfuser, and were selected as winners to receive additional funding from the UK Games Fund. We have since showcased the game at events like Insomnia and WASD.
Steambots is written in 100% blueprints. This was due to a few reasons: a personal challenge to myself to learn visual scripting, faster iteration times, and to let our designers pitch in with gameplay logic.
Currently the performance overhead is minimal, but we can always nativise high-cost functions if necessary.
Our biggest perf save comes from using Level Streaming to dynamically load/unload each stage as the players progress through the game. The biggest challenge with this was ensuring synchronisation across multiple clients that each load the levels in at different speeds.
Our biggest perf save comes from using Level Streaming to dynamically load/unload each stage as the players progress through the game. The biggest challenge with this was ensuring synchronisation across multiple clients that each load the levels in at different speeds.


Blueprints snippet from the component that handles level streaming (left) and Unreal's IK control rig (right)
When programming gameplay elements that can be combined in a number of ways to produce a variety of puzzles, modularity is key.
I've made liberal use of components, interfaces, and the observer pattern (messaging dispatchers) to make the game logic flexible and extensible.
I also implemented a custom debug menu to allow for easier testing and debugging.