How do you run Mass Combat in D&D?

Although Dungeons and Dragons famously grew out of war gaming, the core rules are designed for a few heroes going up against a few foes – say maybe up to a dozen.

However, that doesn’t cover all the situations your story might lead to. Very quickly GMs realise that, in order to challenge the PCs, they often need multiple foes per PC. And what happens when the PCs become leaders of groups, so there are larger numbers on each side?

This article looks at various options for mass combat in D&D, starting with the rules in or based on the DMG, going through Sly Flourish’s Lazy DM guidelines, and then going on to three systems specifically designed for mass battles: the War Machine from the Companion book of the Mentzer boxed sets, the Unit rules from Tales of the Valiant, and a new system, Battlecraft, which Lou Anders initially designed for his Fury of the Forsaken module (currently in Kickstarter with late pledges still open), and which we have been playtesting. Slightly to my surprise, Level Up! A5E doesn’t seem to have anything.

Simple tricks for moderate numbers

Once you get more than a handful of opponents, individual initiative breaks down. Having to jump back and forth repeatedly between the GM and the players slows things down – and even the initial initiative roll drags for the GM.

Tracker from a session with five zombies split into two groups

As a GM, once they are facing more than 3 opponents, I start looking to combine my opponents into groups, and I will have no more than 5 groups (ideally fewer).

If they are facing a group of the same type of creature, I will typically split it in two and roll initiative twice, so that they will attack at two points in the order.

If there are multiple types, or significant individuals, I will often give each type or special individual their own initiative roll – which means I never want more than 3 different types of foe (probably a good rule of thumb anyway to keep the mental load manageable…).

So I might have two batches of foe, plus the boss, and maybe (in a particularly complex scenario), a special of some sort.

Up to ten or a dozen foes, I will write down the hp for each foe in the group one above the other around the appropriate line on my initiative tracker, and have a single card representing them in the initiative order on my screen. Unless there is some particular reason to vary it, I will use the average hit points for each foe.

For tracking the damage, since I use gogos crazy bones characters as monster tokens on the table (whether the combat is using precise battlemaps or rough theory of mind), I will mentally assign the figures numbers in my ordering, and then try to remember which is which as they move. The players will generally say things like “I’m going for the one which just got hit”, which helps me remember which one to add the damage to, and if I get mixed up – hey, battle is confusing! The players don’t know how much each one has taken anyway…

For their attacks, with this sort of number, I will roll the attacks for all in the group together, and eyeball which looks the most appropriate PC to attack for each. (I haven’t got to the point of intelligent mobs in my campaign yet, so I haven’t needed to worry too much about them getting tactical.)

This scales to about a dozen opponents at most, and is already starting to get unwieldy at that point. So what do you do if you want the heroes to wade through masses of skeletons?

Handling mobs the 2014 DMG way

Both the 2014 and 2024 DMG have rules for handling mobs of opponents, and they take the same approach.

In both cases, rather than rolling to hit, you use tables to determine how many of a group manage to hit their target.

The 2014 rules keep it pretty simple. You work out what the attacker would need to roll on a d20 in order to hit, and then use a table to determine how many attackers are needed in order for one to hit:

  • Hit on a roll of 1-5: every attacker hits
  • Hit on a roll of 6-12: 1 in 2 attackers hit
  • Hit on a roll of 13-14: 1 in 3 attackers hit
  • Hit on a roll on 15-16: 1 in 4 attackers hit
  • Hit on a roll of 17-18: 1 in 5 attackers hit
  • Hit on a roll of 19: 1 in 10 attackers hit
  • Hit on a roll of 20: 1 in 20 attackers hit

If there are attackers with different damage levels, assume the one which deals the most damage hits.

So, for example, if a group of ogres with +5 to hit are attacking a fighter with AC 18, they need to roll a 13 to hit. Looking up the table, this means one in three of them will hit.

This has the advantage of simplicity as long as you have the table in front of you, but it feels unsatisfactory to me to automatically hit.

Handling mobs the 2024 DMG way

The 2024 DMG adds a lot more detail, and some suggestions for simplifying.

  • Rather than rolling for damage, assume each monster does average damage
  • Remove a monster once it gets down to a handful of hp, rather than waiting for it to go completely to zero
  • Split large numbers into smaller mobs with their own place in the initiative order – it suggests 5-8 per mob, but never more mobs than characters

