It's not enough to just say that a game is simply "bad", and that it has nothing it can teach us: why is it bad? Is there a problem with the level design or the character movement? Is the game not rewarding? Perhaps the game is repetitive and unimaginative, or perhaps the game is targeted towards a demographic other than us. There are many ways to lose a player, but the fastest way is to make your game "not fun" - so how can we avoid this?
Keep the Player Engaged
It seems obvious: gamers enjoy playing games. A player wants to be engaged, and to be involved in game in a way that provides some sort of mental or skill challenge. So why include game aspects that remove the player from the actual game?
Loading screens are the most obvious example of this - no-one likes waiting around. And while high-end titles are largely finding ways around this, mostly by loading assets in the background while the player progresses through the level, plenty of games still suffer from painful loading screens. All games need to load, but its important to minimise the effect they have on game.
If you do include a loading screen, then consider making it interactive: Fifa lets the player practise shooting on goal; Ridge Racer lets the player play Galaxians (a Space Invaders mini-game), and No More Heroes has a star that bounces when you press a button. It doesn't have to be much, but adding a simple interactive element can reduce the impact that loading screens have.
Cutscenes are often guilty of this as well. Unskippable cutscenes are largely hated, but even skippable ones prove problematic: when a player enters a new game, they are often either forced to watch a cutscene before they can do anything (and players want to get to the action), or skip it and miss plot. There's nothing stopping you from having a cutscene after a small introductory level: the story is still there, and the player gets to experience what your game is actually offering. Alternatively, expose the plot through gameplay, so the player can still play while exposition is delivered.
A 2012 study found that the average online video viewer will navigate away after two seconds of buffering. If you're developing a web game, then you have to run the same trial: while players may wait a little longer than two seconds, they won't wait that much longer, so try and keep your loads as short as possible. Anything longer than thirty seconds is dangerous.
In-game, be careful with how you deal with elements such as moving platforms over bottomless pits. If they player misses the jump, they could be waiting 10-20 seconds for another chance. Any gameplay element like this which forces the player to wait will feel punishing.
Super Meat Boy deals with waiting very effectively: upon death, the player respawns almost immediately, meaning their downtime is minimal. This is vital for the game, as levels might require hundreds of attempts to complete. The player is constantly moving, and brief pauses are only given between levels.
It's also worth noting that forcing the player to wait can be an incredibly effective tool: stealth and horror games often utilise it to build tension, and a pause after a fierce battle can give the player time to reflect. Be aware, however, of why the player is waiting, rather than just making them wait to punish them for a failed action.
Keep the Player Challenged
If a game is too easy, then a player will get bored. Similarly, if a game is too hard, then players will lose interest and walk away. Obviously, your target demographic will have a huge impact on this - no-one expects a game designed for five-year-olds to keep the interest of a hardcore gamer - but it's something to be aware of. Who is your game aimed for, and will they get bored or frustrated with it?
Finding the balance between "too easy" and "too hard" is a large factor in games design. Ideally, you want your players to be lost in the game - to be "in the zone". This happens when a player is singularly focused on your game, and if the player is either bored or frustrated, then they will lose their flow.
Challenge can come in a variety of forms, and its possible to set a challenge to the player which has unrealistic goals. If a player knows what they want to accomplish, then they should be able to achieve that without being punished. Poor control systems are often guilty of this, especially when multiple actions are assigned to the same button. Pixel-perfect jumps or physics puzzles that require perfect aim will also feel frustrating. Thats not to say they can't be hard, but it's important to understand the difference between making something challenging, and making something that's difficult for no good reason.
On the other hand, if the player doesn't know what they want to accomplish, then they will feel lost. While sandbox games such as Minecraft function perfectly well without a bulleted goal list, most games have some sort of final goal, from rescuing princesses to saving the world.
Old adventure games often suffered from "lost players". The text adventure Claws of Despair surrounded the player with deadly flames, with the only solution being to type
disbelieve illusion. The mental leap required to find this answer is staggering, and many players must have simply ended their quests there.
Point and click adventures are often guilty of this too. When players got stuck, many simply resorted to simply using every item in their inventory on every object in-game. This process is slow and unrewarding, and while it may seem obvious to the developer that using X on Y yields results, often these puzzles are only obvious after the solution is revealed.
And while point and click games usually revolve around this sort of puzzle element, its important to understand how players think and how to guide them along the right path. Imagine a scenario with the player trapped in jail, with only a key and a file. Neither the key or the file will open the door. If the player is told simply "that won't work" when they use either, then they are being punished for thinking logically. If, however, using the key tells the player "the key has too many teeth, it won't turn", then the solution is then obvious: file the key. The player understands what they want to do (use the key on the door), but its the information gained from failing that helps them progress along.
This line of thinking is not unique to puzzle games; any time a player is stuck in an RPG or platform game it's important to reward the player for thinking along the right lines, or they may become convinced that the correct answer is unachievable.
And lastly, keeping the player challenged means keeping them exposed to new puzzles and gameplay elements. If every time a player got a puzzle in an adventure game wrong they had to go back to solve the previous puzzle again, the player would kick up hell. But when a player falls into a pit, they think nothing of having to repeat the whole level again. The principles are largely the same, and while death should have some form of drawback (to stop the game from being too easy), it requires a careful balance to ensure that the drawback of death doesn't become a punishing slog through previous content.
The Lego series of games, which we've also talked about before, simply knocks some points (studs) off the player for death, and immediately respawns them from where they were last safe. Super Meat Boy, aimed at a much more hardcore demographic, also takes the "immediate respawn" approach, but resets the player to the start of the level. The more recent Mario games such as New Super Mario Bros, which are aimed at a slightly more casual market, tend to hit a comfortable spot: the player has limited lives but infinite continues, which means that although failing a level many times means they have to restart it, they never have to worry about being sent back to the first world for a mistimed jump.
Keep Things Fair
"Fair" is an abstract concept. When players talk about things being fair, they often mean they want to be put in situations where their skills enable them to win. This ties slightly in with the earlier concept of avoiding making things too hard, but has other applications as well.
Sudden death is one of the biggest "not fair" mechanics. Nethack, as an example, had a mechanic where stepping on a certain type of tile would result in the insta-death of your character via deadly trap. In Counterstrike, you can be instantly killed by another player's sniper rifle.
Both of these are basically the same thing: the player goes from full health to dead, and has very little way of dealing with it. Advanced players may be able to cope with the mechanic to some degree, but new players will often feel cheated by "cheap" gameplay.
There are ways to limit the impact of these instant death mechanics. Pit traps might display some sort of warning, or give the player a few turns to quaff a potion before they bleed to death. A sniper rifle might have a laser sight to warn players, or reduce enemies to one hit point rather than killing them outright. These options may not be perfect, but they do go some way to making things feel fairer.
There are other options, of course. Pit traps have been criticised by some as being nothing more than a "hit point tax" in RPGs - the fun they add is minimal, it slows down gameplay by forcing players to check every square they move for traps, and they have very limited interaction with the player (either they hit you, or they don't). In this case, if designing an RPG, why not just remove them entirely, or post obvious signs of danger? Turn the trap into a puzzle, rather than punishment.
Sniper rifles, in a similar way, offer very little interaction for the victim. When the sniper shoots, he either kills you, or he misses, and it's very difficult to deal with a good sniper, for as soon as you move to where you can see him, he can shoot you. There are limited ways of dealing with snipers, and although good players may be able to cope, new players will often see the interaction as "I move - I die".
A weapon like a rocket launcher, on the other hand, offers a much more friendly interaction: when a rocket is fired, the victim can see it approaching and attempt to deal with it. Similarly, pistols or other "weaker" weapons may reduce an enemy's HP quickly, but won't kill them instantly. The split second they have in which to react allows them an opportunity to deal with the threat, and although new players will still be overshadowed by more experienced players, it will (hopefully) be in a way which is less punishing and feels fairer.
The importance of reaction is a very important principle of game design, and a player which is (in some way) locked down will very quickly stop having fun. Look at lock abilities in popular games: chain fear in World of Warcraft, mana drain in League of Legends, land destruction in Magic: The Gathering. Each of these are powerful ways to overpower an opponent, and each have been nerfed, removed, or deprecated in some way, as they put an enemy into an extended position of "I can't do anything". It's one thing to be killed by an overpowered spell; it's entirely another to sit around for several minutes unable to do anything until your opponent finally decides to kill you.
These three main points really revolve around the same concept: keeping the player involved in the fun. When a player is waiting for loading screens, or they're dying repeatedly to a nigh-impossible jump, or they're staring blankly at the screen unable to see where to go, they are passive participants. When a player is dodging rockets, solving puzzles, or fighting space invaders, they are active participants, challenging their skills and experiencing gameplay in a positive way.
A game doesn't have to be 100% action 100% of the time, and it'd be foolish to assume that your story-based RPG needs explosions around every corner. But despite the slower pacing of RPGs, elements such as cutscenes work because the player is expecting them, and (hopefully) is interested in the storyline and development of the world. A cutscene can still count as player involvement, as the player is exploring new story aspects and progressing through character development - but only when the player actually cares about the storyline of your game.
Its important to understand how your game interacts with these concepts. A game like I Wanna Be The Guy breaks many of these design aspects: it's punishing, it's unfair, it leads the players into unwinnable situations, and, for most, it's generally an exercise in controller-throwing frustration. But it understands its demographic: players who want to be challenged in an extreme way. Similarly, the web game QWOP is designed with extremely poor controls in mind - simply walking is 90% of the battle. These games understand what they want to achieve, but they always adhere to the first rule: keep the player engaged. As with any other aspect of game design, you can break the rules as much as you want, as long as the end result is fun.