Friday, August 8, 2014

Game Design (X): Balancing monster defenses, resistances

One of my favorite innovations in 4E is the fact that, unlike previous iterations of the game, there are well defined formulas for combat math, and they are nicely laid out in the DMG for DMs and players to see. This is great for making informed decisions regarding character building or combat tactics, but there is a flaw in the plan: some very relevant stats are left out of the fun. It’s straightforward to find out when you have a good AC, or how much damage it takes to kill a monster of your level, but once you need to know whether you should take an attack power that targets Fortitude or Will or which flavor to choose for an Armor of Resistance, you are out of luck. In today’s article, I will discuss how the contents of a Monster Manual can affect character effectiveness, and suggest ways to make this influence more consistent, predictable, and transparent to the players.

The problem

There are two problem areas: defenses and damage types. I will address them in order. The issue with defenses lies in a lack of definition of their relative importance - looking at the DMG tables, one can’t tell that there’s any difference in expected values between Fortitude, Reflex, and Will. It turns out that, although the values for average defenses are well known, there are no useful guidelines regarding which defenses should be stronger or weaker for a given set of monsters. The DM guide actually suggests deriving this from the monster Ability scores, which are mostly useless stats with arbitrary values to begin with. For practical purposes, defense generation using this method can be modeled as a random process. If this randomness resulted in an even distribution across different defenses, it would all work out just fine, and I wouldn’t be writing this. Unfortunately, when we look at the data, monsters have a tendency to be big, dumb brutes (regardless of whether they are actual Brutes), and as a consequence, average defenses skew heavily towards strong Fortitudes and weak Wills. This means that a player character picking an attack power that targets Fortitude will be at a significant disadvantage (equivalent to roughly a -2 penalty to hit!) compared to an attack power that was otherwise identical but targeted Will instead. This is a huge difference, and one that isn’t documented anywhere on the PHB or the DMG - you’ll only find it by checking the stats of monsters in your Monster Manual (or, for that matter, in your adventures), and averaging them out.

Conversely, the defenses targeted by monster powers don’t seem to follow any rules other than what feels right to the designer in each case. One would expect AC to be the target for most attacks, with Fortitude, Reflex and Will taking an even share of the rest. However, this is only true in part: AC seems to be the predominant defense, with Fortitude and Reflex showing in similar numbers, but Will tends to be underrepresented.

Similar issues arise when we look at damage types: the types resisted by monsters (or that they are vulnerable to) and the types used by monster attacks are chosen on a case-by-case basis. And, again, this results in highly skewed numbers. For most damage types, resistances and vulnerabilities only show up in small numbers, but there are a few major outliers: there are a lot of monsters that are resistant or immune to Poison and Necrotic (and, to a lesser degree, Fire), or vulnerable to Radiant damage. This is mostly due to the Undead effect: Undead represent a very important portion of the monster population, and are almost universally resistant to Poison and Necrotic damage, and vulnerable to Radiant. Thus, we can conclude that player powers using Radiant damage will have a significant advantage over the rest, whereas Poison and Necrotic powers are severely crippled. Once again, this is an undocumented feature. As for the damage types used in monster attacks, there is a predominance of Fire, Necrotic, Poison and Psychic damage, relative to other types. That said, this is a far less relevant issue than the previous ones, as it only comes into play in the relatively rare scenarios where player characters have resistances.

What should be done

With the above points in mind, I have defined some requirements that a fixed system should have:

  • A predictable distribution of defense values and resistances/vulnerabilities for monsters. This distribution should be known to players and DMs, so that they can properly evaluate each defense or damage type.
  • A method to generate this distribution in newly-designed monsters.
  • A low-effort method to retrofit current monsters to use this distribution.
  • Equivalency between defenses and between damage types. I strongly believe that Fortitude, Reflex, and Will values for monsters should have similar values, on average. Likewise, each damage type should be, on average, equally useful in damaging monsters.
  • Monster stats should make sense and meet player expectations.

On the other hand, I have given up on some related issues, as I think they harder to solve, and not relevant enough to be worth the effort:

  • Balanced distribution of damage types in monster attacks
  • Balanced distribution of targeted defenses in monster attacks