It then goes into details on how to adjudicate all d20 checks, not just attacks, and has a table with each of the to-hit rolls needed from 1 to 20. This table includes corresponding rolls with advantage and with disadvantage as well – for example a roll with advantage requiring 17 corresponds to a normal roll requiring 14, as does a roll with disadvantage requiring 9. The DMG table then lists how many hit if the group is 4, 5, 6, 8 or 10.

Going back to those ogres needing a 13 to hit the fighter:

  • If there are 4, 5 or 6 of them, two of them will hit,
  • If there are 8 of them, three of them will hit,
  • And if there are 10 of them, four will hit

If they have advantage, that is the same as if they needed 8 to hit, and if they have disadvantage, that is the same as if they needed 18 to hit, so

  • With advantage, three will hit if there are 4 or 5, four will hit if there are 6, five will hit if there are 8, and seven will hit if there are 10
  • With disadvantage, one will hit if there are between 4 and 8, and two will hit if there are 10

The same table is used to determine how many will succeed on a saving throw or a skill check. It also has a table for how many targets are affected for different-sized cones, cubes, cylinders or spheres (these are lumped together) and lines. For example, to hit 3 targets, you need a 25’ cone, a 10’ radius cylinder or sphere, and a 30’x10’ or 60’x5’ line. (There is no cube which gets 3 targets – a 15’ cube gets two and a 20’ cube gets four).

This makes the result more fine-grained, and possibly slightly closer to the real probabilities, but also a lot more complicated (or at least, you need these tables in front of you). And it still has the downside of push-button attacks: “they attack, three of them hit for (3×5) fifteen points of damage”.

And they don’t make any mention of tracking hit points other than retiring them slightly early.

Hordes the Lazy way

Sly Flourish, the Lazy GM, suggests a similar approach, but with simplifications.

  • First, he suggests turning each horde into a pool of hit points. Any time the damage done passes the total hit points for a single horde member, assume one has been killed.
  • On an attack or save, assume one quarter succeeds (rounding up or down to allow for the situation). Assume one half succeed with advantage, and one tenth succeed with disadvantage.
  • Assume areas of effect hit lots of the horde: 4 for small areas, 8 for medium areas (he gives the examples of thunder wave or burning hands), 16 for large areas (fireball, turn undead), and 32 for huge areas like circle of death. If the damage done is close to the monster’s hp, remove monsters which fail the saving throw (see above for proportions).

This really is simple, and I will certainly think about adopting the “hit point pool” approach. This is particularly good when the PCs may do damage massively above the hit points for a single monster, allowing them to take out several monsters with a single heroic blow. Likewise, I have already tended to take the area of effect approach of removing all monsters within the group which take above their hp in damage from an area of effect attack.

I haven’t tried the “assume one quarter succeeds”, but it feels like it would have the same problem of too much pre-determinism for my taste. I also feel it would need practice to get a feel for how to scale up and down for very high or low ACs, for example.

Mobs and Hordes in Tales of the Valiant

Tales of the Valiant makes a distinction between mobs and hordes, and has rules for both.

A mob is used for short-term or last-minute scenarios where it isn’t worth the effort of more detailed rules. ToV suggests converting them to swarms, with up to 50 per swarm. Since it’s harder to hit multiple individuals with a single attack, mobs are more resilient: their total hp is 25% greater than the sum of the individuals, and they can have the swarm trait – they can occupy another creature’s space (and vice versa), and fit through any space an individual member can fit through. It may also have swarm resilience if you feel it appropriate – resistance to bludgeoning, piercing and slashing damage, and immunity to the typical swarm immunity conditions. In this case it should only have an additional 15% hp.

The mob does half damage when reduced to half hp or lower, and disperses when reduced to 10% hp. It doesn’t use spells.

Alternatively, it suggests you can treat a mob like an environmental hazard (rules in a later chapter).

For hordes of monsters, they recommend the hit point pool approach, removing monsters each time the damage crosses a multiple of the base hp. They also suggest optionally treating the individuals as minions, which are killed when they take any damage.

For attacks, they suggest splitting the horde into groups, and rolling separately for each group. This is what I have started leaning towards as well, and to me this feels more in the spirit of the game than automatic damage.

Mass Battles in BECMI

All of these approaches so far assume the PCs are still individuals. But what happens if they are commanders of a group themselves, and you have armies facing each other across the field of battle?

