Apoptosis – a minimalist puzzle game about death

tldr: I made a new (small) game. It’s a puzzle game, it’s free and it’s playable in-browser. It’s called APOPTOSIS. Go play it on itch.

I’ve had the idea of making some sort of game out of the concept of programmed cell death for a long time. At the risk of sounding sentimental, the germ of the idea comes from a high school lesson from more than 20 years ago. My science teacher talked about the process of apoptosis, when a cell kills itself to save the organism it belongs to, and she noticed that altruism, in a sense, is encoded in life itself. That observation stayed with me. It seemed beautiful and poignant. And then there’s Microsoft Minesweeper.

I always felt that Minesweeper is an underrated classic. Everybody played (or plays) it and its game design is simple but pleasant. And yet it doesn’t have the status of Pac-Man or Asteroids. But, regardless of what think about it, at the very least you have to respect Minesweeper’s core simplicity: it’s a very replayable game with only two actions (or, really, only one). And that’s not an easy feat.

Last winter, while a bit burned out working my day job on a massive project made by a big team, I finally decided to start working on a side project, and this weird little mix of biology and Minesweeper concept seemed like a good candidate. A great part of being a professional game designer – aside from things like working on cool projects and having a salary – is that in my personal projects I can afford to not care about any commercial ambition. I can chase a game design idea without caring if anyone else is interested in paying for it. And so I started working on this thing during the Christmas holidays.

I chose to use hexagons not only because that’s how cells are often represented, but also cause hexagons are the bestagons. If you haven’t seen that video, one of the points is that hexagons have certain properties that make them elegant and very useful in game design. Just the obvious fact that a square tile can have a maximum of four neighboring tiles while a hexagon tile can have up to six increases the possibilities of interactions while still keeping it manageable and intuitive. Speaking of neighbors, I immediately focused on that concept.

The black cells have three pink cell neighbors down, and one up. And that, it turns out, has big implications in this game.

I needed something to make destroying hexagon cells in a grid less predictable and have the theme of sacrifice make sense. That’s where the concept of chain reactions came from. If sacrificing a healthy cell damages all nearby cells, either good or bad… well, that’s interesting, cause then the amount of neighbors around a target cell will determine how many attacks that cell will receive when its neighbors explode. There’s some planning and strategy in that. I also realized fairly quickly that letting players increase the health of a cell would make things even more interesting, cause that allows them to create barriers and direct the chain reactions in a certain direction.

Progress on the project went quite fast and the project turned out to be an excellent programming exercise: some things were especially tricky, like being able to detect when a group of black cells were an “island” (i.e. disconnected from healthy cells) and destroying them when they were. And then the curse of content came once again.

Small aside: throughout the years I noticed that there are a few critical moments in the life of a projects. The first one, and most discussed, is the slump once you worked on the fun stuff and you have to work on the “boring” features (tutorials, UI, balance). But personally, I found that there is a much more dangerous point in the life of a solo (or small) project. It happens when you have enough core systems to be able to actually produce content. If you are on a personal project, there is a point where you need to think less in terms of game systems and programming and more in terms of game content. It’s the moment when you need to start making levels, in other words. That point of a project is my nemesis, the ultimate momentum killer.

I love level design, and I am the kind of person who will try and make something anytime I play a game with an editor. And yet, the moment when I have to start actually making levels after having worked on features I lose focus. Switching roles takes time and I am not so excited to produce content if my mind is set on game systems.

And so that’s what happened. The Christmas holydays ended, I started working again and, in general, I had the feeling that the core gameplay of Apoptosis was sort of interesting, but without many more features (more cell types, more verbs) it wouldn’t even be enough for a handful of levels. Months passed, I started another side project (more on that soon, hopefully) and Apoptosis ended up like other prototypes in some forgotten repository, and who even knows if they work with the latest version of Unity.

But something bothered me. I felt like I didn’t really try enough with this prototype. I didn’t know it reached all its potential and was just not interesting enough. I thought this was the case, but I wasn’t sure. So I opened the project, started to familiarize myself with it once more (gentle reminder that well organized projects and commented code are worth the time and effort) and I just started making levels. And it was fun. I started getting that wonderful feeling when it seems like you’re discovering something rather than creating it. I created levels in what, I believe, is the standard way of creating puzzles: starting from the solution. First you begin with a vague idea: in this case, some cells patterns that I thought could be interesting or, even more vague, ideas such as “a level with very few turns but where you can sacrifice a lot of cells, or vice versa”. Then you build it quickly and you start solving it. Most of times you will find some interesting twist or small discovery along the way. No matter how small, every ha-ha moment is a miracle. Once you find the core concept of the level, focus on that and iterate. Often, you will find that you can come up with one or two variations of that core concept, and that’s a couple of extra levels right there.

And so, after some hours of work, I ended up with around 15 levels. I could probably create more, and I could definitely create more if I implemented more features, but for now it’s enough. I am a big believer in the idea that a game doesn’t need to be long to be good. A game can just be a nice 10 to 15 minutes experience. I don’t know if I’ll work more on Apoptosis, but I am pretty happy with the final result and I am happy I saved a prototype from the oblivion of an old repository.