Friday, August 27, 2010

Special conditions, elemental damage, and resistance I

In this post, I continue thinking about combat systems. As you can guess, this is part of the design phase of a larger game using Inform ATTACK. Today those staples of the RPG genre: poison, diseases, curses, fire damage, and so on.

This topic really falls into two: on the one hand there are attacks that deal something else than damage; on the other hand, there are attacks that deal special types of damage. We will deal with them in turn, focussing on the first in this first post.


Here are some of the special conditions that successful monster attacks can inflict on the player in D&D3: poisoned, diseased, cursed, level drained, ability drained, blinded, deafened, confused, dazed, dazzled, exhausted, frightened, nauseated, paralyzed, petrified, stunned -- and this list is not exhaustive. Apparently, giving monsters such powers was felt to be very important. Why? What's wrong with monsters just doing damage?

The answer is: because damage is either too dangerous or not dangerous enough. Monsters generally need several hits to kill a character; if this were not the case, if damage totals where close to hit point totals, combat would become very random (and increased randomness means increased lethality for the player). But this means that if you are nearly fully healthy, there is little risk in fighting. Even if you meet a strong monster, you have a couple of risk-free turns to see how things turn out.

This obviously deflates the tension of combat. In order to get the tension back, we need bad stuff that can happen at any time, but which is not by itself lethal. This is where poisons, diseases, and so forth come in: fighting that snake is tense, not because he might kill you (you know that you will win before your hit points run out), but because any of his attacks might poison you, which will weaken you for a time that extends beyond the current combat. The snake may not kill you, but he can soften you up for the next monster.

Apart from increase of tension, such special attacks can also be used to influence tactics in several ways. You can give the player a limited supply of "resist poison" potions, and make him decide whether this snake is enough trouble to use them. You can make different combat engines optimal: fighting against the snake requires you not to get hit, which means that ranged attacks, slowing effects, and so on, become much more useful. Or you can temporarily shut down certain combat engines or abilities: for instance, dexterity damage ensures that the rogue can no longer sneak effectively; being blinded makes the wizard unable to read scrolls; being exhausted makes hit-and-run tactics impossible.

When done well, then, such special attacks can really add something to the game. But it is not easy to do them well. Let's think about curing the conditions first. We can put them into three classes: short-term, long-term, permanent.
  • Short-term effects do not last long beyond the current combat. This means that they must significantly raise the danger of that combat, because otherwise they will be of no consequence. It is possible to do this, but the danger of making the effect too deadly looms large.
  • Long-term effects last far beyond the current combat. Generally, they lead to a "rest until over" kind of play -- pressing "." a couple of hundred times in NetHack, or taking some days or weeks rest in D&D. This is generally quite boring; but we want special attacks that raise the tension, not special attack that punish with boredom! Long-term effects only work if you can somehow force the player to go on with the game. (One could put a strict time limit on the game; but it perhaps better to use a carrot, and make the condition go away after a certain number of monsters have been killed, or something like that.)
  • Permanent effects last forever, unless cured. Generally, weakening the player forever is too harsh -- it makes achieving game balance impossible. So we add possibilities to cure the player: potions of extra healing, wands of stone to flesh, cure disease spells, and so on. But the net effect of this is that we turned the game into multi-dimensional attrition warfare: the monsters attempt to inflict conditions X, Y and Z just a little more often than the player can find ways to cure X, Y and Z. Now this may be a matter of taste, but in my experience, such gameplay sucks. Is there anyone who enjoys constantly having to find potions of cure poison, and applying them whenever he is poisoned, and then hoping that he won't be poisoned too often? It offers no tactical depth, and is a bit too much like bookkeeping.
  • Some games have conditions that immediately kill the player. ("Finger of death", anyone?) This either makes the game very lethal in an arbitrary way, or forces the player to find some means of immunity. We'll come back to that below. In general, I'm not a fan of this.
