I must create a system, or be enslaved by another man's. I will not reason and compare: my business is to create.

- William Blake

Monday, April 17, 2023

The HD game III - Mass combat (and a simple OSR mass combat system)

Here are parts one and two.

The reason why I started thinking about this "HD game" was mass combat. I was wondering if there was a way to make combat faster, relying on HD, so we could quickly pit armies against one another. 
And there seems to be an easy solution, although it might take a while to get there.

If you want to skip the math talk, start on method II.


Method I: multiplication

First, average damage is very easy to calculate for most ordinary troops. A sword [1d8] deals an average of 4 damage (we are rounding down), and if you hit 50% of the time, the average damage is 2. But you have to calculate this for each type of opponent, as their armor class may vary. Easy to do with THAC0, if not perfectly intuitive (THAC0 19 means you hit on 19 or 20, i.e., 10% of the time, against AC 0; add 5% for each point of AC, so AC 4 means you hit 30% of the time).

What about ascending AC? It is a bit trickier. Using OSE, +0 means you hit 55% of the time against NO ARMOR (10). So you should subtract 5% for each point of armor over that, e.g., 30% for AC 15. I will use that method since I'm used to it. And if you got an attack bonus, you add 5% for each point (e.g., +20% if your attack bonus is +4).

Let's try the Chainmail route and play with groups of 20. You know the average damage for ONE veteran (4); multiply that number by the number of chances (in 20) that he or she hits the intended target.

The formula for average damage for a troop of  20 soldiers is DMG*(21+AB-AC), where DMG is your single soldier damage (e.g., 4), AB is your attack bonus and AC the armor class. You could pre-calculate it, so a group of veterans has an average damage output of "4*(21-AC)", for example, which is easier to calculate. When attacking a target with AC 15, they'd deal 24 damage per round. No roll is needed.

Of course, this makes things entirely predictable (except for morale, etc.). If you want to add some randomness, you can divide the damage by 2 and multiply by 1d4, for example. 

Method II: attack roll

I wanted a single d20 roll to add to the formula, but couldn't get an exact result without getting things much more complicated. So here's my closest approximation, without using any formula:
 
Make a single attack roll. If you miss, calculate damage as if one-third of the attacks hit. If you hit, calculate damage as if two-thirds hit. If you hit by 10 or more, ALL your attacks hit. If you miss by 10 or more, ALL attacks miss.

This is easier than it sounds. Roll 1d20 once for all 20 soldiers. If you hit, 2/3 of the soldiers (14) hit their targets, so 14*4 damage. Miss, and you deal 7*4 damage. Miss by 10 or more, no damage. You only deal maximum damage - e.g., 20x4 damage, destroying an entire enemy unit at once - if you hit by 10 or more... which only happens on a natural 20 against unarmored foes.

(If you want to roll for damage, you could of course do so: 14d8 damage, etc. Or use fractions to keep things more precise: if 14 soldiers hit, that is 14*4.5 damage).

Notice that this doesn't require any new formulas, just an attack roll, and works for ANY NUMBER of units: you could resolve a battle of ten thousand (if all soldiers are identical) with a few rolls for each side, or pit an army of 100 archers against a red dragon (which would also be easy to calculate without a roll, of course; but we want to add randomness).

You could calculate 1/3 in advance so you can just multiply the damage by 2 on a hit and three on a great hit (10+), simplifying the math even further.

This is still not PERFECT, but it feels CLOSE ENOUGH, and relatively easy. This is what we'll use from now on.

Taking damage

The group taking damage (e.g., 20 points of damage) loses as many soldiers as appropriate (e.g., 5 individuals with 4 HP each). Excess damage is LOST, so if your target has 6 HP each, you'd only get 3 of them.

This is meant to avoid bookkeeping - but also because any damage will be significant against most groups. If a group is fighting a gorgon, for example, and deals 20 damage, the gorgon has 16 HP left. PCs, tough monsters, etc., should all count HP whenever necessary.

