I stared down the well-trodden path of indie game development, the one that many started and very few finished. Knowing that I’d be sinking a significant portion of my next few months trying to move sprites across the screen, I took my first step.
My choice to go with Godot was driven more by my love for the open-source community rather than rational reasoning. I had previous experience working with Unity and was tempted to stick to what I knew, but the fledgling game engine nurtured into existence by the community felt like it had something great to offer.
I started by sketching down some ideas for my game, which surprisingly evolved over time into something completely different. It started off as a top-down rocket game, which later evolved into a strategy game that somehow morphed into a platformer. I fell in love with Hollow Knight and its art style and wanted to do something similar but for Android.
I looked at the monster of a project that I’d conjured up and decided to start with the art as one might do. Two weeks and a dozen really bad sprites later, I decided that starting with the art was perhaps not the best approach, as I could always swap out the images later. So I charged the dragon head-on and decided to flush out the main mechanics of the game. I wanted my game to have fine-tuned granular controls but at the same time I was building for Android, and I was against using a virtual joystick lest it ruined the aesthetics. That meant integrating all the controls with just swipe and tap gestures.
“Cake.” Or so I thought.
After realizing that there were more if-else statements in my movement script than policy changes made by Unity, I decided to completely refactor my code and implement a finite state machine for the character movement. If only I knew how to do that. YouTube was the wise teacher, ChatGPT was the annoying cousin who weirdly knew almost everything, and the official documentation was the assembly instructions that came with an Ikea table that I never used to read.
Contrary to popular belief that programmers have no life, we do, and it certainly doesn’t help that I’m a full-time student and working part-time as a barista at a local cafe. Part of the challenge was carving out the time necessary to bring this game to life. I would break down key features in the game and add them to my to-do list according to priority. Then I would figure out how to implement those features during my commute. I would sketch game assets during boring lectures (I have plenty of those) and I would build the game at night.
I’ve spent more time than I’d like to admit working on making the character jump. I just couldn’t get the perfect parabolic arc that I was looking for, until I chanced upon a GDC talk. After shamelessly stealing code from the internet, and fiddling around with the values, I could finally get the character up and moving.
While creating the 2D sprites, I decided to stray from the conventional path and make my assets from Blender (another great open-source software), using the grease pencil tool. I feel like the grease pencil in Blender is the best thing mankind made since fire. There is unlimited control over the strokes and a huge array of tools for animation.
Steadfast, with unwavering focus I surge toward the tantalizingly close finish line that lies within sight but just out of reach. If there is any advice I can give my younger self it would be — “Don’t be afraid to start all over again.”