Ever since I started programming it was a goal of mine to one day publish my own video game. However, I was naive and didn't realize just how difficult of a task I had set out for myself. "Stupid to Live" was the video game that I eventually succeeded in publishing after working on it for over 4 years. It's a puzzle platform where the puzzles use your intuition against you. While the game itself might not be the most technically impressive thing in the world, the lessons I learned from creating, polishing, marketing, and publishing this large project have been crucial to my success in the rest of my career.
You can download the game for PC here: https://instantstudiogames.itch.io/stupid-to-live
Or search for "Stupid to Live" on the Android Play Store.
The Problem
Making a video game from start to finish as a solo developer is no small feat. Aside from the technical skills required to script the logic behind the game, superb project management skills are required to ensure that progress continues at an efficient pace. I learned early on just how easy it was to let the project grow out of control and become a maintenance nightmare. Just writing good code was not enough, it needed to be properly organized with a clear and well-defined architecture. Other difficulties included marketing the game, porting it to PC and mobile, hiring a composer to create music for the game, and many smaller hurdles that came at me during the game's 4+ years of development.
The Solution
Good project management for me started with having a plan. I would create a plan each week of what needed to get done and made an effort to work on the game every single day which required a strong work ethic. Consistency was key to not losing focus and staying on track. Another key to my success was not being afraid of refactoring. It can seem unproductive to go back over already working code instead of adding new features but this project drilled into me the importance of going back to clean up old code. These refactorings were always well worth the time in the end. Along with refactoring, this project also taught me the importance of sticking with a code architecture. In this case, I created a custom architecture for my specific needs that I worked hard to adhere to. However, perhaps the greatest contributor to my success was my flexibility when it came to learning new skills and performing work outside my comfort zone. Before I started, I knew nothing of creating art asserts. Through determination and a lot of online tutorials, I taught myself how to make pixel art so that I could make all the art assets I needed without outsourcing any of that work. I also knew nothing about marketing and how to spread the word about my new game but I put myself out there anyways (including making a trailer for the game). Lastly, when I found something I couldn't reasonably do on my own, making music, I reached out and hired someone who could.
Applied Skills
Project Management
Completing a large project from start to finish requires more than just good coding skills. It requires viewing the project as a whole and knowing what features are important, what can be cut, and how to best allocate my time and efforts. When you're just working for yourself it's easy to let progress slip away. I made sure to keep myself on a schedule and have a plan I updated regularly so that I was always making consistent progress toward completion.
Code Organization
On a very large project like this one, you must always be thinking ahead. It's not enough to find ways to solve current problems, but also anticipate new ones and how to avoid them. I designed and implemented a customer code architecture which helped immensely in keeping my code organized and maintainable. I also looked for any opportunities to apply code patterns and perform refactoring. This ensured that my code not only worked but was easy to understand by others and easy to maintain.
Flexibility
Publishing a video game requires a vast number of skills that go far beyond just knowing how to code. This is one of the things that initially intrigued me about game design. I love learning new things and finding creative ways to solve problems. Just because it's outside my comfort zone doesn't mean I will back down. And, when I can't solve a problem myself, I am not afraid to outsource in order to ensure the project still gets completed.