Sponsored By

Analysis: Check And Mate - 'Critical Moments' in Rogue-Likes

John Harris examines the history, present and future of Rogue-like dungeon-exploring games, paying special attention to 'permadeath', fairness and 'critical moments' in - and partially outside - the genre.

John Harris, Contributor

November 25, 2010

20 Min Read
Game Developer logo in a gray background | Game Developer

[In a special design column taken from his acclaimed GameSetWatch '@Play' series, John Harris examines the history, present and future of Rogue-like dungeon-exploring games, paying special attention to fairness and 'critical moments' in - and partially outside - the genre.] If a game has pre-made levels, 'unfair' situations for the player can be ironed out and carefully balanced to never occur. However, in Roguelike and other games that generate situations algorithmically, a lot more care must be given to the rules of the world, and, specifically, the items and monsters within it, so as to be fair to the player. All well-designed roguelikes adhere to a certain type of fairness involving something I call critical moments. Understanding them is vital in designing not only good Roguelikes, but all kinds of randomly-generated games that use permanent death. Permadeath defined A reminder is in order as to what constitutes “permadeath.” Games that use it are those that allow the player to catastrophically fail, losing the game, without recourse to continuing play other than starting over. You might be able to “save” in these games, but upon resuming play the save data is rendered unusable. Saves could be considered analogous to temporarily holding one’s place in a game rather than creating a checkpoint from which repeated resumption is possible. Sometimes I call saving under a permadeath system a “bookmark save.” One fact about games with permadeath is that they must be designed in a much more rigorous manner than games that allow multiple resumptions from a save file. In typical games that provide for saving, generally a player finds a save point right before a boss. When fighting the boss, it generally has a pattern or weak point that is difficult to figure out, meaning the player’s character dies. Although often called “a game over,” the player then resumes from the save point and tries again, using the information from the prior attempt to try to do better this time. This may be repeated many times, until the player is at last successful, the boss is defeated, and the player may move on. Most games made these days use a system like this. In fact, they have long been designed with the understanding that such a system will be in place. The result is that most games are often not designed in such a way that players will be fairly able to complete a leg of the game on one attempt. These games are expected to be played in many goes, with more information on difficult sections gained on each failed attempt. They don’t even try to give the player enough information to be honestly capable of finishing a tough part upon seeing it the first time. There are often hints, sure, but there is really no effort expended in testing to ensuring bosses are fairly completeable without prior knowledge. Permadeath games do not have this luxury. Thus it is that much of what players hate about permadeath in games is, truthfully, just as much due to lax design. I observe that, in games that use sparsely-placed save points, the further apart the saves are, the more the implications of the play structure come to resemble those of permanent death. If it takes only a minute to get to a boss after a save, the stakes aren’t as high as if it takes half an hour. In fact, a permadeath system could be considered analogous to a game with a single save point, right at the start of play. Critical moments The best way to explain critical moments, I think, is to present them as a series of hypothetical situations. We’ll use Rogue as our example game. Take this situation: rogue-empty1.png Here, the player has just come down the staircase into a new level. In this case the player seems to be relatively safe. He can move in any of eight directions. There is nothing nearby that can cause him harm. Immediately speaking, it doesn’t matter much what the player does here. He is free to take whatever actions he feels necessary to secure his character’s long-term survival. This is because this is not a critical moment. Now, let’s look at this situation: rogue_adjgriffin.png Griffins are among the strongest monsters in Rogue. If the player is low-level, then a single hit from a griffin could wipe him out. For the sake argument let’s assume this is the case. That then makes this a critical moment: if the player doesn’t take the right action this turn, the game could end immediately. The right choice must be made to survive. We might borrow a term from chess here and say he is “in check,” which is appealing not just for the danger of the situation but because a roguelike character’s movement options mirror those of a chess king. Like when a king is in check, the player must take immediate action to continue play. Note that, unlike chess, there is randomness in Rogue. If the player’s character makes a mistake he may die, or instead the monster might miss on its attack, or it might do less damage than the player has hit points. Most situations in Rogue are like this, but what is important to this discussion is the fact the character might die. So, if the player chooses to attack the Griffin, well, then if he’s low-level he’ll probably not kill the monster immediately. It’ll then get its turn to counter-attack, which is perilous for him. We need to prevent those monster attacks, or at least postpone them. So that’s a bad move. If the player moves to another space adjacent to the Griffin then it can still hit for its turn, so that’s also bad. Fleeing So, the choices here are either to move away from the griffin, or to use some other option. In the former situation the griffin will certainly move another space forward, putting the player in danger again but postponing the fatal attack by one turn. That could be either a good or bad thing: Good:

  • the player will have had an extra turn to heal from prior damage;

  • the monster might be naturally slower than him;

  • the player might come across the stairs out offering escape (true in Rogue but not always in Nethack or Crawl, where adjacent intelligent monsters can follow down stairs);

  • the player might be able to continue retreating in a loop, allowing healing up to full.

