Shadowrun uses a skill check system based on dice pools and opposed checks. The basic mechanism for opposed checks is quite simple: each party constructs a pool of d6s based on their combined attribute and skill score, and success occurs on a 5 or 6. The person who rolls more successes wins, and the number of successes decides their degree of success.

When I saw this system I thought that there must be a way to recalculate it as a single dice roll. A dice pool of this kind is essentially binomial distributed, and the sum of binomial distributions is binomial, so I thought that the difference of binomial distributions would also be binomial distributed and it would be fairly easy to obtain analytically a formula for a new dice roll based on the probability of success (1/3) and the number of dice in each pool. In fact the difference of two binomial distributions is not binomial (see my appendix below) and the dice pool mechanism is quite complicated. In the case of dice pools of equal size it creates a symmetric, non-binomial distribution that tends towards normality as the size of the dice pools increases; for uneven numbers of dice it creates an appropriately skewed distribution that has no easy calculation formula. In fact, it is fairly easy to show that for equal numbers of dice in the conflicting pools, the probability of success tends towards 50% as the size of the dice pools increases.

To show this, I wrote a simple program in R that calculates the probability of success for opposed dice pools ranging in size from 1 die in each pool to 30 in each pool. I ran the simulation for 10000 rolls for each dice pool, and calculated the probability of success for each roll. In all cases the dice pool of the opponents are of equal size and the success probability is 1/3, as in the standard rules. Figure 1 shows that as the number of dice increases the chance of success tends towards 0.5. That is, a PC with skill and attribute of 10 each, and modifiers of 10, when doing an opposed check against an exactly equally matched PC, will be successful 50% of the time; whereas the same situation for characters with just an attribute and skill score of 1 will show a vastly reduced chance of success.

I’m not sure whether I like this outcome or not. Superficially, given low-skill characters are more likely to fail generally, it makes sense that they should be more likely to fail against an opponent of equal skill. But then, it seems reasonable to suppose that the chance of success when opposed by someone with the same skill as oneself should be constant. Which assumption is better? In WFRP3, difficulty of the check is set by the opponent’s skill but is not random, and usually involves competing against dice with a higher chance of generating failure than one’s own dice have of generating success. Is this a better model? Other dice pool systems probably use a fixed target number – is this better? Maybe a fixed target number can be manipulated to generate a fixed failure rate (if it is based on the contrast of the PC skill and the NPC skill). But then again, this opens the possibility that PCs can do better in opposed than unopposed checks. For example, in Shadowrun, when doing an unopposed check the maximum probability of success for a PC with attribute 1 and skill 0 is 1/3. Presumably when they oppose someone with attribute 1 and skill 0 their chance of success should be less than 1/3? If one accepts this proposition, then Shadowrun is perfectly balanced, and the only question is how long it takes to get to 50% success. This pace can be changed by using different success targets and dice sizes: for example, a success threshold of 7 on d10 slightly reduces the chance of success for any given dice pool.

Note that by the Strong Law of Large Numbers, it is impossible to change the limiting probability for opposed dice pool checks, no matter the threshold probability or the die size. This is because as the dice pool grows in size each dice pool becomes increasingly close to normally distributed; but when subtracting one normal distribution from exactly the same normal distribution there is, of course, a 50% chance of getting a positive number. So as the distributions get more normal, so too does the average chance of success tend to 50%. Increasing the dice size and reducing the success threshold will delay the onset of this 50%, but Figure 1 shows that for most PCs and most campaigns, d6 will suffice.

Given these results, I think that the Shadowrun dice pool system is pretty close to perfect; and there is no easy way to modify it or any similar dice system to get more nuanced results. I will shortly be examining WFRP 3 dice systems to see if they produce more subtle outcomes. Stay tuned!

—

Appendix: Proving that the difference of two Shadowrun dice pools is not binomial.

