Thursday, February 28, 2013

Making Platforming Games


Making Platforming Games

I’ve had quite a bit of interest from people wanting to hear some advice on making side scrolling platforming games... So I’ve taken some time to write up some of my thoughts on making a solid, traditional, 2D or 3D side scrolling platformer.
 
It takes a lot of time and effort to make something look and feel great. I’ve always loved platformers and have tried to keep up with all of the most significant releases and the most interesting independent ones. I still continue to play platforming games when something big or unique comes along. I’m surprised how often I see games that have tons of potential but just miss out on a few details that prevent them from being legendary. I want there to be more definitive, iconic, polished and memorable side scrollers, mostly because I want to play them and get swept away.

I’ve decided to put together a quick reference list of the things I try to thinking about when creating a side scrolling platformer as well as the things I look for when playing them. Some of these elements don’t apply to everything since the mechanics can be so diverse between games. I’m pretty much going to talk about games that have run and jump gameplay with additional systems here and there.

Don’t Underestimate

It’s never easy to make a polished game. Anything you plan to do is going to take 3-4 times longer and require more effort than you will anticipate at first. You’ll get better at predicting how long something takes to do with experience but even the most experienced developers often make the mistake of underestimating the time and resources it takes to make something polished.

Nothing is “a given” or trivial. Everything matters. A 2D/3D side scroller can actually be harder to make than other genres because every single screen requires unique configurations if you are trying to make something solid and memorable. Making games takes work and making great games requires even more. Experimentation takes time and it’s going to take time to figure out what works. Even if you’ve made platforming games before, each game has its own unique qualities. It does get easier with experience and there are some general rules/philosophies that work in most situations.

Broad Appeal

In some ways it’s actually easier to make a weird or quirky game.  You can do whatever you want and the mechanics can be as unique as you want them to be. If you aren’t trying to make a game that has broad appeal then move on to the next section. To be broadly appealing then a game should be accessible in gameplay and even in visual theme. It’s really hard to be definitive, elegant and iconic. That’s why there are so few platforming games that stand the test of time.

Foundation

·         Your camera is your game – The camera in a side scrolling platformer is one of the most important parts.

o   Your camera needs to be stable and smooth.

o   In most solid platformers the camera shouldn’t keep the character in the center of the screen.

o   If you have “falling to death” then the camera shouldn’t scroll down when a player falls in a pit. The bottom of the screen should equal death if you want to make it clear to players. It also shouldn’t move up when the player jumps unless the character is going off of the top of the screen.

o   You should try lock your camera to a single axis so that it’s only moving left to right or up and down in any given section of a level that players have control. This means you will reduce the amount of camera shifting and keep a frame of reference.

o   Players don’t feel confident when speed running or being reckless running at full speed if the camera shifts around when they jump. It makes for a less consistent experience and doesn’t feel as solid as some of the best platformers of all time.

o   Build your levels to support a particular style of camera.

·         The Jump Needs to Feel Great – The jump is everything! If the jump doesn’t feel right then the game will suffer and more often than not fail. The Team will try to come up with “band aid” features thinking the game needs more in order to be fun. If your game isn’t fun just running and jumping then you messed up and need to get that part right before moving on. (This is usually the most significant problem in a platforming game that isn’t good) Here are a few tips for making a jump feel good.

o    If the jump is too floaty then it’s harder to land on enemies and platforms reliably. This will cause players to miss time their jumps and they will get impatient waiting for the character to come down.

o   If the jumps are too fast then players will tend to land in front of enemies or platforms since they will jump early. This often results in characters that jump into the sides of platforms on the way their way down.

o   My opinion is that a good jump is responsive, weighty and forgiving. It should go up fast, have a little hang time and then drop pretty hard. (this is personal preference and can change based on the type of character and game)

o   If you allow air control during a jump then test to see if players can recover from a bad jump while in midair. If they almost never recover then you should increase air control. If they recover even if they react very late in the jump then you might have too much air control. It’s a balancing act.

o   If you don’t allow for air control after a jump then you need to build you levels on a measured grid using very strict standards. Play a lot of Super Ghouls and Ghosts.

o   There are 2 major styles of jumping to choose from.

§  Digital – If you jump and let go of holding a direction on the dpad or stick then the character stops on a dime and drops down without any inertia. This is really precise and feels gamey.

§  Velocity Based – This jump retains inertia in the air. If you jump while moving and let go of holding a direction on the dpad or stick then the character will continue moving without slowing down. Players will have to compensate against the inertia to slow their movement. I personally prefer this method as it gives the character a sense of weight. (play 2D Mario games for an example)

o   Jumps can be fixed so they always jump a consistent height or they can be controlled so that the longer you hold the button the higher the character jumps. I personally prefer the second method since it gives you the ability to add more variety to levels in regards to jumping.

o   Jumping also can have forgiveness systems such as:

§  Ledge grab – allow players to catch a ledge when impacting just below the edge.

§  Wall jump – allow players to recover when hitting a wall just below an edge.

§  Allowing late jump – allowing a short window of time where players can press jump and get a jump even if they barely ran off a ledge.

