Or:
"How I almost accidentally created something fun to play in just four days, after many years of starting and never finishing countless overambitious projects."
Hello everybody!
Today I'd like to share with you something that I'm currently quite proud and even more just surprised of.
I see game development as a hobby of mine since a long time. The very first programs I wrote more than 20 years ago were games. They were very simple and very badly implemented, but still, they were games, and even finished ones. Back in the day, I completed a tic tac toe game, a pong clone and a simple 2D spaceship shooter (and also started a few things that I never finished - yes, even back then...). Later, my focus of programming interest shifted to other fields, but I returned to the hobby about 10 years ago. However, something very problematic had happened in the meantime: I became a much better programmer, and so my expectations towards myself and my projects rose significantly, and unfortunately they rose too high. While at least I was never unrealistic enough to have a "I'm gonna make the next World-of-Warcraft-meets-GTA-5-but-with-better-graphics MMOFPSRTS" phase, my projects were still too big. I even realized this early and stepped down a bit each time, but never enough. The result was a long list of started but sooner or later abandoned projects in different stages. Some never when further than a few concept thoughts, some progressed quite far, but none was ever finished. I think that a big problem was that my projects never reached a state where they became true games in the sense of something that provides a challenge and is fun to play. Each time, there was at least one part (usually multiple) that was too big, and without a foundation that was already enjoyable for the player, I became demotivated.
Until just right now. At the beginning of this week, I decided to start something really, really, really small. Something that is far below my theoretical technical capabilities, but ultimately doable in a time frame short enough to prevent that dreadful loss of motivation. At least I hoped so, and I was right. To be precise, the actual project wasn't *entirely* new, but I scaled down an older idea even further and reimplemented it in Kotlin, a very nice and productive language that I had just learned a couple of weeks ago. And here it is:
A graphically minimal retro-style 2D sidescrolling shoot'em'up with the working title "Vectro: Pathfinder".
"Vectro" is a portmanteau of "vector" and "retro", and "Pathfinder" has two meanings here: First, it describes what the game is about: Finding your path through an asteroid field. Second, it describes the purpose of the project from a technical point of view: Developing technologies and concepts for an eventual larger game which might be an extension of the current gameplay, or something a bit different. I have an idea for this, but that's something for another thread. Also, I deliberately try to avoid planning ahead for this as much as possible for the aforementioned reasons.
Finally, a few words about the technical side:
As already mentioned, the game is written in Kotlin, and it uses LibGDX for input and graphics (currently ShapeRenderer, maybe someday changing to pure OpenGL, if that makes sense). The foundation is a self-written ultra-light-weight entity component system (plus a just as ultra-light-weight event bus), which results in a very small, elegant and flexible code base with loose coupling all over the place. I have used the ECS pattern in one other (unfinished) project before, but I'm still sort of a beginner with it, and I'm very fascinated by its power. There's almost zero duplication of logic, features and behavior can be added, replaced and combined incredibly easily, it's a pure pleasure to work with. All entities in the game, from explosion particles to the multi-segment "cannonworm" enemy, are defined in a data-driven way, and I know that I have only yet scratched the very surface of the possibilities. In the case that my motivation stays as high as it is right now, and I keep working on it, I'll keep you updated on the further progress.
In any case, I have one big advice for everybody who, like me, frequently deals with motivation issues in hobby game development due to overwhelming tasks: No matter how much you know, start with something really really small. The feeling of accomplishment and the joy of actually playing your own creation, no matter how simple it is, is wonderful.