Skip to main content

Making a game in PICO-8: The final reckoning

Come play the game we made

Welcome to the final part of my series in which I make my first-ever game. I’m using the lovely PICO-8 [official site], and the game is called No Frog Left Behind. It’s about abducting frogs by pushing them into your spaceship, and it’s time to design its levels.

Let’s first consider positive things. Because I was surprisingly far-sighted early in development, creating levels is really simple. I’ve set up the game so I can use the map editor, which means that level design is just a matter of painting sprites into the game’s map, which is like a single sheet of sprite references. I’ve put into the code a little counter for the levels that goes up when you complete them. This counter then acts as the multiplier for the coordinates the game needs to look at on the map in order to display the correct level, and also allows it to look it up on a list of level-specific start points for the player and frog. I am very proud of the fact that it all just works.


HOWEVER. You know there was something bothering me yesterday? Well, I’ve realised what it was. No Frog Left Behind is a really terrible game.

Being forced to think about level design, and therefore the actual game, has revealed this to me. I can’t think of any interesting levels. There’s a level with long corridors you have to push the frog down. There’s a level which has the spaceship right by the start but you can’t get the frog into it without going all the way around. There’s a level with open spaces. None of them are actually fun, and by the seventh level I have no ideas left.

I think there are two problems. But I think maybe you should play the game first before I get into them. So I quickly add a start screen and a cool logo, and an extremely awkward frontend system that manages going from level to level and completing of the game, should anyone be mad enough to play that far.


I also add some sound effects, and a jingle when the level starts that’s creatively inspired by the Paul McCartney masterpiece, The Frog Song.

And so, here it is. No Frog Left Behind. I’m so sorry.

OK, so now you’ve played it. I have bared my heart and my soul to you, but before you stab them with your critical barbs, let me criticise myself.

The first problem, I think, is that the frog moves randomly. A lot of the time you’re waiting for it to move into the right place so you can push it. I was semi-aware of this when making it so I made it stunned for six moves after it’s hit. But this isn’t enough to give you a sense of control over it, and yet increasing the stun time will make even more frustrating the frequent times that you want the damn thing to move. So yeah, the frog is bad.

The second problem is the lack of any other mechanic. You push frogs. That’s it. There are no moving things to negotiate, no hazards that will spell game over. Now, I could put these things in. I think I know how. But I know that combined with the stupid frog, they’ll just serve to make the game even less fun.

I really want to make this game better but I basically don’t have any time, and with the game now sprawling with my stupid little systems, adding features will be tricky. But my sense of self-worth is on the line, and I think back to the original concept:

382) No Frog Left Behind: RTS where you organise an army combing a polluted swamp, putting poorly frogs in boxes & shipping them to safety

And I wonder... Polluted swamp.

Polluted swamp.

Maybe we can get some emotions in here. Rather than abducting, maybe we can be saving them. From a polluted swamp! So while the action of playing the game might remain utterly miserable, you can still feel good about it. Yes, emotion is the answer.

So, pollution, then. Perhaps we can have a tile of pollution that steadily spreads from a point over time. And since sooner or later it’ll box the player and frog in and make a level impossible to finish, I’ll add a restart button. Pretty sure this kind of thing is Good Design.

So I get started. I’d like to say that with all my experience I quickly and elegantly come up with a solution for randomly spreading pollution, but I do not. Eventually I manage to coerce the frog’s stupid movement system into confining the pollution to the bounds of what you can see of the level, and then I get stuck on my old friend, collision. I attempt to use my old fget() thing to check a flag on the sprite next to the player and frog but for some reason it just won’t work.


It’s like the pollution doesn’t exist. Those FALSE things say there’s nothing in the tiles next to the player.

Now, I could do my traditional thing of spending an hour staring into the abyss in an effort to work out what kind of obvious mistake I’ve made, but time has finally run out. This is where No Frog Left Behind must get left behind. Let’s just agree the pollution is more of an obscuring mechanic, OK?


And so here it is, the final release.

Once again, I’m so sorry. PICO-8 is really great, though. If you have even a passing interest in making games, try it. It’s pretty great just for playing games, too. Thanks for following the series, and a happy New Year to all!

If you missed the previous entries, here’s the full series.

Read this next