When both the PC and their opponent have a total skill of one, the opposed check becomes a challenge of 1d6 vs. 1d6. In this case there are three outcomes: -1 success (opponent wins and PC loses); 0 success (both win or both lose); +1 success (PC wins and opponent loses). For a single success probability of 1/3 the probability of each event can be easily calculated without special mathematics as 2/9, 5/9 and 2/9 respectively. This means that the probability of -1 and +1 are equal. If this distribution is binomial, then it can only occur from a binomial distribution with 2 trials and a probability of p, since this is the only binomial distribution that allows three distinct outcomes. Thus if we calculate the probability of 0 successes or 2 successes under such a distribution and set it equal to the extreme probabilities obtained for the 1 vs. 1 shadowrun check, we can see the conditions under which they are equal. Under a binomial distribution with probability p and 2 trials, the probability of 0 successes is (1-p)^2; the probability of 2 successes is p^2. Comparing with the 1 vs. 1 Shadowrun check, we see that these two probabilities must be equal (as they are in the Shadowrun check). That is, p^2=(1-p)^2. This is only possible if p=1/2. But in the Shadowrun check p=1/3. Thus, by contradiction, the Shadowrun check cannot be binomial. If any one check is not binomial then it follows that we cannot expect a general rule in which checks are binomial. Thus, through contradiction, Shadowrun opposed dice pools are not binomial and no formula can be deduced which will enable calculation of binomial probabilities in Shadowrun.

For general opposed dice pools, the probability distribution is obtained by calculating the cross-correlation of the two binomial probability densities. An equivalent calculation for the Poisson distribution is shown in Wikipedia (the Skellam distribution) and is obviously nasty – it involves Bessel functions, which is an immediate “do not enter” sign. The equivalent calculation for the binomial distribution involves a calculation of products of binomial coefficients, and my combinatorial kung fu is not up to it, but I think at least for opposed checks with equal numbers of dice it can be solved analytically, though not in a way that is useful for gamers. I think such a solution is available in a textbook by Ashkey (?) but I don’t have the book or the will to read it. So more complicated solutions to the problem will be found numerically or not at all. I may revisit this problem in order to compare Shadowrun with WFRP 3. But for now, I’m shying away from it for obvious reasons!

September 29, 2013 at 8:25 am

Hi FN, sorry to be off topic but I am trying to contact you re your recent post on my blog – I’ve it off – hopefully temporarily – until I can talk to you about some issues in it. Can you contact me? My contact details are on the blog. Cheers val

September 29, 2013 at 8:25 am

Taken it off – sorry

September 30, 2013 at 9:43 am

Given I don’t know the difference between a binomial distribution and a fried haggis [1], can I try to get the layman’s explanation of what this is saying?

It seems you’re saying that there is a material difference between:

Case 1: Two PCs with 6 dice rolling against each other.

Case 2: One PC rolling against a target number of 2 [2]

Is that right?

This is interesting to me as in its second edition,

Exaltedmoved from an opposed roll defence to an unopposed roll against a derived expected value [3]. There was a fair bit of community debate on whether this was a good move (simplifying/speeding play) or poor move (increasing probability of a hit due to the static nature of the defence). Do you have a vie won which of these would be the case? Am I interpreting it correctly that your analysis shows that static defence values increase the probability of a hit? At what number of dice does the probability of an opposed roll roughly match a static value [4]?[1] Please don’t try to explain it. I also don’t care.

[2] Target number = 2 as the defending PC has 6 dice divided by 1/3 expected success

[3]

Exalted 2egenerally derives defence as number of dice/2 as success is 7 or greater on d10 with 10 counting as two successes, therefore ~5 successes expected off 10 dice.[4] I’m assuming that the 50% probability mark would represent an alignment of static and rolled values.

September 30, 2013 at 11:46 pm

I’m not sure, and I’m going to investigate that next. I think ultimately they should both tend to 50% (assuming you have got the expected target number right), it will just be a matter of the shape of the curve for small numbers of dice. This is because as the number of dice gets large, the distribution tends to normal (i.e. symmetric) with a mean of 1/3*(number of dice), so you will get 50% chance of a value above the target number. At lower numbers of dice the distribution won’t be symmetric, so you will get lower probabilities.