So, we want conditions that are self-curing; and that inspire interesting tactical behaviour, rather than boring behaviour. Being in such a condition should, at a certain level, be fun, at least in the sense that they require you to break your routine. (Conditions that merely make you go through your routine at reduced efficiency are Bad: I'm thinking of you, poisons and diseases and level drains in D&D3!) The same goes for trying to avoid such a condition: in NetHack, voluntarily blinding yourself by wearing a towel over your head when you meet a monster that could blind you for far longer if you don't, is fun.

This, then, is the primary design challenge: to design conditions that can be inflicted on the player as alternatives to damage; in such a way that both trying to avoid and being afflicted with those conditions makes the player abandon his optimal routine (either by sticks or by carrots or by a combination); while not making the optimal curing strategy for such conditions boring.

A last thing: resistances and immunities. Most games that have conditions also have items or skills of whatever that either give you a better chance of resisting them, or make you outright immune.

This is a design failure.

It works somewhat in a game with many characters, like D&D. If the monster inflicts diseases and only the monk is immune to disease, the party can try and formulate a new tactics where only the monk gets next to the monster. This is sometimes interesting. (It rarely works that way in practice, either because there are many monsters with the ability and the monk cannot stop them from approaching the other characters; or because it is one seriously nasty dude and the monk alone doesn't have enough staying power to survive his hits.)

But it absolutely doesn't work in a single player game. As designer, you should have made those conditions a fun part of the experience; otherwise, they shouldn't be in the game. Presumably, you have designed them to give the most fun mix of tension, survivability, and so on. Giving a character resistance to the condition therefore removes some of the fun. Worse, making a character immune to a condition simply removes it from the game.

Take NetHack. A character apparently cannot survive very well without being immune to a whole set of things: poison, sleep, fire, cold, spells, and so on. Once a character has all those immunities, it is as if all those special attacks no longer exist. In other words, you have transformed a vast number of monsters from being interesting, to being run-of-the-mill. There is simply no way that can be a good design decision.

The only kind of resistance that seems really interesting to me, is one that comes at a price. Wearing that towel to be immune against the medusa is a good example, since it also makes you unable to see anything else! Another good example from NetHack is levitation: you can no longer fall into traps and you can walk on water, but you can't take the stairs down or pick anything up from the floor either. Additional examples are easy to think of. Magic resistance that protects you against spells, but with a certain probability that the deflected magical energy turns into something perhaps even nastier. Immunity to sleep that makes you unable to, well, sleep, including getting restful sleep. Immunity to poison gained at the price of becoming undead. That kind of stuff.


Coming soon: elemental damage (and anything that is structurally the same).

7 comments:

  1. Is this topic cursed? Matt W posted two posts here which I got in my email, but which have disappeared from the site. Let's see what happens when I post something...

    ReplyDelete
  2. Ok, I'm going to try and repost Matt's comments, and we'll see what happens.

    === FIRST POST ===

    Once a character has all those immunities, it is as if all those special attacks no longer exist. In other words, you have transformed a vast number of monsters from being interesting, to being run-of-the-mill. There is simply no way that can be a good design decision.

    I disagree somewhat. This can be a good design decision if you're simultaneously introducing new monsters that present new problems. (Or just introduce new non-monster problems.) You can stop worrying about the tactics you need to use against the old kind of monster, but you need to start worrying about tactics for the new kind of monster. So once you get reflection, you don't need to worry about sneaking around a knight's move away from monsters with breath attacks anymore, but that might be around when you start seeing the monsters that curse your inventory and summon huge swarms around you, and you have to deal with that. This isn't such an uncommon dynamic in lots of games where you level up; enemies that had been pretty fearsome, you can now roll over with ease, but there are new enemies.

    Now, I'm not going to say NetHack does a great job of that. The reflection example I cited can happen, but it often doesn't. I find that the dynamic in successful games is more that things are very tense in the early-mid going, as there are lots of things I have to avoid or play careful with (hello, mind flayer on the first level of the mines), but as I go on I get more and more secure until by the end I'm pretty much rolling over everything in my path, until I hit some of the final levels.

    This is actually a pretty pleasurable dynamic, except that the rolling-over-everything phase is too long; I feel like I'm being rewarded for my early struggles. (There's certainly a sense in which this is fake achievement, because within a single game it's my character's skill that levels up, not mine. But I think it's somewhat averted in that you don't get the level up just by playing for a while; you have to survive.)

    The idea is that maybe the special attacks or something were fun for a while, but eventually they stop being as much fun, and you want to try new things. That could be a reason for letting you take them out of the game.

    I do agree, though, that forcing tradeoffs may be more interesting. I think Crawl/Stone Soup may try that, but I've never got far enough to know. (Protip: apparently the enemy gets a free shot at you when you try to run away upstairs.)

    ReplyDelete
  3. === SECOND POST ===

    --It can be OK to remove things like elemental damage from the game if you're at the same time adding more things. For instance, if you gain reflection in NetHack (thus eliminating breath weapons and wand attacks) at about the same time that you start encountering the nastier spellcasting monsters. Then you don't have to worry about your strategies for dealing with the old problem while you're coming up with your strategies for dealing with the new problem.
    --This isn't so uncommon in leveling-up games, where opponents that might be intimidating at the beginning can easily be swatted away later. Which makes it important to add in new ones.
    --I don't know that NetHack actually does this. My experience in successful games isn't actually that I'm constantly facing new things to worry about, it's that after a period of having to skulk about and watch where I'm going (especially in the mines) I become a juggernaut who can more or less effortlessly stomp everything in my path, except for some of the big bosses or boss areas. This is actually a pretty pleasant dynamic (the big problem being that Gehennom is too long -- I even like the mazes but there are too many); there's something of a fake achievement about it, but I think it's averted because it's a real achievement to get to that point even if the amazing feats you accomplish then aren't real achievements.

    ReplyDelete
  4. Matt, I agree with most of the things you say. Let's say as an example that a certain point the poison dynamic stops being fun -- been there, done that, time for something new to worry about. Now, what would be the best way to deal with that.

    1. Stop throwing monsters with poison at the player.
    2. Continue throwing monsters with poison at the player, who is now immune to poison.

    In general, the first way seems to be better, because the second way involves fighting monsters that have now become uninteresting. There is certainly something pleasurable about killing the first few such monsters in the knowledge that you no longer need to dread them, but this pleasure wears off very soon. At the very least it must be adequately matched with real challenges -- I cannot remember any games where I enjoyed having an easy second half, but several games where the second half stopped being fun because it had become too easy. (This is a huge problem in most player vs computer RTS games, where this dynamic can often be found in every individual mission.)

    Protip: apparently the enemy gets a free shot at you when you try to run away upstairs.

    Thanks, but you're too late. I already had my Minotaur Fighter killed by an acid blob when he attempted to flee up the stairs. :(

    By the way, I'm finding Dungeon Crawl Stone Soup a lot more fun than NetHack, surely partly because it is much, much more accessible to newcomers.

    ReplyDelete
  5. Hm. There are a few reasons why it doesn't bother me as much that NetHack keeps throwing monsters at me even after I can resist their main attack (though monsters do cycle out eventually). The biggest is that it's not predictable when you'll get this resistance, so there's no one time when you would phase out those monsters; and it would be obnoxious to stop generating monsters as soon as you can beat them easily. Especially because beating monsters gives you resources.

    Another important one is that it isn't really a game of successive discrete encounters; there's a lot of exploration (or trekking back to your stash/Minetown) and then sometimes you encounter a Problem. So I don't mind that the space between big Problem combats is sometimes taken up by monsters I can easily kill rather than by more walking around. (And of course those apparently harmless monsters are sometimes not -- as when a gnomish wizard reads a cursed scroll of create monster and leaves you literally three deep in monsters in every direction.)

    On a more minor note, sometimes the monsters you resist can become a part of your strategy. Resting inside a fire/steam vortex while fire-resistant can be useful, and I once encountered a black dragon in a treasure zoo when I had reflection, and spent a while trying to line it up so it would disintegrate some of the nastier other monsters.

    Of course it's all a matter of personal taste. I don't mind the flattening difficulty curve, and would be pretty annoyed if the character I'd been shepherding for weeks got suddenly overwhelmed by something I couldn't deal with. In fact, if you have to start over again from the beginning a convex curve may be better than a concave one; if the beginning stages are easy and you keep getting killed at the end, then you have to replay the less interesting beginning stages over and over, but if the end stage is easier you don't have to play it as much. Though if the entire endgame were easy it wouldn't be interesting; it's important that there are some moments of utter pandemonium (especially at the very end) and that the final run is pretty tense even when nothing is going on. -- Now the ideal is probably a constant difficulty/interest curve, but even so if you keep replaying the beginning part it'll probably be less interesting relative to its difficulty, which could make late-game difficulty spikes especially annoying.

    BTW, you might want to check out SporkHack, which I haven't tried for slightly petty reasons but which apparently makes resistances partial and tries to make sure that you won't just try to get a standard ascension kit every time through.

    I haven't got into DCSS, though I've only tried it for a little. Part of it is that I think I find the autoexplore offputting; I'm spending a lot of time watching my @ move around without my help. Just make the levels small enough for me to explore on my own! Maybe this is incompatible with the kind of tactical combat they're trying to use. Also making items almost uniformly harmless, so you can use-ID them, seems to me to take the fun out of the ID system; why not just generate everything with one fewer charge and pre-IDed? And grrr, Sigmund (I did get him once, but then the other monsters on the level got me, which brings up another point I should post on). Though I admit that part of this is pure petty prejudice because the Crawl devs bagged on NetHack a bit too much in the comments to John Harris's @ play column.

    I'm just going to post this and assume that you'll re-post it after it autodeletes.

    ReplyDelete
  6. I can think of other complications - take the poison example, for instance. If you have a pet, you may very well want your pet attacking low-level poisonous creatures - your wolf can take out a snake much faster than you can, and runs a lower likelihood of getting poisoned (since there's fewer chances the snake will bite).

    After you're poison-resistant, it makes much more sense for you to draw the poisonous attack, leaving your pet to dispatch something else instead. (As I recall, this usually involves standing in a doorway with your pet safe on one side while you hew things into oblivion.)

    So I don't think total resistance is necessarily a bad thing - it may not be the best choice for certain traditional scenarios, but I'm hoping we'll see more cooperative campaign-type stuff emerging. Also, a clever DM knows when to remove players' loot - things like rays of disintegration and whatnot could provide some ongoing uncertainty as to when a particular ability might disappear.

    ReplyDelete
  7. Hi Victor,

    Have you ever tried the rogue-like game ADOM (Ancient Domains of Mistery (www.adom.de)? There, it has the 'Corruption' mechanic. I find that one quite interesting.

    Corruption has three distinct effects.

    First, is a hazard, since when you've become corrupted enough you transform into some form of ooze.
    Second, it has an effect on alignment and as far as I'm concerned, in this game alignment matters quite a bit. However, most of the time it requires you only to change tactics as certain alignments have better special attacks / weapons or something like that.
    Third, as a side effect, the corruption points begin to morph your body, which brings all kinds of special effects with it, imposed at random. Of these effects I estimate 40% only negative (attribute reduction, HP / Mp reduction or some like), 20% only positive effects (more strength / more wisdom / teleport control) and 40% dependent on your tactics, class or race positive or negative (e.g. +8 STR, -4 INT, -4 WIS / teleportation at random once per day (with teleport control available with certain clasess) / poison from hands (poisons your own weapons, but also the food) / Big brain - 8 Appearance, +6 Magic +6 Int).

    I find this mechanic pretty interesting because it:
    a) forces a change of tactics;
    b) can be interesting for characters to use as a last resort, and
    c) creates exciting choices: do I risk a few extra points, hoping for a cool ability to come along which I need, or do I want to play it save, not willing to risk getting too much points and eventially turning into a corrupting ooze?

    ReplyDelete