the inception of Lifish

2 minute read

With all the delay that fits my ever-procrastinating being, it’s about time I start talking about my current main project.

It is a videogame called Lifish, which I’ve been working on for about 2 years now. Time sure flies when development times are involved.

BOOM

Before talking about Lifish, though, I need to mention its spiritual ancestor: BOOM by Federico Filipponi. BOOM is an arcade videogame with the tagline “Bomberman meets DOOM”, which is pretty accurate in retrospective. I say “in retrospective” because the first time I played it I had no idea what either Bomberman or DOOM were, as I was probably about 10 at the time.

I’d really like to give you a download link to the game, but recently the developer’s site got down, likely forever, as the game is pretty old. You can still find some screenshots on the Internet though:

BOOM by FactorSoftware
The game looks like this.

As the image shows, BOOM is a grid-based multiplayer game, where players must defeat all the enemies in the stage to advance to the next level. With bombs. You can find powerups in the walls, must defeat bosses every 10 levels and so on. Pretty classic, and damn fun and challenging.

Lifish

Basically, Lifish was born as an attempt to re-create BOOM from scratch, making it possible to play not only on Mac (like the original game), but also on Linux, Windows and so on. It was also the realization of a dream, as when I played it as a child I always wondered what sort of magic was needed to craft a game like that.

So, in summer 2015 I fired up Vim and started coding. My language of choice was (sigh) C++, both because it’s the language I’m more familiar with and because I wanted to improve my skills with it. After all, one never truly knows C++. Also, the choice out there is pretty limited when talking about multimedia libraries.

Two years later, I can easily say it was REALLY. SUPER. USEFUL. on that perspective. I have now a clear idea of things I didn’t really get at that time, like the concept of ownership, memory safety, the use of smart pointers and also some bits of metaprogramming (videos of CppCon and tips from a friend were also very illuminating on the subject).

But more on that will come in future posts.

Right now, suffices to say that:
1. I managed in my intent to re-create an almost-exact clone of BOOM. That’s the 0.x version of Lifish, which you can find here (instructions on how to install are here), so if you wish to play BOOM in 2017 you can pretty much do it (ahem, the final boss is missing though).
2. I wasn’t satisfied with the result, mainly because the code was pretty ugly and non-modular. Therefore I decided to pretty much restart from scratch (I initially called it a ‘refactor’, but in the end I threw away most of the code). That’s the 1.x version of Lifish, which is currently under development. This version is a game similar to BOOM but with several differences and improvements, and I will speak more about it in future posts.

I can’t show you any meaningful screenshots yet, as the game art has yet to be done, but the gameplay is in a very advanced state, and I hope I’ll be able to release it soon enoughTM.


Thanks for reading this far, and let’s hope the next update won’t take so long ;-)