I thought of calculating a Kullback-Liebler divergence for the distribution from a normal distribution, to see how quickly the opposed dice rolls converge to a symmetric normal distribution, but I think it’s too hard and unnecessary. But I should compare the opposed pool with a target number, because it’s a good way to simplify the dice rolls. Unfortunately, I think it will only be close to equivalent when you have equal numbers of dice in both pools; the distribution of the opposed skill check outcomes becomes very skewed when the dice pools are of different sizes, and then calculating the target number will be a little fiddlier. But I should compare that too. Stand by for an update!

(And maybe I should do it for Exalted too?)

Val, thanks for the heads up!

October 1, 2013 at 10:08 am

I suspect that the Shadowrun results should apply for Exalted, with the caveat that Shadowrun run dice pools are likely to smaller than Exalted ones [1]. At the end of the day they’re both just target numbers and a random number generator [2].

If you finish this up and find any interesting results, I was considering posting to the Exalted forum to reference it. They’re testing the 3rd edition at the moment and it’d be nice to think that the game may factor probability in elegantly rather than the standard nerd eyeballing [3].

[1] The basic “competent human” dice pools are likely to be about 6 in both systems from memory, but Exalted uses enough buffs that I’d expect to see 25+ dice rolled about anything you really cared about.

[2] Though I concede that if you think it’s worth investigating you’d be a much better judge of how maths works than I am.

[3] Though I still prefer Gygax-esque nerd eyeballing to D&D 3e’s soulless lessons in the law of large numbers.

October 1, 2013 at 10:21 am

See my update, I’ve added an example Exalted chart that is not quite perfect. I think the problem of rounding is inevitable in any system that uses discrete dice. And yes, feel free to post this on the Exalted forums. I could incorporate exploding dice explicitly, but they only occur in one of four successes so I doubt they would make much difference and their effect would be constant across target numbers, whereas the rounding problem is specific to certain numbers. Incidentally, the target probability I used in that update chart is 0.4; if as you say the actual target probability is 0.5 for the calculation of expected targets, then you will see less jags (only two depending on whether the dice pool is odd or even).

If the target probability is 0.5 I can see a very simple solution to the problem from the GM side: make sure all monsters only have even attributes and skills. Then they are guaranteed even dice pools and so the results will always be correct. This won’t solve the problem for the GM attacking players, though you could get around that by reversing who does the rolling – if the GM attacks players they roll against a target number to resist the attack.

Hmm….

October 1, 2013 at 11:09 am

FN sorry off topic again but just wanted to contact you as I haven’t heard from you to ask if it’s ok if I reinstate your post on my with just the ‘controversial’ bits out? I’d have to do it under my own name because of the non-existing comment editing functions in blogger, but would like to do that if Ok?

cheers

October 1, 2013 at 11:14 am

Sorry for my laziness Val, I’ve mailed you a reply. Short answer: do as you see fit!

January 15, 2014 at 5:45 am

In Mongoose RuneQest II (MRQII), one of the more recent updates to the long running Runequest game (thought itself a few years old now), they introduced an opposed roll check for the likes of stealth vs spot checks – something thought to be challenging with the sort of flat % chance of success used in RQ. Very simply, the highest successful roll wins the opposed contest. Without doing any maths, this would also seem to tend toward a base chance of success of 50% of beating an opponent of equivalent skill, assuming you make your skill check in the fist place. If Robin’s stealth chance is 100% and Jamie’s spot chance is 100%, then neither would ever fail outright and their chance to beat the other is even. If their skills are respectively 60%, then their chance of success overall is 30% I think. If there skills differ (stealth of 60% vs spot of 50%), then Robin’s stealth chance increases to 40% (I think)?

It’s a very simple mechanic. A very quick check to make, that doesn’t differ from your normal skill check (roll under your % to succeed), and very easy to see if you beat your opponent (highest successful roll). The problem with it is perhaps that it does ~halve chance for success which can therefore get very low for already low skilled individuals.

They don’t use this for combat though – which uses a degree of success rules instead. If both succeed, then roll damage vs parry/soak, who rolled highest is irrelevant.