Fixing monster defenses

I should start by clarifying that, when I talk about monster defenses, I refer to fortitude, reflex, and will. AC works properly under the current rules, and will need no further tweaking on my part. With that said, “just” fixing fortitude, reflex and will is a daunting task, as it involves adjusting stats for all of the thousands of monsters out there. The only realistic way to achieve this is by generating these stats from simple rules derived from some monster property, such as race or role. Here, I monster role becomes the natural fit for defense generation, since it is already used for other basic stats such as AC, hit bonuses, or damage.

For simplicity’s sake, we’ll assume that all monster roles show up in similar numbers. This is not entirely accurate, as Artillery and Lurker monsters are underrepresented, appearing only half as often as other monster roles in the monster manuals. Nevertheless, I consider this a good enough approximation for now - and I will try, at some point in the future, to study this role disparity  and maybe try to address it too.

Anyway, the new defense generation guidelines work as follows: for each of Fortitude, Reflex, and Will, a monster role can have an “average” score (the defense value suggested by the DMG tables), a “strong” score (equal to the average score + 1) or a “weak” score (equal to the average score -1). In order for all defenses to be roughly balanced, each defense will have as many roles with “strong” scores as with “weak” scores. I suggest the following values:

  • Soldier: Strong Fortitude, Average Reflex, Average Will
  • Brute: Strong Fortitude, Weak Reflex, Average Will
  • Skirmisher: Weak Fortitude, Strong Reflex , Average Will
  • Controller : Average Fortitude, Weak Reflex, Strong Will
  • Lurker: Average Fortitude, Strong Reflex , Weak Will
  • Artillery: Weak Fortitude, Average Reflex, Average Will

I included AC values to give a better view of each role’s relative defenses. If we organize the scores by defense rather than by role, they look as follows:

  • Fortitude:
    • Strong for Soldiers, Brutes
    • Weak for Skirmishers, Artillery
  • Reflex:
    • Strong for Skirmishers, Lurkers
    • Weak for Brutes, Controllers
  • Will
    • Strong for Controllers
    • Weak for Lurkers

Note that, although each defense has equivalent scores on average, some show different degrees of variance. In particular, Will has a single Strong and Weak role (rather than 2 of each, like the other roles). This lets me give the Soldier role above-average defenses (with no weak score), and the Artillery role below-average defenses (with no strong score).

These values should provide a good baseline that can be applied to all existing monsters, or be used when designing new ones. As an option to add some variety, I suggest applying a +1 modifier and a -1 modifier to any two defenses (other than AC) to each individual monster, as the designer or DM sees appropriate.

Fixing monster resistances

Under the current rules, damage types are unbalanced because certain large groups of monsters get built-in resistances or vulnerabilities. Removing these resistances/vulnerabilities is not a very compelling option: on the one hand, they add a good deal of flavor and variety to monsters and, on the other, there is little point in having a damage type system unless we embrace resistances and vulnerabilities in monsters. The solution, then, is to go the opposite route, with a caveat. We will add many new group-wide resistances and vulnerabilities, but ensuring that for every damage type that is resisted by a monster group, there is another monster group of comparable size that is vulnerable to it (and vice versa). The result should be a system where damage types are relevant more often, but without having types that are clearly stronger or weaker than the rest.

We use the following assumptions as a starting point:

  • Most Undead monsters are vulnerable to Radiant damage, resistant to Necrotic damage, and immune to Poison. About 15% of monsters in the game are Undead.
  • Many monsters are resistant to Fire damage, including Devils and Fire-based monsters.

