SPECIAL NOTICE
Malicious code was found on the site, which has been removed, but would have been able to access files and the database, revealing email addresses, posts, and encoded passwords (which would need to be decoded). However, there is no direct evidence that any such activity occurred. REGARDLESS, BE SURE TO CHANGE YOUR PASSWORDS. And as is good practice, remember to never use the same password on more than one site. While performing housekeeping, we also decided to upgrade the forums.
This is a site for discussing roleplaying games. Have fun doing so, but there is one major rule: do not discuss political issues that aren't directly and uniquely related to the subject of the thread and about gaming. While this site is dedicated to free speech, the following will not be tolerated: devolving a thread into unrelated political discussion, sockpuppeting (using multiple and/or bogus accounts), disrupting topics without contributing to them, and posting images that could get someone fired in the workplace (an external link is OK, but clearly mark it as Not Safe For Work, or NSFW). If you receive a warning, please take it seriously and either move on to another topic or steer the discussion back to its original RPG-related theme.

Reducing Complex NPC Combats to Single Die-Rolls

Started by Skarg, September 16, 2017, 08:16:40 PM

Previous topic - Next topic

Skarg

When RPG PCs are near fighting that involves many NPCs, it could take a long time to resolve what happens between the NPCs, especially in a detailed combat system like GURPS Advanced/Tactical combat.

It can be possible to resolve the action between NPCs very quickly without sacrificing a lot of accuracy, with some prep work (or with sacrificing accuracy, if you don't know/care about the details). Many GM's just decide the outcome (or judge odds and roll) of battles between NPCs, either singly or in groups, but it can also be possible to develop a system that can be a pretty close approximation to the actual results of playing out a combat.

I first realized it could be possible to get surprisingly accurate results from a single die when I was playing out some sample combats for a GURPS setting I'd designed where people tended to no wear armor. Lack of armor helps a lot, because I could rule that on average, any NPC taking a single good hit would effectively be taken out, which got me to realize that I could actually calculate the odds of one sort of typical NPC fighter defeating another each turn pretty accurately, and so reduce each one-on-one encounter to a single 1d12 roll, and it would have nearly the same results as playing out the combat. It greatly simplifies things if you assume that people fight to the first good blow rather than slowly being beaten down, because then there are only two statuses for everyone: fighting or taken out.

If you can ignore light wounds (in my first case, about 85% of all weapon hits would more or less defeat a typical healthy person with no armor), it was possible to compute the odds of one opponent defeating another each round and reduce it to a flat percentage of one or the other winning, which could be rounded without much loss of accuracy (it turned out in my first cases) to a 1d12 roll. That is, I worked out the odds of one fighter or the other going first, and the odds of each to attack accurately, the opponent to avoid the attack, and the chance that the blow would take them out or not. It was surprisingly not hard in the common unarmored sword types I had, to be able to get satisfying odds reduced to a single die-roll, without even playing any combats out.

I noticed that this suddenly let me run huge melee combats ridiculously faster than before. If I was willing to assume that many of the NPCs were these known types, I could roll one die for each one-on-one and get an instant result. I could even have the dice fall in a line and/or use colored dice to roll several dice for a group of fighters at once, and just read off and apply the results in sequence matching where they're standing. e.g.:

If I couldn't do the calculation easily, I could also do sample combats to get outcome statistics. I might do 20 sample combat rounds between a healthy human NPC type versus a healthy goblin NPC type,
e.g. Six humans took down their goblin, while 4 goblins took down their human, and 10 rounds had no conclusive result, so we get a 1d20 CRT:
1-6: human defeats goblin
7-16: no big effect
17-20: goblin defeats human

Human NPC 1      Goblin NPC 1
Human NPC 2      Goblin NPC 2
Human NPC 3      Goblin NPC 3
Human NPC 4      Goblin NPC 4
Human NPC 5      Goblin NPC 5

Roll at once: 5, 12, 11, 20, 17

Human 1 takes out Goblin 1
Human 4 and Human 5 are taken out.
The rest remain standing.

That's the basic approach. It more or less works, as long as it's reasonable to assume we can ignore other details. The speed effect is amazing, but it's up to each GM to see how accurate and satisfying they can get it. Some GMs might prefer to cheap out and just use their assessment of the odds rather than playing out 20 combats. Others might like to play out more than 20 combats for better odds assessment. And many may notice that there are various factors which might apply, such as when you have a 2 or 3 vs 1, different equipment/skill matchups, bad positions, height advantages, broken ground / fallen bodies, modes of fighting (GURPS has many options for different ways of fighting), non-defeating wounds, etc.

There are many things one might want to take into account to increase the detail and accuracy, though of course the goal is to have things go quickly, so there are trade-offs, though I personally find that the more I use a system, the faster it gets and the more detail I can add in.

For example (options that can be added - some, none or all):

Situation modifiers - I often tend to decide that if the situation of two fighters would give one an advantage, I assign a modifier in their favor, usually just +1/-1 but more if it's a bigger advantage. Some situation even mean I don't let the disadvantaged figure take out their opponent, e.g. if they were stunned, knocked down, aren't facing their opponent, or lost their weapon. Since I often have already computed multiple odds for matchups of people with the same equipment but different skill levels, and in GURPS many situations are assessed as modifiers to effective skill, often I actually already have a table for that, so I can see what the modifier should be, or pretty close. (e.g. if it's a sword-skill-13 versus a spear-skill-11, and the sword-13 is fighting from a hex with a prone body in it, I can use the sword-11 versus spear-11 numbers.) Having run numbers for various match-ups turns into a decent sense for what the adjustment should be.