§  Edge assistance – Bump players up onto a platform they barely miss if they haven’t fallen below the edge.

§  Sliding up – allow players to wall skate up in order to slide up and over the edge of a platform if they hit the wall just below the edge.

·         Run Modifier – Running isn’t required to make a great side scrolling platformer but it gives players a more layered experience. Allowing players the ability to increase their speed through the use of a run button or a mechanic is a major foundational element to some of the best platformers of all time. This allows the game to be played in 2 completely different ways.  Players can play the game in a controlled, easy and consistent manner by just moving through a level by default. If a player can chose to increase their speed then you allow them to enter a “risk vs. reward” scenario. They can jump farther and move faster but the cost is that they will have less time to react to obstacles and enemies as they come on screen. This means there is an increase in adrenaline when you play by moving faster. This speed increase provides players the ability to feel a greater sense of accomplishment when “flowing” through the level at high speed. This will also make it easier to implement a time attack mode since there will be a greater range of times between players who run and those who proceed with caution.

·         Collision – A platforming game is only as good as the character, enemy and world collision and the interactions that contact provides.

o   Level collision should be very clean and precise. The art should match the collision as much as possible since this is what players see. Build your game around standards.

o   Players don’t like to hit their head while jumping unless there is a reason to do so. Don’t build low hanging areas that players will jump into unless you have a mechanic that uses this. It’s frustrating to miss a jump because you bumped into some collision hanging down over a ledge you were trying to jump to. Especially if it’s because the developer thought it looked better and not because there is a gameplay reason.

o   Walls and the edges of platforms should be totally flat so that if players jump into them while grinding into them then they can slide up them without hitting their head on some lip or overhang.

o   You always want to know when you are going to fall off of a ledge so try not to round edges or get crazy with the art. This goes hand in hand with the representation of the playable character. The characters art should match the collision as closely as possible so that players know exactly when they will fall when approaching and edge.

o   Enemy collision can make or break your experience. If you are coming down on an enemy that you can “BOP” then you should get the “BOP”. If you are getting hit by the enemy when it looks like you should be hitting them then you need to fix the problem by implementing the damage or bounce state differently.

o   Interacting with enemies should feel consistent and predictable so don’t move their collision around erratically or animate them outside of their collision bounds.

Those are the foundational elements that I believe need to be right. Particle effects, Sound, Animation, Graphics and the way things sort with one another are all incredibly important too. If you do anything poorly then the game can suffer so just remember that there might be more to fix when addressing a problem with the feel of the game.

Development Tips

Now that we’ve covered the foundational elements I wanted to just list out a few other helpful tips that don’t get into as much detail. If you have any questions about the meaning of any of these or need clarification then email me or leave a comment and I will try a give you a response if I can. These are all my personal opinions and philosophies so don’t worry if you don’t agree. I’m just trying to provide guidance if you don’t feel you know what is right or wrong.

o   Use Measured Jump Distances – Don’t require maximum jump height or distance on any jump unless it is a jump to an alt route or secret. You should always give a bit of buffer room in case players jump early or late so that they still land comfortably. If they are jumping up onto a ledge then they should come down onto it and not just barely slide onto the top from below. This way they feel that they came down and connected with the platform after a successful jump.

o   If it is awkward then fix it – If you make an interaction or a level sequence that feels awkward then you should probably remove it and replace it with something that feels better. This can be things like bumping a player before a jump or having them land in a weird location. Play the game as if you are making mistakes and see where you’ll end up. Taking the awkward moments out of your game makes the game feel more polished and can be the difference between an ok game and a fantastic one. It doesn’t take much to make people feel bad about the experience. It’s ok to reword and redo something until it is right.

o   Names Matter - What you call something when it is being created defines it. A level called generic level 01 has less potential to be good than one with a name like Laughing Bouncers. Words have power and they define things. When you hear words describing something they will inspire people to do more.

o   Take the Easy Path – There are things that are easy to do and there are things that are hard to do. If something is hard to do then it will take lots of time and generally be more difficult to change or tweak. There is a good chance you can do something easy that gets you similar if not superior results. Plus you can see the results more quickly and refine/polish it with the extra time you have.

o   Give it Character - Everything you create is an opportunity to have character. A round creature is more interesting to bounce on than an object more often than not. It doesn’t have to be alive to have character but you want it to be memorable.

o   Make it Memorable - Every level should be remembered and defined by a “single” thing that stands out. This could be a gimmick type or a moment. If too many ideas are used then you won’t remember any of them.

o   You’ve got to keep em' Separated - Background separation is important. You should never be confused about what a playable area is and what background elements are. If you can’t interact with it then it should be a different color or brightness than what you can. If people try to jump onto background elements thinking they are playable area then you have failed and you should fix the problem.

o   Landmarks - Sometimes a really slow moving landmark in the background is more memorable than lots of different elements. Take Rygar for example. The most memorable level element in the game is sun right in the middle of the screen at all times. One large ball of light stands out in your memory more than any of the other background details. It probably took less effort than other levels too.

