I recently worked as a programer and designer for HackyZack, a fast-paced puzzle platformer. When I started, I had never done any level design, but after creating around 90 levels (plus the ones I trashed away), I feel like I learned a lot. I am not an expert in level design, but I wanted to share my experiences, the things I did wrong and the ones I did right, and general tips to make your platforming levels much better. Some of these tips can apply to other types of games, but I leave that up to you to determine.
First, I’ll start by explaining the various methods I found that were effective for me when designing levels. Then, I’ll go over some tips to keep in the back of your mind when coming up with your creations, as well as some suggestions to better iterate and improve your existing designs. I will show examples as I go along to better illustrate my points.
Five tips for designing levels
We are all different, so our process to come up with cool ideas may also be different. But if you have no idea where to start, here are some tools and processes I used throughout the development of HackyZack.
1. Keep a notebook handy for inspiration
A level I designed on a whiteboard and the final product.
Have you ever been in that situation where you are sitting in front of your computer for two to three hours and still can’t come up with anything? Me too. Whenever it happened to me, I simply grabbed a notebook and left my work station. I would go out to eat, walk around town - anything to clear my head. Then, I would sit somewhere and scribble down ideas for levels. They didn’t have to be too specific or even good, but I poured out as many ideas as I could come up with in that time span.
It was amazing how fast I could sit down and get momentum to work on levels after that, since the idea was already half-realized. All I had to do was create it in a game and test if it worked. Lots of times the ideas didn’t work or got changed drastically, but the important part was that I wasn’t stuck anymore. Using a whiteboard is also a good alternative if you don’t want to leave your workplace, but need a change of scenery (creativity is weird like that sometimes).
2. Build a level around one simple idea
Often I had an idea for a cool situation, or a neat set of actions that would make the player feel awesome. But, the issue with that "cool situation" was that it wasn't enough - I had to add more. So, I usually started with that cool set-piece moment and built a level around it. A fun way of doing this would be to have a similar situation as your “cool moment” which is easier. That way, the player can learn how to do it in a safe environment before reaching the moment you prepared for them. If you still feel like it’s not enough, it’s okay to combine two ideas in the same level, or even reuse an idea from a previous level.
3. Draw random shapes and tweak them until you like them
Sometimes I was completely blocked and instead of just staring at a blank screen, I made random shapes. This helps get you start working on levels, even if you end up scrapping the idea later on. Creativity is very much about momentum, at least for me. Some days I would pump out three to five levels, while other times I spent two to three days with no good ideas.
4. Play your game
This may sound obvious, but you should constantly play your game! It serves two purposes: you will learn which levels need a slight re-factor or need to be dumped entirely, and you may also end up thinking of an idea while playing your levels.
5. Work on something else for a while
My last piece of advice is to take your mind off of things. When I wasn’t making any progress with levels, I would work on some programming. The brain needs to rest sometimes and working on other parts of the game will help.
Do's and dont's
Here are some things I consider important to do or avoid while designing platforming levels. It’s purely subjective, but I have found that following this advice produces better levels
Do find multiple ways to use the same mechanic
One of the most important things I’ve learned is that game mechanics need to serve multiple purposes. It takes time and effort to teach the player to interact with each mechanic, so using it in different ways enhances the experience.
For example, in HackyZack, we had a mechanic where if you hit a switch, some blocks would disappear. The most obvious use was to block paths and force the player to hit the switch before advancing.
We later came up with the idea to make it work backwards, where the blocks would appear when you press the switch, so you could use them as walls or even as a floor.
The same mechanic was even used to turn on and off portals in later worlds.
And even worked as a level where you are supposed to avoid the switches to keep the floor from disappearing under you. Same mechanic, multiple uses.
Don't make pixel perfect jumps
Unless you are making a very specific type of game (like those I want to be the guy mods), I suggest not having pixel perfect jumps. Remember that you are good at your game, but your players won’t be and those types of jumps are frustrating, especially if your game has variable jumping (it should!). As a rule of thumb, if you are having trouble beating a level yourself, consider adding a few extra blocks of floor or wall to reduce the difficulty a bit.
Do reevaluate levels and trash the worst ones
It happens to everyone. You make a level you think would be nice, but ends up falling flat. You may not discard it as soon as you make it, but as the game progresses, some levels will feel worse than others. Don’t be afraid to trash the worst ones. In game development, that old saying is true: your levels are only as good as the worst one. Be honest with yourself and remove them
Don't repeat ideas
This one may be hard to achieve, but try your hardest to avoid repeating ideas across multiple levels. This goes hand in hand with finding multiple uses for each mechanic to make each level feel unique.
Do play other platforming games
As is true for any other genre, and even mediums, you should make what you know. It’s always useful to play a variety of games in every genre, but if you are making a platforming game, make sure to play other games similar to yours. It will give you ideas of things to make, and you should also keep an eye out for things you don’t like so that you can avoid them. Besides, how many people can play games and call it “research”?
Don't make symmetrical levels
There’s two big reasons for this: the first is that symmetrical levels usually aren’t as interesting as those with weird shapes. I struggle with this one myself and end up having to modify a level because I make them too symmetrical at first. The second reason is that when a level is the same on both sides, the player will most likely have to perform the same set of actions twice, even if they are mirrored. This can frustrate players that have completed the first part and fail at the second.
Here’s an example of a level that I initially made symmetrical and changed afterwards.
Initial whiteboard design
Refactor: before and after
Do constantly playtest
I said it above, and I’ll say it again. It is essential that your team plays your game as much as possible. Find friends, family members, random people at work or school - anywhere. You need fresh eyes on your game. Also remember to watch when other people play your game. Don’t tell them how to beat sections. Watch them, see them struggle. If many people are having the same issues over and over, maybe it’s time for you to consider either explaining the mechanics better, or changing the level a bit to make the objective more obvious.
Don't make tight corridors
I’ll admit that this is one of my pet peeves. Having sections where the ceiling is too low is super annoying in platforming games as jumping makes your character hit its head against the roof. Open spaces work better in most cases, so just keep that in mind.
That is all I have for you this time around. I hope you find these tips useful. Remember that these are just guidelines, not hard rules, so keep them in mind when designing levels and if you break one of these suggestions, make sure you did it for a good reason. Now go out there and make awesome levels!
If you have any questions, or would like to contact me for any reason, feel free to do so. My Twitter handle is @AleHitti. Until next time!
Alejandro Hitti is a videogame Programmer and Designer from Venezuela. Although his background is in C++ and working using custom-made game engines, his two commercial games, INK and HackyZack, were made using GameMaker Studio 1.4. With the release of GameMaker Studio 2, that became his engine of choice. The novelty of GMS2, paired with his knowledge of the previous version, ignited his interest to create tutorials that focus on this new engine.