Multi-turn resolution - I like to combine this system with the observation than most people don't really fight with non-stop action. Especially generic footsoldier NPCs. So I'll play out 20 or more combats between single opponents of an average type for several (~2-6) turns, and then only roll and apply the results every so many turns unless they get interrupted by PCs. That has the several interesting effects: 1) It chops down the amount of time spent on those NPCs even more. 2) It adds in more "realistic" timing that takes into account fighters not really fighting constantly. 3) It adds "fog of war" in that players don't really know the outcome of all those other NPCs fighting turn-by-turn. 4) It lets you average in the effects of multiple small wounds and other effects into the combat results, instead of only capturing the outcomes of single rounds of combat.

Positional effects - Full GURPS combat on a hex-map often features some unpredictable movement from hex to hex, as people move to take advantage of the situation and/or retreat or fall down. That's a bit harder to assess except by GM imagination. It's easier when not using multi-turn resolution, and if the GM wants to be detailed and impartial, they may want to roll a few extra dice here or there to decide which way figures are moving as well. With multi-turn resolution, the figures could potentially be quite scattered after several seconds of fighting. Because of this, I usually use single-turn resolution when the interesting characters get within a turn's distance of NPCs fighting each other. If the PCs start moving across the field, this can mean I need to shift some NPCs out of multi-turn mode, or even into full detail as the PCs get closer to them.

More combat result types - I ended up wanting more detail than "up" or "down" as results, especially for settings where combattants have more armor and equipment, and/or less suddenly-lethal combat situations. So I added other status types, and counters to keep track of them, and worked on figuring out what the effects on the die-rolls should be. Which, yes, tends to reverse the speed/simplicity effect, but if combined with the multi-turn resolution option, that can more than cancel that out. What it doesn't cancel out though is the extra work to be able to know how to resolve combat when you've got say a lightly-wounded spear/shield guy versus a heavily-wounded veteran shortsword/mail guy. What I do for that is tend to have the status give a simple modifier: light wound is -1, medium wound or stunned or fallen is -2, heavy wound or lost weapon is -3 sort of thing, and if I think the system is being inaccurate and the situation is interesting and I care, I'll GM-estimate it or convert to the actual combat system for those situations.

Other estimation methods - Especially when I am using the extra result types option, I sometimes create some effect tables calculated in other ways. For example, if I am using light/medium/heavy wound status, I may pre-calculate the general odds of a certain type of missile attack at a certain skill level resulting in a certain wound level against a certain typical armored target, and even figure the modifiers for cover. Then I can resolve a missile barrage by rolling a handful of dice at once and applying wound markers.

Using computers - I've also tried writing programs to calculate outcome results, so I can run batches and get statistics without doing hours of playing out combats. That can be an enormous project in itself, and very tricky to debug and be confident it's really giving you good numbers. It helps when someone else has done it for you. There's a good combat calculator for The Fantasy Trip, for example, which has a much more predictable system than GURPS does, so it's more possible to get accurate outcome statistics for one-on-one's, though it doesn't give stats on how many turns it took to reach an outcome, no how injured the victor tends to be.