o   Good Ideas - a good idea can be reused multiple times. A bad idea makes you struggle thinking how to use it more than once and work hard trying to implement it in the first place.

o   Out of Sync – Sometimes having elements (level obstacles) that are timed differently and feel out of sync with each other make for more interesting gameplay sequences. Imagine you have 3 pillars bobbing up and down. Even if they are all moving the exact same heights you can change their timings to spice them up. A good example would be having one completing its movement in 3 seconds, the next completing its movement in 9 seconds and the last one completing its movement in 6 seconds.

o   Memorable Repetition – Sometimes doing the same thing over and over and over again can be memorable so long as it doesn’t happen all the time.

o   Breaking Patterns – A great technique for making a memorable sequence is to establish a gameplay pattern and then break it when players begin to predict and expect it. (little little big, little little big, medium big big big little)

o   Everything Matters – don’t ever use filler content. Every screen is an opportunity to do something new. If you have a section of the level without anything interesting then put a secret cubby there with hidden pickups.

o   Secrets – Use secret cubbies to hide things often and in obvious places. If you see people accidentally bumping a wall when they play a level then put something they will find there. You can set up situations to attract people’s attention.

o   Split Paths – If you have 2 different routes in a level make sure that the player can see both at all times.  It often sucks to play a level that branches where you lose sight of your other choice. Some people will be bothered and really want to go back and see what they missed. This takes them out of the moment and disrupts the flow of the level. If they can see both paths at the same time then they will be able to see if they missed something of interest and aren’t forced to worry or stress about it. They can choose to overlook it or move on.

o   Motion Matters – Moving things are more memorable than static things. You can create all kinds of interesting configurations to play on using different movement patterns and shapes. Try to keep things consistent and understandable in a level. You want players to get into a rhythm of understanding. Using too many different configurations of motion can end up being a random mess.

o   Iconic – Everything you make in your game can be memorable and recognizable. If you put any item, enemy, object, level detail or character from your game on a shirt would it be appealing? Could you tell which game it came from immediately? Does it surprise you? Does it have personality? Do you remember it? Can you make it more interesting or funny?

o   Don’t Band-Aid – Super Mario Bros. was a good game with run, jump, and fireballs alone. If you feel the need to create something completely new then look at your core mechanics and see what could be improved.

o   Interesting Pickups – You can use pickups such as coins, rings, bananas, etc. in order to make levels more interesting and keep players occupied. Collecting these pickups should have a reason and provide a benefit to the player. If you give them too many too often then they aren’t valuable. If you give them too few then they are a frustration. You can use interesting configurations of moving pickups to make a level more memorable. Pickups can move up and down, move on a path, rotate, bounce, disappear, or any number of other things to differentiate one group from another. You’re pickups don’t always have to be static in place.

o   Pickups as a Guide – You can sometimes use pickups to guide players to play in a certain way but you don’t want to abuse this. If pickups always show the perfect route then you are basically playing the game for players instead of letting them use their own timing. You can guide players into secret locations or help them time a hard jump by using pickups.

o   Use a Definitive Idea – Try to pick an idea for a level and stick to it. Jack and the Beanstalk is more memorable than Jack and the 12 beanstalks attached to 3 buildings, a tower and 2 busses moving over a river covered in oil and burning. (Even if the second version sounds more original to you!) People tend to forget levels that use too many different ideas. You want to be able to say “it’s the (insert a memorable word) level” when communicating with friends.

o   Use Other Senses – a level element can use other player senses in order to be interesting. You can find interesting ways to use how players see something. You can mess with time, gravity, music or any other number of elements in order to make something cool and unique/

o   Even Pacing isn’t always Good – If something stays the same difficulty the whole time then it’s not interesting. Mix up the difficulty to keep players interested and involved.

o   Getting to the end is the reward and not the challenge - Difficulty should often ramp more like this: Easier, Hard, Medium. There should always be some element that has a bit of challenge otherwise players might not feel connected. Ease them into the unique mechanics of the level. Challenge them in the middle giving them a hard situation to deal with and then ease off and let them show off a bit towards the end.

o   Restrictions Create Gameplay – Often times preventing a player from doing a specific action can allow you to create new gameplay sequences. For Example: Placing spikes on a low hanging ceiling will kill players if they press jump. This means that you can now force players to deal with a unique situation only using their movement. This means you can mix up the gameplay from the standard style and provide interesting challenges that require more specific movements.

I know there are going to be certain games and certain situations where these tips won’t apply or aren’t going to work. These are just a few of the things I try to think about when making platformers. You are the only person who will know what is best for your game. Let me know if you have found this interesting or useful and feel free to ask questions if you’d like any more information.

I love platformers and could talk about design philosophies related to them for hours. I have plenty more to add to this but it’s already long enough. I personally find it easier to talk about these elements than to write them down so I may end up recording something with friends later.

Thanks for reading.

Friday, February 1, 2013

Platformer Mock Up

This was a mockup I did in about 2 hours. The tiles are all eyeballed sizes but they get the idea across. I like the ideas enough to maybe mess with them more later. I might try and color this or redo it using actual tiles.