We decided to apply the following changes:

  • To streamline monster design, we implement resistance/vulnerability guidelines. Whenever the majority of a monster group tends to have a resistance or vulnerability, we make an explicit rule stating that all monsters of the group should have that trait. Hence:
    • Undead monsters have Vulnerable Radiant
    • Devil and Tiefling monsters have Resist Fire
    • Ooze monsters have Resist Acid
  • To balance damage types, we change some current resistance/vulnerability guidelines, and add some new ones as well:
    • Undead and Construct monsters have Resist Poison (instead of immunity)
    • Fey, Plant, and Swarm monsters have Vulnerable Poison
    • Aberrant, Immortal, Blind and Plant monsters have Resist Radiant
    • Shadow monsters have Vulnerable Radiant, Resist Necrotic
    • Undead monsters that are not of Shadow origin no longer have Resist Necrotic
    • Immortal monsters have Vulnerable Necrotic
    • Fire monsters have Resist Fire (in some cases instead of immunity), Vulnerable Cold
    • Cold monsters have Resist Cold
    • Cold and Plant monsters have Vulnerable Fire
    • Water monsters have Resist Acid
    • Construct monsters have Vulnerable Acid
  • Finally, we add a few resistances/vulnerabilities for flavor purposes
    • Aberrant monsters have Vulnerable Psychic
    • Construct, Plant and Eladrin monsters have Resist Psychic
    • Dwarf monsters have Resist Poison

If our proposed rules for resistances and vulnerabilities are used, these are resistances/vulnerabilities with no damage limit. Otherwise, add a resist/vulnerable value appropriate to the monster’s level (e.g. 5 per tier).

Our balancing takes into account the number of monsters of each type currently in the Compendium. You can check out the numbers we used in this spreadsheet. It is not really possible to achieve a perfect match between monster types and damage types without introducing some awkward flavor, so a few damage types still have a predominance of resisting monsters or vulnerable monsters. In particular, Poison slightly weaker than average, while Radiant leans on the stronger side. However, this effect is much smaller than with the previous rules, and not as one-sided - Poison becomes very useful against some fairly common monster types, whereas Radiant loses a lot of effectiveness against many foes.

To be honest, my ideal system for damage types would involve cutting the number of types by half or so, but that would take even more effort, and destroy any semblance of backward compatibility.

With our suggested changes, the resistances and vulnerabilities for each damage type end up as follows:

  • Poison -  R: Construct, Undead, Dwarf; V: Fey, Plant, Swarm
  • Radiant - R: Aberrant, Immortal, Blind; V:Undead, Shadow
  • Psychic - R: Construct, Plant, Eladrin; V: Aberrant
  • Necrotic - R: Shadow; V: Immortal
  • Fire - R: Fire, Devil, Tiefling; V: Plant, Cold
  • Acid - R: Ooze, Water; V: Construct
  • Cold - R: Cold, V: Fire
  • Lightning, Thunder, Force - no group-wide resistances or vulnerabilities.

Or, organized by monster type:

  • Undead - R: Poison; V: Radiant
  • Fey - V: Poison
  • Immortal - R: Radiant; V: Necrotic
  • Shadow - R: Necrotic; V: Radiant
  • Aberrant - R: Radiant; V: Psychic
  • Devil - R: Fire
  • Construct - R: Poison, Psychic; V: Acid
  • Blind - R: Radiant
  • Fire - R: Fire; V: Cold
  • Cold - R: Cold; V: Fire
  • Ooze - R: Acid
  • Plant - R: Radiant, Psychic; V: Poison, Fire
  • Water - R: Acid
  • Tiefling - R: Fire
  • Eladrin - R: Psychic
  • Dwarf - R: Poison

A note on Variable Resistance

A monster mechanic that is very relevant to the topic at hand but hasn’t been considered so far is the trait shared by all Demon monsters, Variable Resistance. The wording on this ability is rather ambiguous, and depending on your interpretation, Variable Resistance can vary in effectiveness between a minor, situational boost, to an almost permanent resistance for the five elemental damage types. I suggest using a new wording for this ability that makes it less ambiguous and a bit weaker, so that it can be considered as neutral for the purposes of damage type balance. 

Variable Resistance - At-Will - Free Action
Trigger: The character takes damage of one or more elemental damage types (elemental damage types are acid, cold, fire, lightning, thunder).
Effect: Choose one of the triggering damage types at random. After the damage is resolved, and until the end of the encounter, the character and all allies with this ability gain Resist against that damage type, and Vulnerable against another elemental damage type chosen at random. This effect ends when the monster or an ally use Variable Resistance again.

Note: A character with this ability must use it whenever it triggers. If the ability would trigger simultaneously for several allied characters, only one of them chosen at random can use it.

Read More......