"Lost" soldiers are defeated. They cannot fight anymore, but can occasionally be found unconscious or maimed after the battle (GM's call, or death save etc.).

Ignoring damage in favor of HD?

You could go even simpler if you dialed things back to "hits" instead of damage. So each "hit" kills an enemy soldier regardless of damage, like in the Chainmail days. But this will make you lose some nuance and, without the weapon versus armor table, all weapons would be identical - even two-handed weapons. It is doable, but not my favorite method.

So... in the end, we do not need HD for my HD game.

Examples

Let's try this in practice. I'll omit morale rolls to keep the fight going - in practice, they'll be very important.

Example 1: a unit of 20 1 HD veterans against 20 bandits.
- The veterans roll a 17, so they hit and cause (14x4) 56 damage. 14 bandits are gone, 6 are standing. At the same time, the bandits roll 4 - missing every veteran.
- In the second round (if the bandits haven't surrendered, etc.), the veterans roll a natural 1 - missing everyone. The bandits roll 15, which misses the veterans' AC, thus the damage is only (2x3) 6 damage, killing a single veteran.
- Etc.

Example 2: again, a unit of 20 1 HD veterans against 20 bandits.
- The bandits roll a 13, missing AC, so they cause (7x3) 21 damage, defeating 4 veterans. The veterans roll 2, missing everyone..
- The 16 remaining veterans roll 17, causing (10x4) damage and killing 10 bandits.
- Etc.

Example 3: a unit of 45 1 HD veterans against a single red dragon. (notice dragons are not that strong in B/X; I prefer the stronger ones found in AD&D 2e and so on).
- The veterans roll a 13, missing AC [20], so they cause (15x4) 60 damage against the dragon. This kills the dragon, but remember the attacks are simultaneous. The dragon fights as a single unit - so it is up to the GM to calculate how many soldiers are affected by the breath weapon. We could use a similar method for their saving throws, but in this case, every veteran affected will die.
- Etc.

Example 4: a unit of 30 1 HD veterans against a single red dragon.
- The veterans roll a 9, missing AC [20] by more than 10 and causing no damage. The dragon uses breath weapon and the GM decides 9 veterans are caught in the cone.
- The 21 remaining veterans roll 13, missing AC [20], so they cause (7x4) 28 damage, reducing the dragon to 17 HP. The dragon attacks with claws and bite, rolling once - a total of 27, which means all attacks hit! The total damage is 6d8, which we round down to 24, killing 6 veterans.
- Etc.

I really this. There will be some rounds of "nothing happens", but when someone hits, the results are devastating. The combats will be as quick as individual combat, and the results will be similar.

Some additional thoughts:

- Morale is tested when 1/3 of units is lost, and TWICE if 1/2 is lost at once. The loss of a single soldier doesn't trigger morale for a troop of 100. OTOH, big troops have low mobility, might be susceptible to flaking and area attacks, etc.

- Come to think of it, you can test morale for single monsters too - after they lose one third and then half their HP. I suggested a similar idea in Teratogenicon. There is no reason to believe every monster will fight to the death if alone.

- In any case, "snake eyes" means the troop might fight to the death! Make another morale check to be sure if that is the case.

- Notice that single units fighting groups get an advantage, on the other hand: they can attack the whole group with damage, instead of making a few separate attacks. Using normal rules, a dragon with claw/claw/bite can only kill 3 soldiers, but if you calculate damage against a larger group, there can be six victims at once (see Example 4).

- PCs fighting by themselves but should be able to affect troops in various ways (morale, spells, etc.). Maybe a powerful PC can join an unit, taking half (?) the damage for himself and thus avoiding morale rolls (what if he is wearing different armor?).

- Attacks are simultaneous unless conditions indicate otherwise (if you allow one side to attack first, it will all come down to morale too early). Bows seem to have an unfair advantage - but that is just how the game usually works.

- OTOH letting spears attack first, for example, would be a huge tactical difference, which I like.

- How many people can attack once? In most cases, everyone can attack and be attacked to make things simpler. But in some circumstances (e.g., a single PC fighting a group of 20, or two small groups fighting in a corridor) the number of attacks should be limited.

- Consider if add some small "weapon versus armor" rules would spice things up. And flanking, etc.

- Maybe a natural 20 has special consequences (e.g., attack first or add half damage; double damage is too much). Conversely, a natural 1 spells disaster.

In conclusion...

Took me a while, but I think I've created the basis for my mass combat system. Maybe I could turn this into a 10-page PDF with little effort, and if I add my house rules on critical hits and combat maneuvers. I'd have twentysomething pages on combat... What do you think?

EDIT: this is a brainstorming post and deserves further refinement. Stay tuned!

6 comments:

  1. Interesting approach! I like Method II.

    Re: bows and their advantage: perhaps a wargamey option of halving casualties in exchange for being "pinned down" could be introduced. Movement is lost/charge is broken as the soldiers take cover or hide behind shields, but less lives are lost in the volley.

    ReplyDelete
    Replies
    1. Thanks! Yeah, we should definitely take shields into account, maybe +2 against arrows instead of +1. A "turtle" formation could work too.

      Delete
  2. There of course a zillion of mass combat fantasy systems out there ... some indeed work on the multiplicative effect of 1-1 combat, others (mostly inspired by historicals) consider a whole unit as a basic building block.

    But anyway ... one system for multplication of 1-1 combats that I saw over the years (and which has some benefits) was as follows: suppose you have a bunch of troopers of type A attacking a bunch of troopers of type B. Somehow you calculate the odds for a single A succesfully attacking a single B. Let's say this is 47%. Then you multiply this by the number of troopers of type A. Let's say you have 8 type A ==> 47%*8 = 376%. This means 3 troopers B killed (the 300%) and another 76% for a 4th kill.

    It is somewhat related to your method 2 (I believe), I just wanted to mention it as part of your brainstorm ;-)

    ReplyDelete
    Replies
    1. Thanks! Yeah, I was thinking of something along these lines. And indeed, we must consider units as block and how they differ form just individuals.

      Delete
  3. Musing on different weapon and armour, could one convert armour to 'additional HD' (think damage reduction) that enables one to mix units?

    Similar to the idea for PCs, perhaps one can target different unit types to 'focus damage' for half damage for the round.

    As for different weapon types, I think they are still useful for balance considerations at the tactical level, so you can value far range, reach, then melee differently, with 'how' the damage is delivered modifying the result (row of pikes is only going to target the front line of the enemy, so it would be 'focused' damage to the first two ranks for that round, with perhaps additional damage if the enemy attempts to push pass. Note that doing so would mean tgat the extended reach weapons would have to remaneuver the next round (or draw side arms)

    ReplyDelete
    Replies
    1. Yes, additional HD/HP could work. I'd like PCs to use the usual rules, with some adaptations (maybe cleave etc.). And weapons definitely deserve some love... I'm thinking of pikes attacking first, and a round/maneuver to draw sidearms definitely makes sense.

      Delete