The BECMI boxed sets introduced the War Machine rules in the Companion set (also in the Rules Cyclopedia). I have described these in more detail in another post, but the essence is:

  • Armies have a base battle rating based on training, competence, equipment, leader level, special abilities and so on – typically in the range 60-160. These get calculated in advance, and you will see them throughout the Gazetteers.
  • When two armies face each other, they are split into groups so that there are the same number of groups on each side.
  • For each group, apply situational modifiers – numerical advantage, terrain, (optionally) strategy, tiredness, previous battle history (particularly against this foe).
  • Then each group rolls d100, and adds the battle rating and situational modifiers.
  • The difference between the two totals determines who wins, and the casualties on each side. Larger differences can also result in one army pushing the other one away, or even routing it.
  • There are also optional strategies, which modify the result – for example, one army charging against another defending might find it harder to do damage, but would inflict more casualties if they succeed.

This allows armies manoeuvring against and attacking each other, with relatively simple resolution that tells you the results. But it’s not very dynamic, and the PCs have little involvement in the storyline – you just plug in the numbers, roll the dice, and get the result, reducing the day’s slaughter in a couple of minutes of play. Good for strategic campaign play, less so for a dynamic battle experience.

Mass Battles in Tales of the Valiant

Tales of the Valiant’s Game Master’s Guide has a relatively simple option for mass battles, which they call “Large Scale Combat”. This works on units, with a base unit size of 100 medium creatures (i.e. a space of 500 square feet). This scales up and down with creature size so that a unit always takes the same space. So a unit of tiny creatures, quarter the size of medium, would contain 400 creatures, while a unit of huge creatures, four times the size of medium, would contain 25 creatures.

A unit has a Unit Value, which starts at its CR (or average CR, if the unit is made up of multiple creatures), rounded up to the next whole number. If the unit is larger than the base size, its unit value increases by two for every doubling in size – i.e. +2 for 200 medium creatures, +4 for 400, +6 for 800 – or decreases by two for every halving in size – -2 for 50 medium creatures, -4 for 25, etc. It recommends a maximum unit size of 800, with more than that being divided into multiple units.

Each unit must have a leader, who makes attack rolls and checks for the unit. If this leader is a powerful leader – with a level greater than the Unit Value – they add half their proficiency bonus to any unit checks.

Each combat turn, a unit can Attack, Dash, Defend, Ready or Reposition. A unit can only move if it is not next to an enemy unit, or if it takes the Reposition action.

An Attack calls for contested Unit Value checks (d20+Unit Value), with the results affecting the unit value of either attacker or defender:

  • If the attacker loses by 10 or more, its unit value decreases by 2 (1 for a ranged attack)
  • If the attacker loses by between 5 and 9, its unit value decreases by 1 (0 for a ranged attack)
  • If the attacker wins by between 1 and 4, the defender’s unit value decreases by 1
  • If the attacker wins by between 5 and 9, the defender’s unit value decreases by 2
  • If the attacker wins by 10 or more, the defender’s unit value decreases by 5

Once a unit’s Unit Value drops to 0 or less, it is no more – the individuals killed, routed or otherwise dispersed.

  • A Dash allows double movement (remember, not permissible if next to another unit)
  • Defending imposes disadvantage on an attacker
  • Readying allows the unit to attack if another unit comes in range later in the combat turn
  • Repositioning calls for a DC10 morale check. On success, the unit moves and has advantage on attacks later in the turn. On failure, it effectively takes no action.

Various factors such as terrain can impose advantage or disadvantage at the GM’s discretion, and non-combatant actions such as magical fog can impose a bonus or penalty on the unit check of up to three.

At the end of each combat turn, each leader must make a DC10 morale (CHA) check. Failure by between 1 and 4 reduces the Unit Value by 1 as some members leave. Failure by 5 or more results in the unit disbanding. This morale check gets bonuses or penalties depending on the result of Unit Value checks that turn: +1 for a win by 1-4, +2 for a win by 5-9, or +3 for a greater win, and similar reductions for losses. If the unit had multiple contests that turn, the bonuses and penalties are cumulative.

This seems an interesting idea, though the fact that most units of 100 will start with a Unit Value of 1, or at most 2 (given the CR of the type of creature likely to be involved in mass battles) makes battles likely to be quite short. I haven’t tried this one in practice.

Lou Anders Battlecraft

Another approach to mass battles which we have been playtesting is under development by Lou Anders, initially for his Kickstarter module “Fury of the Forsaken” (late pledges still available), although he has said he intends to flesh out the rules further into their own Kickstarter.

