Making a game in PICO-8: The final reckoning

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.


  1. LTK says:

    Regardless, well done! You made a game. It sucks, but it’s still a game that you made. As a wise dog once said, sucking at something is the first step to becoming sorta good at something. So if this is something you want to pursue, keep at it!

  2. swatagnat says:

    Thanks for the series. Looking to pick up PICO-8 in the current Humble Bundle, so I enjoyed following along.

  3. TheDandyGiraffe says:

    You know what’s missing? Steam trading cards. But seriously, good job – maybe not the game itself (it’s, well, infuriating to say the least), but your articles were quite a Christmas treat.

    Also, design-wise, I think pollution (if it worked) would make the game even more rage-inducing for one simple reason: you shouldn’t have a hard time limit where the progress is basically random or luck-based. Quite interestingly, one “skill” that’s genuinely tested by No Frog Left Behind, is patience (and yes, I’ve played through all the levels); with an active “opponent” of any sort, it would feel hugely unfair.

    • Alex Wiltshire says:

      You’re absolutely right – I was sort of aware of that but hoped it might just add a dash of more ‘stuff’ that might make it slightly more interesting. That and the fact I thought I had a chance of making it work. Wrong on both counts!

  4. Detros says:

    Thanks for the series. Reading through it was pleasant though playing through all levels was bit on the nerve wrecking side. Still, good job for your first game: you managed to complete the project. Good to learn about a new gaming platform, too.

    Here is an idea for the chance you get some more time to work on this game: make the eyeball only go forward in the direction it is facing, otherwise just turn. Even if it still would cost a turn. Toss in also the ability to use “Space” for just waiting a turn and you should save some of those player nerves.

  5. Stopsignal says:

    I loved this series. Seriously, i beg you to try again whenever you can! Programming something else from scratch after having already done something is much easier and more fun. Keep it going!

    Also, level 4 was hard.

    I guess being able to know where the frog was going to go would have been great, after all is the planning and thinking what makes these kind of games fun. But man, it’s still a huge accomplishment to have done it. I loved this series!

  6. Premium User Badge

    Barvahal says:

    What if you made it a puzzle game?
    If you made the frog movement predictable, and designed the levels accordingly, it could be a fun little puzzle game. You could even make the pollution work, by making it predictable too and ensuring that each level is solvable.

  7. MrBehemoth says:

    Well done, Alex. This was a great series, and it kept me coming back to RPS over Crumplemass.

    There is absolutely no shame in making a rubbish game. Don’t apologise. It was your first game, so of course there were going to be problems. (I’ve not played it yet, it might be brilliant for all I know.)

    If it was even possible to make a good game on your first attempt, without years of trial and error, and technical learning, and revision and honing of creative processes, then what would we need game designers and dev teams for? That said, you did a great job.

    • MajorLag says:

      As a developer of rubbish games I can assure you that there is, in fact, a significant amount of shame involved.

  8. prof_yaffle says:

    This was a great series which got me to pick up pico-8 and start making game with it.
    The problem you had with the polution sounds similar to one I had when making a snake clone. I wanted to use the same code for detecting collision with walls and for the apple. The problem was since the apple was being drawn on the screen, but wasn’t part of the map as far as collision detection was concerned it didn’t exist. The solution was to add the apple to the map when it spawned and to remove it when it was eaten.
    Will the code for the game be made available? I think it’d be fun to tinker with.

  9. April March says:

    I must say I’m inordinately proud of the fact that I solved level 7 by going to the top right area to make the final push.

  10. th15 says:

    Puzzle games are the hardest games to design, SHMUPs and other action games are way easier.

  11. MajorLag says:

    Welcome to game development, where dozens of hours of work go into the abyss because the concept just isn’t any fun. Which is, of course, why more people go into game criticism than game development.