Mass Combat
Divide the Battlefield into Zones
There can be a handful or many depending on the size of the conflict. Only use as many as you think that you will need. The PCs will begin in one of these zones along with enemy forces that oppose them. This may be a random placement or against specific enemies depending on the setup and intelligence available to both forces.
Place allies and other enemy forces in the remaining zones. Again base these starting forces according to the information available to them. At this point all forces should be deployed in zones. Draw a rough sketch map of the zones and note which forces are in each one.
Determine Match-up in each Zone
Except the one the PCs are in!
This is a rough level compatibility test. Look at factors such as numbers/ratio, individual prowess of combatants, special abilities, etc. This is where we determine if there is enough of a mismatch to apply modifiers to the conflict. A positive modifier means an edge for the PCs allies. A negative modifier means an edge for the PCs enemies. For each zone determine the match-up modifier in a range of 0 to +/- 4.
This is where being familiar with the participants stats is important. Only a severe advantage should get a +/- 4 modifier such as being outnumbered 3 or 4 to 1, or a force of regular men fighting half or more of their number of ogres. Remember special abilities. If the entire enemy force is resistant or largely immune to the other side's attacks (soldiers vs wererats) that would count as a huge advantage.
This is also a good time to assign modifiers for information the players may have that is shared with allies or for good tactical deployment depending on the setup and how much time there is to prepare.
Fight!
Each round determine the status of the battle happening in each zone the PCs are NOT in. Roll 3d6 for each zone of battle applying the modifier for that zone. Use this table to apply the outcome of a round:
<= 4: Allies in severe trouble- enemy gains 3 points
5-8: Allies in trouble-enemy gains 2 points
9-10: Struggle locked but stable- enemy gains 1 point
11-12: Struggle locked but stable- allies gain 1 point
13-16: Enemies in trouble- allies gain 2 points
at or above 17: Enemies in severe trouble-allies gain 3 points
The first force in a zone to reach 6 points wins the battle in their zone. Make a note of how the battle in each zone is going. This way you know how the tide is swinging during each round and roughly how long each zone will take to resolve.
Degrees of Victory
Each zone will have a victor. The cost of the victory is determined by the margin ratio:
6-0: clean sweep, no casualties, enemy largely destroyed
6-1: easy victory, 5% casualties, enemy soundly defeated
6-2: victory, 10% casualties, enemy defeated
6-3: tough victory, 30% casualties, enemy defeated
6-4: costly victory, 60% casualties, enemy barely defeated
6-5: pyrrhic victory, 80% casualties, victorious unit broken
Movement between Zones
A unit that achieves victory in its zone can then reinforce friendly units in an adjacent zone. It takes 1 round to move to an adjacent zone. A move across 2 zones would require 2 rounds, etc. All units save a broken unit can move to assist allies. The round after joining an allied unit, the reinforcements add a +1 to +5 modifier to their allies in the new zone depending on what shape they were in. A unit moving to assist after a clean sweep victory would add +5 while a unit following a costly victory would add only +1 for example.
All of this can be determined in prep with notes of what is happening in each zone round by round. Now there is a rough outline of how the battle will progress without PC actions. As the players fight their part of the battle and move to help allies in other zones you have a solid idea on what is happening in each place as the PCs get there. The system isn't that difficult to use at the table if you would prefer the flow of battle to be a surprise each round especially if you have players help make the rolls.