Here the base unit size, a company, is ten creatures, and he has rules for converting a creature type into a unit of those creatures. Units manoeuvre together and take and inflict damage as a whole, doing greater damage to individuals than other units, and having resistance to damage from individuals. At the end of the battle, the damage is converted to casualties and injuries.

Units have commanders, who can issue commands to any unit that can hear them within 120’; units further away than this can be commanded by passing the message via a unit within hearing (whereupon the remote unit acts one round later). The commander can choose to be embedded within the unit, adding their proficiency bonus to the unit’s attack roll if they spend their turn directing the unit, or if they “lead from the front” (when they can also make normal attacks, but are themselves vulnerable to attack).

Units have morale, and make morale checks in particular situations, with the DC depending on the situation. Being reduced to half original hp is DC10, being reduced to a quarter is DC15. The commander being killed is DC10, being outnumbered 4:1 or more is DC15, and being attacked by flying units when the unit’s side doesn’t have any is DC10.

If the morale check fails, the unit becomes broken, and must Disangage and flee, or Dodge if they can’t disengage. A commander within hearing range can try to rally a broken unit.

Otherwise combat continues as normal, and even uses the normal 6-second rounds if the units are just companies. One nice (optional) touch which reflects the greater attacking ability of multiple creatures in the unit is that units which miss by 4 or less still do half damage.

We play-tested these rules with the PCs leading units to try to destroy or drive off a mixture of demons and gnolls who had overrun a town. The surrounding towns and city had assembled a motley army of volunteers, with a mixture of infantry units, an archer unit, raw recruits, and four “ghost kobold” units, and they were trying to drive off units of gnolls, dretches and hyaenas, plus maw demons, barlgura and a vrock.

This gave us a good range of different situations – unit on unit, unit on individual and individual on unit, and also a mixture of attack types – melee, ranged (archers and kobolds) and area of effect (one of the players cast fireball, to the detriment of both a couple of gnoll units and the town buildings…).

During preparation, I really enjoyed playing around with constructing different units and considering how special abilities might apply, and the rules were simple enough to throw together a new unit pretty quickly.

We initially found manoeuvring into place took a while – I should maybe have done some fast-forwarding rather than doing it in strict initiative, but once we got into battle, the rules worked pretty well. Since it’s based on normal turn-based combat, it all felt familiar, and the options of methods of command added interest. The rules we tried at first didn’t feel right when units attacked individuals (or vice versa), but Lou tweaked them in response to our feedback, and it feels much more realistic now.

The group agreed we would happily use these rules again in future.

We only tried companies of ten individuals, but Lou is working on extending these to battalions of 100 or more.

Conclusions

The basic D&D combat ruleset get unwieldy once there are more than a handful of participants on each side. There are various options here for dealing with this, suitable for different scenarios.

Bunch initiative makes tracking easier for the GM, and hp pools allows for massive damage to take out multiple opponents in a single attack (and also simplify tracking).

The various mob rules of thumb simplify attacks by determining that a particular proportion always hit, but I feel the deterministic “it always does this much damage” goes against the spirit of the game. I wonder if there is a way to tweak this to add some variability.

For mass battles, here are three different options:

  • War Machine is a “once and done” approach for pre-prepared armies (which also needs some tweaking for 5e) – good for a campaign, but leaves the players further from the combat
  • Tales of the Valiant’s Large-Scale Combat feels a bit more ad-hoc, and like it could represent running battles, but again is a game within the game
  • Lou Anders Battlecraft is the closest to normal combat, and easy to get into, but can take a while to resolve the battle (our town clearance took several sessions)

If I was going to run a large-scale battle campaign between armies and nations, I would probably use War Machine (though I need to try ToV’s version). For medium-scale combat, we will definitely return to Lou Anders Battlecraft. You can still late-pledge for Fury of the Forsaken, or watch for the full-blown rules in a forthcoming Lou Anders Kickstarter.

Images from the town battle

The rescuing armies start to approach the town
The first skirmishes begin
The battle moves into town – we have infantry and levies against dretches and barlgura
The battle reaches the centre
Session tracker from a larger battle
Session tracker towards the end of the battle, with a unit of levies, a unit of dretches, four units of gnolls, three individual barlgura, a chasme, a leucrotta and various PCs
My view of the battle – GM tracking

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.