Bad:

  • The monster might be faster than the player, meaning some of those running away turns the monster might get a free attack;

  • the direction the player is running towards may be a dead-end, meaning the player won’t be able to evade forever. Eventually his back will be to the wall, and he’ll have to flee around the monster, or maybe even fight through;

  • another monster might arrive from out of sight in the direction he’s fleeing. Even if it’s a weak monster, when it gets up to the player he’ll have to spend a turn killing it, which will give the griffin a try at cleaning his clock.

In these “bad” cases, if the player has no other escape items then he has actually made a critical error in letting the griffin get this close, an issue we’ll get to later. Item use is the other solution to this situation. Well-designed roguelikes provide a number of these items, one-use, multi-use, infinite use and equippable. If he doesn’t have any of these he’ll have to resort to fleeing, and the possibility of any of the bad things listed above. Items The point here is that the end of a game always comes down to such a critical moment, whether it is recognized as such by the player or not. The most devious moments are those that don’t look dangerous. If: -all critical moments in a game are recognizable and/or avoidable, -the player has complete knowledge of the game rules, -and is playing with sufficient care, then the player can always survive. An entirely fair game is bound to always provide such situations. On the other hand, it bears no responsibility to warn of check, and so the player doesn’t always know when he must take a particular move to survive. The player may have to improve his state sufficiently to increase his powers of survival, through increases in power, mobility or vision. Doing so “pushes back” the criticality of situations. If the player has gained many hit points then he will probably be able to survive a single hit by that griffin above. If he can move quickly (potion of speed) or slow the threatening opponent (wand of slow monster) he could escape or use “hit and run” tactics to kill the monster. If he can see an extra space in passages or darkness he might be able to see the griffin coming before it gets adjacent. But there are also tools that don’t offer a complete escape, or an escape with conditions or drawbacks, or a random chance of failure. To look at a more complex situation: if the player has a scroll of teleportation then he can probably escape from the griffin. But teleport scrolls are random in operation. They move the player to a random other in-room spot on the level. That may be adjacent to a monster just as dangerous as the griffin; it may in fact be one of the other spaces adjacent to the very griffin causing the trouble! It might seem that this makes the scroll a bad choice, but practically it is a small risk. That is part of what makes the decision to use the scroll an interesting choice. In this case the player would probably want to use a surer escape item to get away from, or even neutralize, the griffin, but if no other choice is available the teleport scroll is still available as a last-ditch option. The First Law of Roguelikes To return to the game, let’s consider this situation now: rogue_door1.png This is one of those cases where the player doesn’t know if a situation is critical. Rogue doesn’t let you see beyond doors until you step into them. rogue_griffindoor.png Although unlikely in a given instance, the strongest monster that can be generated on this level could be on the other side. One of the less fair things about Rogue (and many other Roguelikes as well) is that, in a case like this where you blunder into an enemy, it’ll get the first attack on you 50% of the time, and before you even know it’s there. If that attack is strong enough to kill then your game is over solely because you did something you must do, frequently, just to play the game. It’s not likely for that to happen, but as I’ve said in past columns, success in Roguelikes comes from not playing dangerously if you can help it. If you survive in a situation 49 times out of 50, but keep encountering that situation, eventually the dice will roll against you. Even if you just roll once, that’s still a 1-in-50 chance of losing, and slim chances come up sometimes. Thus, the player is advised not to enter doors at all if he can help it. The trouble is, he can’t help it. Players are constantly entering doors throughout most Roguelikes. All the means of leaving rooms in Rogue either involve doorways or expending a resource of some type. What’s more, on the other side of doors are dark passages, twisty tunnels that the player can’t see more than one space down, which in game terms is the same kind of danger as entering a doorway. Doors are entered only a relative few times each level, but every step taken down a passage might be its own critical moment! If you we were to extend the player’s sight range in passages the situation is eased a bit, since the player can wait upon seeing an approaching monster and thus get in the first hit. But, assuming monsters have the same vision range as the player, even being able to see two or more spaces away in a dark corridor doesn’t much lessen the criticality of monsters meetings in passages. You might not be in danger of an attack this round, but the enemy still blocks that passage and forces you to move away. Unless the player has an escape item or some such, it merely postpones the inevitable. When the player enters a new dungeon level, there is a small chance that he’ll begin adjacent to a powerful monster forcing him to flee immediately. And, if the only good direction to flee is a dead-end, it’s even possible that the “critical moment” was the turn before entering the new dungeon level, which the player has absolutely no chance of knowing ahead of time. Certainly in these cases, the player is screwed. A situation nearly identical to the one pictured below occurred to me while I was taking screenshots for this column: rogue-painful1.png This happened when I came down the stairs from level 2! The game happened to send in the strongest monster that could appear on the level and two hobgoblins, and all of them stood between me and the only exit. Situations like this do occur in Rogue sometimes, though they are rare. With a scroll of scare monster I probably could have survived it, but with that item you can survive nearly anything. In this case the critical moment was the staircase on the previous level, and I had no way of knowing slithery death was waiting on the next floor. Situations like these bring us to an important design dictum, so important we might call it the 'First Law of Roguelike Design': Provided reasonable play, the player’s character should not be killed or suffer great permanent harm in one attack. “Reasonable” here means playing in the way intended as “normal” by the developer. If the player can survive, but only by playing in an annoying way, such as, say, from searching every space to ward against the possibility of an instadeath trap, that is bad design. (If the developer does intend that searching to be normal then it’s probably bad general game design.) It also means that, if the player has a temporary condition that makes death more likely, he has no assurance. Being low in hit points means you shouldn’t go exploring dangerous tunnels. "Permanent harm" here means types other than straight hit point damage, such as substantial strength drain. Those instances have the potential to stack up, so the character might be subject to multiple unavoidable such drains in a game, making him rapidly unplayable. The Rogue analogy is getting Rattlesnake-bitten enough that your Strength drains to extremely low levels. Strength drain cannot kill by itself in Rogue, but it is possible for it to get so low that the character is impossible to play unless he uses a potion of restore strength, which are not guaranteed items. How much harm is too great? It depends on the extent of the damage and how many turns it takes to get out off the zone in question. The rattlesnake floors in Rogue don’t really last that long. The Vampire floors later, depending on version*, could be hazardous but are the last floors of the game. The drain floors in Super Famicom's Shiren are more dangerous, relatively speaking, but are only two levels out of 30. * Rogue's vampires drain maximum hit points. It seems that Rogue Clone IV's vampires drain maximum strength. The strictness of the law is less if the game's sight rules were changed to always look at least two spaces away, although this is hard to do in the case of changing dungeon levels. Still, this might be an interesting avenue for design exploration on the part of inventive game authors. Situational danger & improving state For illustration purposes I’ve overstated the danger a bit. If Rogue threw griffins at the player from the start it wouldn’t be a very fun game. Fortunately, most monsters aren’t able to kill in one hit. No monster in the game has an instakill attack. Some might do so much damage as to deplete the player’s health in one attack, but only if he is very low-leveled. Thus, part of the necessary process of the game is improving your statistics to make dangerous areas survivable. There exists one popular roguelike game, however, which is famous, or infamous, for its instadeaths: Nethack. And yet, Nethack is also known among experienced players for fairness. It might even be too fair. How are these two reputations reconciled? Let’s look at some of its instadeath monsters and observe how they obey the stated law of design. nh_cockatrice.png Cockatrices Cockatrices appear fairly early, before the player has had a chance to improve his state much. By one measure they are the most deadly monster in the game, the source of more unique death causes than any other monster. However: - In melee, cockatrices can only turn the player to stone if he hits without a weapon and isn’t wearing gloves. In other cases, the player “hears the cockatrice hissing,” which either has no effect or begins a gradual petrifaction process. This can be halted by eating a dead lizard or an acidic monster, both of which are common monsters at low levels, and also are among the few monsters in the game whose corpses never rot. It is extremely unlikely the player won’t have at least one melee weapon when he sees his first cockatrice; the only role that doesn’t begin with one is the Tourist, they’re frequent finds on the dungeon floor, and many intelligent monsters are generated with one. - Perhaps paradoxically, once the cockatrice has shuffled off its mortal coil it becomes more deadly to you, because it is awfully tempting to pick one up (when wearing gloves, of course) and start whacking monsters with it. This is avoidable, simply, by not doing that. If you do, and are carrying so much that you are in burdened state, you are taking a grave risk since falling into a pit trap may cause you to land on the corpse, and pit traps are hidden features. - There are two genuinely treacherous instadeaths associated with cockatrices. The first: if you aren’t wearing gloves and are blind, and step on a corpse, you are instantly turned to stone the moment you feel it at your feet. Fortunately, a cockatrice is dead usually because you killed it, and if you’re blind you probably killed it in melee so you’ve probably heard its hissing. In those cases, you probably shouldn’t walk around until your blindness has worn off. - The second case is when an enemy picks up a dead lizard-bird and whacks you with it. This is legitimately terrifying, but surprisingly rare. Only intelligent humanoid enemies wearing gloves can use this trick. In practice this is almost exclusively soldiers, who you won’t even see until the midgame. And again, they don’t try to kill cockatrices themselves to use this trick; it usually only happens when you kill one yourself and they get to the body. nh_medusa.png Medusa Medusa petrifies your character immediately if you enter her presence while sighted. She is always present and always stands on the downstairs to her level. But she always appears on one of two specific special levels, and once you know she’s there she’s not so bad. Blindfolds (or, in a pinch, towels) can usually found by the time you get to her. Barring those, you can just dig down on her level to bypass her until it’s time to ascend with the Amulet, by which time you’ll have had around 30 levels to scour for items and at least two wishes to boot. In older versions of Nethack Medusa was much more treacherous; she could be generated in a normal room on an otherwise-ordinary level. That was certainly a case of her breaking the rules. nh_masterlich.png High-level magic users Some monsters in Nethack are able to cast spells, and if they’re higher than a certain level one of those spells is Touch of Death. These foes generally appear late, but they are one of the most significant roadblocks in the game, the primary reason magic resistance, which provides an infallible defense against Touch of Death, is so important an element in the ascension kit. There are two major Nethack balance variants, Sporkhack and UnNethack, and both take measure to reduce the essentiality of magic resistance. This spell doesn’t break our rule only because by this time the player has probably acquired a means of magic resistance. Yet note that if he hasn’t this is a possible source of danger, perhaps the last really great danger of the game: the only guaranteed wishes are in the Castle, and the courtyard of the Castle usually contains liches, who are capable of using Touch of Death. If you don’t have magic resistance by this point then it’s advisable to genocide them if possible. nh_dragons.png Ray users Black dragons have a disintegration attack and might come into view lined up. If they choose to breathe right off there’s not much the player can do to avoid the attack. If he’s wearing armor, however, that will get disintegrated first. That will put him in a lot of trouble, and vulnerable to a second blast, but at least he’ll still be alive. This is a reason why black dragons are sometimes a genocide target. It’s important to note that this case turns up surprisingly rarely, although at least one of these dragons usually turns up each game. They are mid-game enemies, and usually the player has a means of detecting them from afar by the time they enter generation. More dangerous is the canonical Nethack screw-monster, the gnome with a wand of death, found on the dungeon floor. While rare in individual games, every Nethack player encounters one eventually. The only perfect defense against a wand of death is magic resistance, which is hard to come by for most classes in the early levels. This is one of the few things in Nethack that can defeat even perfect play. Fortunately, random death wands are as rare as wands of wishing. Almost as dangerous early on are strong attack wands such as fire, cold or lightning. Those are not typically instant kills, but they are strong, magic resistance isn’t a perfect defense, and even the appropriate elemental resistances aren’t perfect. In worse cases, the player may actually be forced to rely on one of Nethack “quirks,” the fact that wands can only be fired in cardinal or diagonal directions. Against a demonstrated wand user, the player can usually use the same tricks unicorns use, attempting to move to a knight’s-move away so as to move into melee in the next turn. There are a number of subtle aspects of Rogue's design that, while not immediately evident, combine to make a playable game. It is random, but not too random. It may be possible to codify these things into a set of "laws" of Roguelike design.

About the Author

John Harris

Contributor

John Harris writes the column @Play for GameSetWatch, and the series Game Design Essentials for Gamasutra. He has written computer games since the days of the Commodore 64. He also maintains the comics blog Roasted Peanuts.

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like