There used to be a lovely PDF for 3.5 edition mass combat on DriveThruRPG.com. It was an excerpted chapter from a larger hardcover book. But you don't need the whole book or even the whole chapter to implement their system. It was very robust and clever, because it used the CR/EL system that is already in place. It worked like this:
- Break the armies down into opposed units. So let's say each side had 20 level 2 combatants, in units of 10.
- Assign an EL to each unit, using the normal DMG rules (page 49). So 10 level 2 warriors = EL 9.
- Pit the units against each other. Have each unit roll a d20 and add their EL. The side with the lower score must reduce their EL by 2 (this represents their losses). Keep rolling until a unit is destroyed (EL of 0 or worse), flees (at a loss of 2 EL), or surrenders.
- Half your losses can be recovered over a day.
That's it. Done.
Now, if you have a unit that is larger than what the DMG shows, just extrapolate. The chart in the DMG page 49 shows that a doubling of number = 2 EL more. So a unit of 20 should be 2 EL higher than a unit of 10. Or an EL of 11, in the example I've been using.
So let's play out those rules. Each side has 2 units. In each unit there are 40 1st-level grunts. That gives each unit an EL of 13. But oops! One of the units has a 6th-level PC leading it! That actually isn't a huge boost, if you look over the "mixed pair" numbers in the DMG chart. However, it's enough to grant a boost of 1 to the EL of that unit. So here we go:
bandit unit vs. guard unit with leader
1d20 + 13 vs. 1d20 + 14
- roll 1: 22 vs. 16 = guards lose 2 EL
- roll 2: 19 vs. 25 = bandits lose 2 EL
- roll 3: 20 vs. 14 = guards lose 2 EL
- roll 4: 22 vs. 19 = guards lose 2 EL (now at 8 EL)
- roll 5: 14 vs. 20 = bandits lose 2 EL (now at 9 EL)
- roll 6: 14 vs. 12 = guards lose 2 EL
- roll 7: 17 vs. 13 = guards lose 2 EL
- roll 8: 24 vs. 15 = guards lose 2 EL (now at 2 EL)
The guards are now probably hopelessly lost. They can flee, but they lose 2 EL in the process, and since they're already at 2 EL, that would effectively destroy them. They decide to surrender.
There, we just had a battle with 80 members, and resolved it with 8 opposed rolls.
Now, I did say that each side had two units. So we can do this same type of rolls again for the next group. Of course, since neither of those units contain a hero leading them, their EL is 13 each. Dead even fight, odds could go either way.