No-name Ball Game
Imagine if a skateboarding game brought its Style to a mini Golf course. This is an arcade RPG with physics-based challenges, and a simple-to-understand-yet-hard-to-master gameplay loop.
The Opportunity
As I learn to build solutions that can scale, I also realize that most things I'm trying to build have already been developed by other people. The Procedural Level Generator I built prior, for example was an entire Case Study on how to build levels at runtime. Unity's Asset Store has several solutions for this, and I realized: This feature is not unique to my game, so why should I spend time developing it? Buying solutions to my game's common requirements has allowed me to spend time on what really matters. Taking what I have learned from the first attempt at my dream game (and still being undecided on a title!), I rebuilt the code from the ground up so that it can properly scale to the scope I have planned.
What I Learned
Avoiding Feature Creep
The prospect of making my dream game has been so incredibly motivating that I just had to adding everything under the sun into the game. Even more so now that the first prototype has been released. I am realize during this project that I needed to categorize all the game's features and content into two categories: Those that contribute toward a Minimum-Viable Product, and those that do not.
Polish is a gray area though, and so I've decided that everything deserves at least a little bit of polish, but I should only spend a little bit of time on each one. Having this mindset moving forward will help reduce wasted time if I eventually have to scrap features.
Scalable Architecture
One of the most satisfying things that has come of this project has been implementing a new feature using scripts I've already written. Utilizing the SOLID principles, along with Unity's Serialization and Events system has proven tremendously useful. Since each script is just a building block and connects to others outside of the script itself, I can simply link scripts together in new ways and they perform exactly as expected, accomplishing new tasks. This is the sort of feeling is what initially drew me to software development back in middle school!