Pew Pew Pew Game
Motivation
Pew Pew Pew Game came into being as a stitched-together hodgepodge of several different projects I was working on at the time to further develop my programming skills. Shortly after putting together a few proof of concept projects (like a networked chat system), I figured I could combine the various components into a meaningful project. Making it a game was an easy choice because it meant that I could share it with my friends and get their feedback on it.
The Beginning
I started working on more projects to push the boundaries of my programming knowledge after I participated in a computer science competition organized by the University of Waterloo when I was in Grade 11. Although I didn't expect to solve all of the problems, I felt disappointed in my performance, so I set out to learn more. I didn't have any particular learning goal, and at the time I wasn't very familiar with many of the deeper concepts of computer science - to me, it just meant automated problem solving.
So, I started working on things that I thought were cool, and with a tech stack that was familiar but rich and complex. I had played around with SFML and found it was perfect for my needs. My background had always been in C++, and SFML provided a suite of lower-level tools upon which I could build to my heart's desire without worrying about the very low-level stuff.
I built lots of simple and silly prototypes, starting with a basic single-player platformer. Then, I set that aside and put together a client-server chat system over TCP (I'm still pretty proud of this since there weren't many resources on doing it in C++ for a beginner). As I started showing this to friends, I got more excited about having more people able to try it out.
Putting It All Together
After having the inspiration to combine all the little prototypes into a bigger project, I spent a lot of time thinking about how I wanted the final game to play out. I was heavily inspired by League of Legends (because my friends and I spent many hours playing it) and Awesomenauts (because it gave me a model of how a 2D MOBA could work).
I had lots of ideas of how the characters/heroes would work - I wanted to make a full singleplayer story for each character, in addition to being playable in multiplayer. Moreover, I wanted to give each character a "light side" and "dark side" path they could choose between, which would impact their abilities and playstyle. Needless to say, this ended up being much more than I could accomplish alone, but I was very determined.
Less than a few months after I had the wake-up call from the Waterloo computer science competition, I had become borderline addicted to working on Pew Pew Pew Game - I spent a lot of my lunches either working on it or talking about it, and even worked on it during class! I think I managed to balance things well enough, and while my grades may have dipped a bit, the experience and practice I gained was certainly more than worth it.
The Month Of Joy
As I was in the midst of this frenzy of work, the Ontario secondary schoolboard teachers initiated a strike. At first, we had expected to maybe have a day or two off of school, and I fully intended to make the most out of this time. I spent probably around 12 hours a day adding as many features and abilities as I could. Gradually, it became obvious that the strike would be longer than just a few days, but that didn't slow me down at all. In the end, we had around a month off school (most of May) - during which I estimate I worked several hundred hours, bringing my total manhours on Pew Pew Pew Game to somewhere around 500-600 hours.
Naturally, working that long was unsustainable - it was certainly unhealthy, as I did almost nothing other than work and sleep - and by the end of it, I was completely burned out. I had developed 4 playable characters, each with entirely unique playstyles and abilities, several maps and game modes, and even a level designer. I had created all of the assets for the game (except a background or two, and some of the sound effects) and the (poorly designed and implemented) systems that would come to use them.
All of this added up without my realizing it, and eventually I hit a challenge that completely blocked me. Inspired by Harry Potter and the Chamber of Secrets, I made a "Chamber of Secrets" map, and wanted to add a Basilisk as a boss for the map, but I had no idea how to make the movement feel somewhat natural and fit within the 2D style of the game. So, I stopped.
I didn't do any more development until after I had gotten into University, and even then, it was to get it to compile on another platform, and not any serious development. Life had forced me to re-evaluate my priorities, and so I never came back to keep working on Pew Pew Pew Game - and the Basilisk never got added to the game.
Current Thoughts & Learnings
Today, I see Pew Pew Pew Game as a formative project. It is certainly in my top few personal projects by manhours spent, and also one I place a fair bit of emotional value on. That all said, it is really poorly architected. I think the design choices I made - not that I knew any better at the time - resulted in very tight coupling between some systems, and made adding new features a lot harder than it needed to be. Even worse, it made trying to pick it back up after a long break next to impossible, as it almost requires having a thorough understanding of the entire project in order to manoeuvre within the codebase.
I learned a lot from this project: not just in terms of technical skills, but also soft skills like visual design, and even the value of having early feedback from play testers.