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.

Mechanics of multiple attacks per combat round.

Started by ggroy, August 01, 2011, 03:09:13 PM

Previous topic - Next topic

ggroy

This is the simplest model I can think of offhand, for determining the probabilities to assign to a character making multiple attacks on a target in a single combat round.


For example, this can be a fighter doing multiple sword attacks on one or more adjacent badguys during one round of combat.  The fighter is permitted to do multiple attacks in a single round, and doesn't invoke any attacks of opportunity by the badguys.

Some assumptions which go into this model are:

1 - The attacker can make N attacks during one combat round, without invoking any attacks of opportunities from the opponents.


2 - The probability of the attacker hitting an opponent during a single attack is q, where each attack is independent of one another.  For one combat round, q is the same for each single attack.  (ie. This is not like the iterative attacks in 3E/3.5E D&D).

3 - There is an overall probability p of the attacker hitting an opponent during the combat round, which includes missed attacks.  Hence the probability of the attacker completely missing any opponent during one combat round is 1-p.


The simplest case is making 2 attacks per combat round against one or two opponents, with an overall probability p of hitting an opponent.  So the overall probability should include the scenarios where one attack misses.  Mathematically this would be:

p = q^2 + 2q(1-q)

The second term represents the cases where one attack hits and the other misses.  The first term represents the case where both attacks hit.

Doing some algebra, the equation becomes (1-q)^2 = 1-p.  (The equation in this form can be interpreted as the probability of both attacks missing completely is 1-p).


One can do the same thing for three attacks.  The equation for three attacks is:

p = q^3 + 3q (1-q)^2 + 3(1-q) q^2

which after some algebra becomes (1-q)^3 = 1-p.  (The equation in this form can be interpreted as the probability of all three attacks missing completely is 1-p).


In general for N attacks per combat round, the equation is

(1-q)^N = 1-p

The solution to this equation in general has N roots.  But we are only interest in real number solutions between 0 and 1.  This particular solution is

q = 1 - Nroot(1-p)

where Nroot is the N-th root.  (ie.  2root is the square root.  3root is the cubic root.  etc ...).

For N=1 attack per combat round q=p, which is expected.

Let's calculate the single hit probabilities q, for different overall to-hit probabilities p for N=2 attacks per combat round.

p = 0.45, q = 0.2584
p = 0.50, q = 0.2929
p = 0.55, q = 0.3292
p = 0.60, q = 0.3675
p = 0.65, q = 0.4084
p = 0.70, q = 0.4523
p = 0.75, q = 0.5
p = 0.80, q = 0.5528
p = 0.85, q = 0.6127
p = 0.90, q = 0.6838
p = 0.95, q = 0.7764

Comparing the N=1 and N=2 single attack probabilities q, doing two attacks per round reduces the probability per attack q by approximately 20% to 25%.

As an approximate rule in a D&D style d20 fantasy rpg game, a fighter with a 55% to 85% probability of normally hitting a monster with a single N=1 attack in a combat round, will take a -5 penalty per attack in the scenario where the fighter wants to attack the monster two times per combat round.

