In the past I have spoken about difficulty curves and how games should introduce new concepts/mechanics to the player, however I recently came across another similar problem that I needed to fix. How can I empirically know a part of a level is not particularly harder than the bits around it?
In Undercrewed players cooperatively control the same spaceship by walking around and activating different parts. A level will consist of a handful of objectives to complete while various different enemies attack the ship.
While observing different people play I became aware that often the difficulty of the level would go:
Ideally I wanted a level to be better suited to Goldilocks and be ‘Just Right’ all the way through.
I know I’ve preached a lot about peaks and troughs in excitement being a good thing, however what I had here were easy parts verging on being boring and hard parts that seemed impossible.
I built in some tools to help get data from my beta players, this would give me a basis to start my work on.
The first thing I did was just record the players HP over time, ideally for maximum excitement I wanted the player to feel like their HP would run out just before the end of the level. This was made easier by the fact a player could not get HP back in Undercrewed (it was an early design choice and there are many arguments for allowing players to repair mid-level).
While for me the amount of health the player has when they finish the game is important, the exciting bit is how you get there, I didn’t want any players no matter their skill level to finish the level with full HP.
Players finishing the level with about 10% to 20% left seemed about the right spot, it gives the feeling of only just getting through and the anxiety of needing to stay alive. However from about half health I start having sirens, cracks, and fire appear to help increase the perceived feeling of danger even though players are still fairly safe at that point.
The rest gaps between each challenge allows players to calm down and evaluate the state of play and get a better over view of what happened and what is coming up. It also allows players to go around fixing parts of their ship that have been damaged.
It's a real challenge getting the difficulty just right because everyone has a different skill level. Players could build a spaceship that was better in different scenario; Some ships were smaller and faster to avoid shots, some had lots of shields to block attacks and some just had more hull to withstand damage.
While so far I have only spoken about Undercrewed at some point in every game a developer has had to wonder “is this too hard for this point in the game?”. They might be thinking about a jump the player has to make, a new enemy, a concept the player needs to understand, a puzzle etc.
So the title “How to build levels at the perfect difficulty” is a little misleading because they don’t just magically happen, you have to get many players to play them and iterate on them until they match the majority of your expected player base. You might be making a game that is supposed to be hard, however you still don’t want outlying parts that are harder than the bits around them.
In Half Life 2 they record the location every player dies at. You can see the death map for each level:
I love this map from Half Life 2, Episode 2, The Outlands, where you can literally see how it gets harder from left to right as it gets more yellow/red where players were getting killed.
Not all games feature the player getting killed and having to start at a previous point, however you could record if the player spends a particularly long amount of time on a puzzle or in an area.
You could try; counting deaths in a level, counting number of times a level is attempted, checking the time to complete a level. (however this all requires stat collection)
You might not need to put in specific developer tools to record this information, if you have online leader boards you might be able to check levels with exceptionally high/low averages.
Watching streamers play the game - this is actually a very good way to play test a game. Often you can watch the gameplay and see the players facial expressions. I wanted to include this one because it's easily overlooked and doesn’t cost anything, require any development and does not require sending stats to a server.
Play with people at expos - Normally for an expo you will show a smaller section of the game that is made easier but also includes lots of it's selling features, however once you have played a level 100’s of times with different players you start to notice small details that show what the player is thinking. It’s hard to get someone to tell you the feedback because a player is more likely to think it's their particular skill set that made a part abnormally hard/easy. However you can see what they are trying and what they expect to happen.
Often when someone says “just make that part easier” they are massively oversimplifying the problem, it would be a terrible idea for enemies to have different health points at different parts of the level, or have enemies attack more frequently. First it might be technically difficult to implement and keep track of, but more importantly if you have already set expectations for an enemy at the start changing how often they attack is likely to bewilder the player, even if you tune it down.
Lots of these things are good to do anyway from an accessibility point of view. The player might have some impairment that makes a puzzle harder for them or just a crappy joystick on their gamepad. Players might be like me and think they can handle all games on hard like I used to when I was 16 years old, but now not so much.
Creating tools and Cheatsheets to help – It's often helpful to have a place you can look up handy numbers, like how many blocks a maximum height jump is or how many attacks it takes for something to go from full health to dead. With these numbers you can start working backwards, you select what you want to be the hardest jump in the level and work back progressively working towards that.
In Mario Maker it shows you how far Mario can jump.
Optional objectives - This almost allows players to pick their own difficulty, lots of people are quite happy to spend 20min extra on a tricky task just to get a sparkly tick in a box at the end of the level. As long as you don’t give them something that makes the rest of the level easier like a new weapon allow them to internally show off to themselves.
In Borderlands optional missions are marked with a + next to them, This image is a bad example however there are definitely examples where you will get extra rewards if you kill an enemy with a fire weapon or in a particular way. However I was too lazy to play through to get a screenshot of that.
Achievements – Much like optional objectives, Achievements are like game wide optional objectives. Achievements give tasks to players that are willing to work for them and as long as you have a range for all skill levels players can always aim for the ones just out of their reach. I won’t go into all the benefits of adding achievements but this is a good way of making a game that is too easy for someone a bit harder.
Allow players to explore other areas that they feel are their skill level – This really only works for more open games, but if a level 10 player wants to run around a level 5 area smashing things up let them, as long as a level 5 player can easily get out of a level 10 area so they don’t get stuck all is good.
In Oblivion there were so many side quests I basically never did the main story and just went between different side quests. However this is also an example of how not to do level exploration because as you levelled up the enemies around you did as well, so while this did give players a way to get better at the game it's likely they also levelled up non-combat traits like Alchemy and Speechcraft meaning the enemies later on in the game would be harder. Because they still levelled up but hadn’t allowed for those skills and only got better at combat.
Dynamic difficulty in games - Left 4 Dead 2 featured a system called The Director which was able to judge how well the players were doing and use this to change how the level would progress, it could spawn different items to help the players or change where enemies would come from. It could even change the map to put player down an easier or more difficult path.
Allowing players to respawn really close to where they retried - Nothing is worse than spending 5min getting back to a place you just struggled at, or worse having to watch an unskippable cut scene. This is another reason why it is good to introduce a mechanic at the start where it is safer and retries can be far more rapid.
Timed hints - If you can see a player has spent an unusually long amount of time in an area they might not have understood a puzzle or solved an earlier training version by fluke. It's fine to hide help messages or audio voice lines into the game to help out those people. Other players that solve the puzzle first time will not even know they are there so it won’t diminish their experience, but it might give a nudge in the right direction to a person that needs them. Also it's a great place to add in some humour or optional character development.
Another good way of just hinting someone in the right direction is to slowly add some sparkles or a glow, you might find someone didn’t notice their objective like a key/switch/button and rather than having them scratching their head thinking they are in a dead end it's ease to implement something that is just a little eye catching.
In this Far Cry 5 climbing puzzle they always light up the next area the player needs to be getting to so it is visually easy to find.
Show where to jump with a coin or dirt pile – This is just good basic game design, and actually I would argue that it is likely to help someone more who has more experience or more ‘game sense’. But it's just a nice way to subconsciously inform someone that this point is important.
Here in Tomb Raider you can see the swinging caged area has been made yellow to show to the player this is where they need to jump to, there is also a wooden board showing the direction of the next jump. You can even see in the background a white corner which shows this is a wall you should climb up.
Showing players what objects are part of the puzzle and what parts are just scenery is really important. With more ‘game sense’ comes a better understanding of what looks out of place, but you don’t want people spending times thinking about solutions that are not even possible in your puzzle.
Let the player change the difficulty once they have started - It's likely someone won’t know the difficulty they want to play on until they have actually started playing for a bit, so while they are in a level (or maybe do a popup a few levels in) allow them to adjust the difficulty. Also tell the player what each setting does “gives enemies 20% more armour”, “Makes shops 30% cheaper” etc.
Borderlands 3 tells you exactly what changes when you use Mayhem Mode to make the game harder.
Show the player what the difficulty changes - Does the difficulty just make the enemies harder to kill? Or does it also make them better at hurting you? Does it make the puzzles harder? Will I get more points for doing it on hard? These are all things players will be asking themselves. It's very likely some players will be put off if they know they are going to get killed quicker or if puzzles will get hints.
Gears 5 Horde Mode gets a more intimidating crest and shows what gets added at that difficulty.
Communicate with the player - Anno 1800 doesn't have a slider that lets you change the difficulty, however it has lots of options you can change and they will tell you if this naturally makes the game harder or easier.
Anno 1800 - Slider at the top displays how hard a game with these settings would be
Optional hidden areas, secret collectables, secondary optional missions – These all allow the player to practice and get better at a skill. HOWEVER it's really important that you don’t give players an advantageous reward for doing these because then you will make the skilled players even better. This will make your game harder to balance; able players will get bored quicker and less abled players will find normal skilled areas hard.
In Super Meat Boy there are optional purple warps that give players extra levels to play, however they are notoriously hard to get to and disappear if you don’t get to them quick enough. These additional levels are a little more quirky and normally explore a mechanic in a very in-depth way. A perfect reward for those people skilled enough to get to them.
Chariot uses little sign posts to show optional areas, if an area is just a difficult challenge it has a number of stars on it, and it uses an icon of two people holding hands to show this is an extra area for two players.
This whole time I’ve been talking about the raw difficulty of a level, but I could write a whole article on the perceived difficulty of a level and how to best use it; when to make a situation feel more stressful than is it, when to suddenly ramp up what is happening and how long to keep things action packed. Maybe one day I will.... Today is not that day.
Be sure to send me over other examples you find on your quests.
I have a full detailed list of what you should and shouldn’t do to change the difficulty in games: http://www.davetech.co.uk/difficultycurves