Blurry unit types - Coming up with combat results statistics for certain matchups takes a while if you want to play them out, and doing them for every type of NPC you might want to have fight each other could be a massive task (and even if you did it, result in a massive number of tables that could be hard to use/find during play). One solution is to be less specific about the types that are there, and only decide what their details are if/when the PCs (or important NPCs) interact with them. There are differnt ways to break that down, but it's possible to roughly categorize the types of combatants by skill level and heaviness of armor, for example, and use those general categories (which can be smallish in number) for the one-die resolution, and then have a bunch of samples of what those rough categories might specifically be like in detail for if/when you need more detail for specific ones. It's a trade-off, but often the details of bunch of NPCs fighting nearby the PCs won't come up in play and so their rough categories are plenty good enough. This lets you have large fast combats going on around the PCs, and still be able to switch in detailed figures if/when the PCs get directly involved with some of them.

Group match-ups - Real multi-fighter combats tend to involve multiple people on a side not just lining up and fighting a series of neat one-on-one combats. It's possible to get some stats on the outcomes of multi-figure groups, and use those in the same way. However it adds a ridiculous number of combinations if there are mixes of fighter types, so there's generally a big loss in detail, but if you're using blurry unit types, it may not matter and be a wash in terms of all the chaos that can happen in multi-fighter combats anyway.

Bren

Skarg thanks for sharing this. It's a good idea. While I've done comparative combats before, it hadn't occurred to me to use the empirical data to calculate estimation for a single die roll result. Nice!

I'm going to have to remember to try doing this for Runequest/BRP next time I run a fantasy campaign. It's enough like GURPS in some ways that the same method should result in a reasonable outcome. Also I may have to do this for Star Wars D6 for a few Rebel vs. Imperial troop types. Although I haven't used it, D6 already includes a set of miniatures skirmish rules for ground combat and starfighter encounters that look like they probably does a fair approximation, but it might be nice to see whether empirical data matches the way the rules are set up.

One minor nitpick:
Quote from: Skarg;993012Roll at once: 5, 12, 11, 20, 17

Human 1 is taken out by Goblin 1
Goblin 4 and Goblin 5 are taken out.
The rest remain standing.
I think the bolded statement above should read: "Human 4 and Human 5 are taken out."
Currently running: Runequest in Glorantha + Call of Cthulhu   Currently playing: D&D 5E + RQ
My Blog: For Honor...and Intrigue
I have a gold medal from Ravenswing and Gronan owes me bee

Skarg

Quote from: Bren;993030...
I'm going to have to remember to try doing this for Runequest/BRP next time I run a fantasy campaign. It's enough like GURPS in some ways that the same method should result in a reasonable outcome. Also I may have to do this for Star Wars D6 for a few Rebel vs. Imperial troop types. Although I haven't used it, D6 already includes a set of miniatures skirmish rules for ground combat and starfighter encounters that look like they probably does a fair approximation, but it might be nice to see whether empirical data matches the way the rules are set up.
Yeah, that should work. Especially for things like Star Wars or gun combats, where it's expected especially for unnamed fighters that if they get shot, they're not liable to keep fighting, so you only need to know who's dead. Gun combat has the ammo/reload issue, but Star Wars doesn't really AFAIK. The different range and cover situations would be the main complication, it seems to me, but could probably be calculated as situation modifiers.

QuoteOne minor nitpick:
I think the bolded statement above should read: "Human 4 and Human 5 are taken out."
Oh right. I'll edit.

Bren

Quote from: Skarg;993096Yeah, that should work. Especially for things like Star Wars or gun combats, where it's expected especially for unnamed fighters that if they get shot, they're not liable to keep fighting, so you only need to know who's dead.
In Second edition on you could assume any nameless fighter is done when they become wounded or worse and ignore results less than wounded. In First edition any hit puts you down and stunned unconscious so for a short combat you can treat any hit as equivalent to out of action.  
QuoteGun combat has the ammo/reload issue, but Star Wars doesn't really AFAIK.
Only for certain weapons like holdout blasters. Most common blaster pistols or rifles have between 50 and 100 shots per power pack so running out of ammo can be ignored.

QuoteThe different range and cover situations would be the main complication, it seems to me, but could probably be calculated as situation modifiers.
Cover is a dice add so it's equivalent to assuming a higher or lower skill depending on whether the mod is favorable or unfavorable. Range affects the target number to hit but can be converted to a dice add or penalty. Should be doable.
Currently running: Runequest in Glorantha + Call of Cthulhu   Currently playing: D&D 5E + RQ
My Blog: For Honor...and Intrigue
I have a gold medal from Ravenswing and Gronan owes me bee

nope

This is great info, Skarg. Definitely going to crib off of this stuff for my own campaign. Thanks for taking the time to write this out!