One can do the same calculations for three or more attacks per combat round on a monster.  From some rough calculations (which I won't reproduce here), an approximate rule for a D&D style d20 fantasy rpg game is an additional -2  stacked penalty for each additional attack per combat round.

Bloody Stupid Johnson

Hi ggroy. Interesting, though its an effort to follow you.
Apologies if this is only step 1 and you're still going. If so, please disregard.

If I understand correctly, using the -5 penalty for two attacks is based on the single-hit probability?   In most cases wouldn't the fighter want to take the penalty anyway since he might also hit with 2 attacks and so do double damage?

(My munchkin rule of thumb is that you should take a to-hit penalty to get an extra attack as long as the to-hit penalty doesn't reduce your chance of hitting below 1/2 normal - since an extra attack simply doubles your final expected damage per round).

ggroy

#2
Quote from: Bloody Stupid Johnson;471498If I understand correctly, using the -5 penalty for two attacks is based on the single-hit probability?

Let's take an example.

The fighter makes one attack over a combat round.  In such a scenario, the fighter has to roll 11 or higher (on a raw d20 roll) to hit a particular monster.

If the fighter decides to make two attacks on the same monster in a combat round, the fighter has to roll a 16 or higher on both raw d20 rolls to hit the monster two times.  (This is where the -5 penalty comes in).

If the fighter decides to make three attacks on the same monster in a combat round, the fighter has to roll an 18 or higher on all three raw d20 rolls to hit the monster three times.  (This is where the -2 penalty per additional attack comes in).

Quote from: Bloody Stupid Johnson;471498In most cases wouldn't the fighter want to take the penalty anyway since he might also hit with 2 attacks and so do double damage?

For easy to hit targets, definitely.  (ie.  Cutting through a bunch of orc or stormtrooper mooks).

For hard to hit targets, the -5 penalty would definitely be noticeable.  For example, if a hard boss monster normally requires a raw d20 roll of 15 or higher to hit it (in the one attack in a combat round scenario), taking two attacks on the hard boss monster in the combat round would require a roll of 20 on both raw d20 rolls to hit the boss both times.


More generally, my model completely breaks down when there's no hard limit on the maximum number of attacks per combat round.  With no hard limit on the maximum number of attacks per combat round, the optimum strategy would be to go into "berserk" mode where one just makes a large (or infinite) number of attacks.  With an infinite number of attacks, it's basically "insta kill".

My model would probably work better with a percentile d100 system with some hard limits on the maximum number of attacks per combat round, with the probabilities cranked out by the formula q = 1 - Nroot(1-p).

ggroy

#3
Quote from: Bloody Stupid Johnson;471498(My munchkin rule of thumb is that you should take a to-hit penalty to get an extra attack as long as the to-hit penalty doesn't reduce your chance of hitting below 1/2 normal - since an extra attack simply doubles your final expected damage per round).

This would be the case for a D&D style damage system.  (In my initial model, no damage system was specified).

For example, a fighter swinging a sword (with d8 damage) with p = q1 = 75% to hit a monster in a single attack in a combat round.

If the fighter did two sword swings at the monster in a combat round, the probability per swing to hit is reduced to q2=50%.

For three sword swings at the monster per combat round, the probability per swing is reduced to approximately q3 = 37%.  (From doing the calculation).

So a one sword attack in a combat round, the expectation (average) value of damage done by the fighter per combat round would be 0.75*4.5 = 3.375

For two sword attacks in a combat round, the expectation value of damage done by the fighter per combat round would be 2*0.5*4.5 = 4.5

For three sword attacks in a combat round, the expectation value of damage done by the fighter per combat round would be 3*0.37*4.5 = 4.995

(The expectation value of d8 sword damage is 4.5).


At this point, I haven't thought much yet about specifying a damage system.  It would add in a lot more assumptions.

Bloody Stupid Johnson

OK cool. Well thanks for the math anyway! I have been fiddling around with a system thats d20 based and was going to have doing two actions impose a -5 penalty, so the math here is helpful. (for it, I'm happy for multiple actions to be the ideal strategy against weaker targets).

If you were aiming to building a system where the same odds of hitting on N attacks as on 1 attack though, I guess the -5 is only an approximation ? To get it work completely consistently, I suppose you would need some sort of table-based system - as in set up a number of ranks of fighting ability with each having its % chance to hit predefined so as to have a shift of N ranks (for N attacks) gives the same to-hit chance, calculated with your formula.

Alternatively, dice pool systems might work for that. If a character making 2, 3 or more attacks has to divide their total dice pool across the N actions, with 1+ successes indicates a hit, the splitting leaves the total chance of success (1 or more hits) unchanged. [Though as before it increases the odds of multiple successful hits and so needs some other balancing factor].

ggroy

Quote from: Bloody Stupid Johnson;471551If you were aiming to building a system where the same odds of hitting on N attacks as on 1 attack though, I guess the -5 is only an approximation ?

Yup.  A very crude approximation.

Quote from: Bloody Stupid Johnson;471551To get it work completely consistently, I suppose you would need some sort of table-based system - as in set up a number of ranks of fighting ability with each having its % chance to hit predefined so as to have a shift of N ranks (for N attacks) gives the same to-hit chance, calculated with your formula.

For individuals who like lots of tables and/or like to crank out non-trivial formulas.

ggroy

I thought more about possible damage systems in my model.  In particular, the "berserk" mode where the number of attacks "N" a player does in one combat round, is large (or goes to infinity).

In the case of d20 D&D style systems, the "berserk" mode is inevitable if there are no hard limits on the maximum number of attacks per combat round, combined with the generic d20 rule of rolling a raw natural 20 is always a hit.


A more interesting "berserk" mode case where things are not so berserk, is a damage model with the following additional (unrealistic) assumptions:

4 - The damage "D" done by a weapon, is generated the same way for each successful attack.  The average value of D will be denoted avg(D).

(For example, a sword with D=d8 damage will have average value avg(D) = 4.5).

5 - The to-hit attack rolls are generated from a continuous uniform distribution over the real numbers interval [0,1].


One quantity of interest is examining the expectation (average) value of total damage done for N attacks done per combat round, in the limit where N is large (or approaches infinity).  We will denote the average value of total damage done in a combat round as "ATD".

So for N attacks done during a combat round with damage D for each successful attack, the average total damage done ATD during a combat round, is in general:

ATD = N*[1-Nroot(1-p)]*avg(D)

If we let N go to infinity, the term N*[1-Nroot(1-p)] actually has a finite limit.  Doing some algebra and taking the limit  N->infinity, this limit turns out to be

N*[1-Nroot(1-p)] -> -ln(1-p)

where ln is the natural logarithm (ie. logarithm to base e, where e = 2.7182818...).  Hence

ATD -> [-ln(1-p)]*avg(D)

as N approaches infinity.

An interesting special case is when the average total damage ATD for N large, is exactly equal to the average weapon damage avg(D).  (ie.  Where  -ln(1-p)=1).  Doing some algebra, p = 1 - 1/e = 0.6321.

ggroy

#7
Without going through the details, the standard deviation of ATD I suspect should scale approximately as:

[sqrt(N)]*std(D)

for large N.


(sqrt is the square root).

std(D) is the standard deviation of the damage D.


(I'll have to work on this further later).

Exploderwizard

Have you considered mounting defense penalties as an offset to multiple attacks? That way there is extra vulnerability to think about so just producing the most dpr will only be as good as the fighter's confidence that he will put down the threat.
Quote from: JonWakeGamers, as a whole, are much like primitive cavemen when confronted with a new game. Rather than \'oh, neat, what\'s this do?\', the reaction is to decide if it\'s a sex hole, then hit it with a rock.

Quote from: Old Geezer;724252At some point it seems like D&D is going to disappear up its own ass.

Quote from: Kyle Aaron;766997In the randomness of the dice lies the seed for the great oak of creativity and fun. The great virtue of the dice is that they come without boxed text.

ggroy

Quote from: Exploderwizard;471647Have you considered mounting defense penalties as an offset to multiple attacks? That way there is extra vulnerability to think about so just producing the most dpr will only be as good as the fighter's confidence that he will put down the threat.

I haven't yet.

In principle, something like this would make sense.

ggroy

#10
Here's a possible framework within my model, to assign a theoretical probability to an "insta kill" where a monster is killed in one combat round.

(Using framework and variables from OP).

Conceptually, the probability of an "insta kill" (which will be denoted "pk") should be very very very small.  So the probability of no "insta kill" should be almost 1.  So in terms of the math:

prob(no "insta kill") + prob (insta kill) = 1

pk = prob (insta kill) = 1 - prob(no "insta kill").


For an "insta kill" within the framework from the OP, this would mean the overall probability p of hitting a target in one combat round would be almost 1.  This isn't quite rigorous, but we can define the probability of no "insta kill" to be proportional to the overall probability p of hitting a target in one combat round which is almost 1.  To make things simple, the proportionality is made equal.  Hence:

prob(no "insta kill") = p

pk = prob (insta kill) = 1 - p


To determine the probability of "insta kill" (pk) with these egregious simplifications, one can use the same math in previous posts with the replacement p = 1-pk.

From the 7th post in the thread, we'll use the formula for average total damage "ATD" per combat round, when the number of attacks "N" per combat round goes to infinity.

(*) ATD -> [-ln(1-p)]*avg(D)


Being on the conservative side, we'll take the damage D as 1 hit point of damage for each successful hit.  So avg(D) = 1.

A target monster we are trying to "insta kill" has H hit points, which will be made equal to the average total damage ATD which has to be done in one combat round.  Hence ATD = H.

Plugging these in to equation (*), the probability of "insta killing" a monster with H hit points would be:

pk = e^(-H)

where e = 2.7182818


(Some examples).

A monster with H = 10 hit points, the probability to "insta kill" it in one combat round (with an infinite number of attacks), is pk = e^(-10) = 0.0000453

A monster with H = 25 hit points, the probability to "insta kill" it in one combat round (with an infinite number of attacks), is pk = e^(-25) = 1.39 * 10^(-11)

A monster with H=100 hit points, the probability to "insta kill" it in one combat round (with an infinite number of attacks), is pk = e^(-100) = 3.72 * 10^(-44)


Very small probabilities indeed, which shouldn't be surprising at all.

Perhaps this framework could be used to define degrees of "insta kill", such as for high level wizard spells.

ggroy

#11
Quote from: Exploderwizard;471647Have you considered mounting defense penalties as an offset to multiple attacks? That way there is extra vulnerability to think about so just producing the most dpr will only be as good as the fighter's confidence that he will put down the threat.

I thought more about possible defense systems.  This is the simplest defense model I can think of offhand, to complement the multiple attacks system in the OP.

It turns out the mathematical framework is almost identical with the OP.  But the assumption (1) of no opportunity attacks in the OP, will have to be changed.

One (unrealistic) assumption in place will be that when the player makes N attacks during a combat round, N opponents will have N possible attacks on the player during the same combat round.  So essentially the player has to defend against N opponent attacks during the same combat round the player is doing the N attacks against the opponents.

Using similar variables as in the OP, we will define:

P = Overall probability of player defending one's self against all opponent attacks during one combat round.  (1-P is the overall probability the player is hit by the opponent(s) ).

Q = Probability of the player defending against a single opponent attack, every time an opponent attacks the player during the combat round.


For the player defending against two attacks in a combat round,

P = Q^2 + 2Q(1-Q)

For the player defending against three attacks in a combat round,

P = Q^3 + 3Q(1-Q)^2 + 3(1-Q)Q^2

This math is essentially identical to the OP.  So taking the results from the OP, we have the solution

Q = 1 - Nroot(1-P)


In a d20 D&D style system, a crude approximation is that if the player decides to make (N = 2) two attacks in a combat round, the two attacks each incur a -5 to-hit penalty, along with a -5 penalty to defenses like AC, reflex, etc ...

If the player decides to make (N=3) three attacks, the three attacks each incur a -7 to-hit penalty, along with a -7 penalty to defenses like AC, reflex, etc ...

If the player decides to make (N=4) four attacks, the four attacks each incur a -9 to-hit penalty, along with a -9 penalty to defenses like AC, reflex, etc ...


As an example in a d20 D&D style system, let's take a player's overall defense probability to be P=75% such as AC.

The player is making (N_player = 1) one attack over a combat round.  With an opponent making a single attack attack in a combat round against the player, the opponent has to roll a raw 16 or greater to hit the player.

The player is making (N_player = 2) two attacks over a combat round.  With two opponents each making a single (N_opponent = 1) attack in a combat round against the player, each opponent has to roll a raw 11 or greater to hit the player.  (This is a -5 penalty on defense).

The player is making (N_player = 3) three attacks over a combat round.  With three opponents each making a single (N_opponent = 1) attack in a combat round against the player, the opponent has to roll a raw 9 or greater to hit the player.  (This is a further -2 stacked penalty on defense).


EDIT:  This is the simplest model I can think of offhand for the player making more than one attack per combat round, where the penalties are approximately commensurate for both the player attacks and defenses.