The trusty platformer is truly one of the oldest genres in gaming.
Shigeru Miyamoto's 1981 arcade classic Donkey Kong (the very first outing for a little character who would go on to be known as Mario) is regarded by many as one of the earliest examples of a platform game - meaning that the genre has a history spanning almost forty years. Isn't that crazy to think about?
So here we stand on the shoulders of giants, ready to take in some of the wisdom that decades of talented game designers have earned and shared. What makes a good platformer? How do we do it right?
Let's jump right in!
Get the jumps to feel good
The first rule of putting together a good platform game is to make sure that jumping feels great.
Perhaps it sounds obvious, but getting the jumping right in a platformer is absolutely crucial. The entire game hinges on this mechanic - if jumping isn't fun, your game isn't going to work.
Even before you've added any hazards, enemies, collectables or tasks for the player to engage with, jumping should be a fun activity in and of itself. It's always a good idea to spend time upfront making sure that the player's movement feels right.
Sometimes, when I'm idling around in a good platform game, I find I absent-mindedly jump around in random ways just because it's a fun thing to do. I think this is a good yardstick for whether your game's jump system is on point; if you find you like to do it a lot, especially when unmotivated by any particular goal, you're probably on the right lines.
Often this is a matter of getting the physics right - the speed the player moves, the height they reach after you hit the button, the floaty-ness of the gravity, the responsiveness of the inputs (thou shalt not make a laggy platformer!).
It's also important to add the right 'juice' (to borrow a phrase) in order to make it 'feel' satisfying - if you can make your character squash and stretch, play the perfect sound effect, or otherwise seem to be a satisfyingly solid presence, the better your platforming experiences are likely to be.
Another good idea is to add leeway into your platforming engine to make it as friendly as possible. If the player presses the jump button a few frames too early or too late - they're only human! - it would be nice if the game responded to what they meant to do. For example, if they pressed the jump button a few frames too early before they hit the floor, they obviously meant to jump again as soon as they landed, so why not store that input and let them have the jump when they land?
To reiterate: getting the jump to feel good is your number one priority. Until you've cracked it, don't even think about moving onto...
You obviously can't make a great platformer where all the levels are bad - so what makes a good one?
To some degree, this will depend on the type of game you're making. A good Mario level isn't necessarily built along the same lines as a good Sonic level or Hollow Knight area, and so I will try to refrain from giving overly broad, one-size-fits-all advice.
That being said, here are some things to think about...
- Think about whether your main priorities are action, 'flow', puzzle-solving, exploration, twitch reflexes, stealth, or whatever other main experience you would like the player to have. After all, a good Super Meat Boy level would probably make a horrible Donkey Kong Country level. Work out before you start what kind of platform game you want to make, and use that as your starting point for thinking about the actual content.
- There are some classic platform game level design rules of thumb you should probably observe. Avoid putting in leaps of faith (eg., blind jumps into space that may or may not kill the player outright), and make sure that platforms that are unreachable are clearly too tall or too far away (otherwise the player is likely to waste their time trying in vain to reach a platform that looks like it ought to be within reach but isn't).
- Try to avoid springing nasty surprises on the player - always give them fair warnings about traps and hazards before killing them outright. (You might also be interested in another post I wrote a while ago about best practices for avoiding unfairness in game design).
- You may find it helps to restrict your palette of level design elements to just a handful of things. Rather than throwing in bombs, ladders, Piranha Plants, see-saws, bubbles, swinging ropes, eight types of airborne enemies and a topsy-turvy gravity-switching mechanic all in the same level - wouldn't your design seem much more clear and focused if you picked out just a few of those elements to work with, and held the rest back for another level?
- Try to establish a clear theme for each level. This can be something broad and abstract like 'verticality', 'destruction', 'returning', 'continuous', etc. Alternatively, you might like to be more specific ('A level all about a trampoline bouncing mechanic'). Either way, building your levels around some kind of prompt or starting idea can result in more interesting and fulfilling designs.
Mario's coins and Sonic's rings aren't essential for a platform game as such - plenty of great platformers have been made without them - but they can be a useful aid to level design in a lot of cases.
Quite aside from the entertainment value inherent in grabbing large numbers of satisfying shiny things, the placement of coins in a level allows for an easy way to guide the player with a trail of golden breadcrumbs or non-verbally communicate other things (nothing says 'you should jump on this thing' like placing a single coin on top of it).
However, not every platformer needs coins - it depends on the type of game you're making. Banjo-Kazooie certainly needs to have golden doodads for the player to collect, but Limbo doesn't.
Another integral component of any decent platformer is the discovery of secrets. By telling players that you've hidden a number of secret shiny gems in unknown parts of the level, you can tap into their basic love of exploration and add replay value to your game at the same time.
Getting your game's difficulty curve just right is a really important aspect of platformer design.
To some extent, this will be related to how difficult you intend your finished game to be in general. Many platform games are pitched with casual gamers in mind, taking an 'everybody should be able to enjoy this' attitude, while others delight in hardcore challenges and punishingly pixel-perfect inputs. Your mileage may vary on this point, but my gut feeling on this is that the more casual the game, the more shallow the difficulty curve should be - in other words, it should gradually become harder.
My latest platform game, Cornflake Crisis, is pitched at the more casual end of the spectrum - a seasoned Meat Boy or Celeste veteran wouldn't have much problem breezing through it. Therefore, the difficulty curve builds slowly, adding elements gradually to make sure the majority of players remain on board.
One example of this is in my use of bottomless pits, the classic platform game hazard. Unlike bumping into an enemy, falling off the bottom of the screen is an insta-kill - meaning that bottomless pits are among the most deadly hazards in the game. So what I've done is I've introduced them gradually:
- Level one, the tutorial level, doesn't have any bottomless pits at all. There are platforms to jump onto and over, but there is a consistent floor across the entirety of the stage.
- Level two introduces the concept of a penalty for falling off a ledge, but it's not an insta-kill. There is a hot lava floor, and landing on this will cause you to lose one health point (and you can sometimes rescue yourself if you can find a point to jump out to safety before you die). Essentially, this a softer version of the bottomless pit hazard.
- Finally, level three introduces proper bottomless pits and insta-death for falling into them. By this point, the player has had plenty of time to internalise the concept of not falling off of ledges and lots of practice getting used to the game engine.
Working on a big game for multiple years can make it hard to get a sense of a game's overall difficulty arc, as you can get too absorbed in the minutiae of small tasks and lose track of the big picture. Therefore, it's a good idea to revisit and refine the game's arc multiple times throughout production - perhaps tweaking earlier challenges to make them easier, and adjusting later ones to require more player skill.
Platforming is a game genre that is as old as the hills and will probably never die, and there's always room for new designers to come in and give their unique spin on an old formula. Of course, the pointers I've covered here today are really just the tip of the iceberg - this is by no means an exhaustive list of the things you'll need to learn to be a great platform game designer.
It's also true that everything I've said in this post is just the current conventional wisdom. It may be possible that your role in the history of platform game design is to figure out how to break one or more of these 'rules' and best practices in an exciting way - and I'll look forward to seeing it when you do!