The Project
Spindrift began as a 2D boss-rush platformer, but due to time constraints, I focused on crafting a tight, responsive player controller, including attacking, dashing, and parrying. While the full boss rush never materialized, the controller itself turned into one of the cleanest and most modular systems I’ve ever written.
What I Did
I coded everything and handled visuals myself. All systems communicate through a central manager using UnityActions and ScriptableObjects, keeping dependencies clean and the project easy to scale.
What I Learned
I learned quite a bit working on this project including: UnityActions, Scriptable Objects, and how to use #region to clean up code. In this game I learned how to use UnityActions to subscribe events across scripts, decreasing complexity and increasing the scalability and efficiency of my code. For example, when I needed to add the animationController all I had to do was subscribe to the OnAttack, OnMove, etc. events in the Player Manager, allowing me to quickly and easily implement it.
Even though the scope was off, I learned more about code architecture and communication between systems than almost any other project. I’ll definitely reuse this controller in future games, it’s modular, readable, and built for expansion.
Why I made this project
I made this to level up my coding discipline and practice clean architecture. I’d spent a lot of time making quick prototypes before this, but I wanted to build something that could scale, a system I’d be proud to reuse. The tight, responsive controller became my way of proving I could write elegant, production-quality gameplay code.
