Sections

2026-07-03

DirectDice & LessDice: no-correction & no-pip rolls for d6 TTRPGs (+ other dice substitutions)


Inspired by https://gurpsland.no-ip.org/articles/PolyGURPS.htm, which gets rid of ±3 modifiers, but still preserves ±2, expands the result range, and also doesn't go far enough to make use of Catalan dice.

Implications of Central Limit Theorem must be upheld. Singular die has uniform distibution, 2 dice have a triangual distribution, 3 dice start to look like Bell curve, and the more dice, the more normal the distribution, and the smaller the spread.


NOTATION CONVENTIONS:

  • Constant: d1
  • Coin: d2
  • Platonic: d4, d6 (with special dF and dⅢ), d8, d12, d20
  • Trapezohedra: đ10, đ10*10 (maybe also d14, d16, d18, d22, d26, d28, and d32)
  • Catalan: d12 (rhombic), d24, d30, d48, d60, d120
  • Icospheres: d80 (from d20), d180 (from truncated d20), d320, d500 ... (geohedron class I)
  • Soccer Balls: d32 (truncated d20), d42, d92, d162, d262, d362 ... (geohedron class II)
  • Funky: d(2k+1), d100 (equivalent to d% pseudodie)


đ means either use a 0-based dice or just read the die face count as 0. Conversely, d means either use a 1-based dice or just read the 0 as the die face count. Some expensive design dice have a special symbol to be read either as 0 or the face count. đ% means read 00 as 0, and d% means read 00 as 100. dF is a cube that rolls -1, 0, or 1.

Odd-dice are most easily manufactured as even-dice with each number twice, namely the Roman dIII, but DCC sets include weird-shaped odd-dice, called funky.

This article was written during waiting for "Theory of Infinity" sets that I ordered shortly after Master's thesis defense. What an absolute state of international wholesale shipping. The set also contains d5 (tapered triangular prism), d7, and d16, but these are nonisohedral, therefore not considered (same goes for icospheres and soccer balls). It doesn't include d48 and d120. DCC sets also contain nonisohedral d14.


DICE FUND:

Listing the available dice fund provides substitution constraints. I provide mine as an example of what you can get your hands on in Czechia, it might get outdated over time. Dice of the same design cannot be rolled for different purposes at the same time, you could pick which result goes where.

Total dice: ~500d2, 4dⅢ, 63d4, 4d5, 124d⚅ + 61d6 + 1d🌈, 4d7, 63d8, 65d10 + 64d10*10, 64d12, 4d16, 65d20, 4d24, 4d30, 5d60, 4d100

Same design maximum: ~20d2, 2d{Ⅲ,5,7,16,24,30,60,100}, 3d{4,6,8,10*10}, 36d⚅, 1d🌈, 4d{10,20}

Different designs: ~50d2, 2d{Ⅲ,5,7,16,24,30,100}, 28d{4,10,10*10,12,20}, 25d6, 11d⚅, 1d🌈, 27d8, 3d60


GENERIC DICE SUBSTITUTIONS (BabicaDice):

Cooking recipes of Jiří Babica are notorious for being context-free grammars allowing for some wild substitutions of lacking ingredients, in the form of "when you don't have ginger, put in garlic or onion or horseradish". Might be how potions evolved into soups.

Similarly, Catalan dice may be a bit harder to obtain in Eastern Europe due to international shipping and customs. Replace the dice the roll calls for using factorization and composition into radix rolls like d% (RadixDice):

d120 = 2 * 2 * 2 * 3 * 5 => đ12 * 10 + d10     (or đ 6 * 20 + d20 or đ4 * 30 + d30)
d100 = 2 * 2 * 5 * 5     => đ10 * 10 + d10
d 60 = 2 * 2 * 3 * 5     => đ 6 * 10 + d10     (or đ30 * 2 + d 2)
d 48 = 2 * 2 * 2 * 2 * 3 => đ 8 *  6 + d 6     (or đ12 * 4 + d 4)
d 30 = 2 * 3 * 5         => đ 6 *  5 + ceil(d10/2) (đ6 * 5 + d5 or đ10 * 3 + d3)
d 24 = 2 * 2 * 2 * 3     => đ 6 *  4 + d 4     (roll hour as d12 with d2 for AM/PM)
d 20 = 2 * 2 * 5         => đ 2 * 10 + d10
d 12 = 2 * 2 * 3         => đ 6 *  2 + d 2
d  8 = 2 * 2 * 2         => đ 4 *  2 + d 2
d  4 = 2 * 2             => đ 2 *  2 + d 2

Cannot do anything about lack of d2. You may be able to do something about lack of d10 and d6 if you have weirdly shaped d5 or d3, which also help with d30. Luckily, d10 comes twice a D&D set (ignore or make up tens as you go), d6 is available in normie stores, and for d2 pay for dice sets in cash and use change.

There is a certain optimization of mental computation. Each đX*Y+dY can be substituted for đY*X+dX. Humans like to read decimals directly, and being guaranteed a smaller non-decimal constant to multiply with is preferrable, that's why d48 is stated as đ8*6+d6 instead of đ6*8+d8, and d24 as đ6*4+d4 instead of đ4*6+d6. Decimally extend RadixDice to virtual d40, d80, d200, d240, d300, d480, d600 etc. by multipling by 10 and adding more d10s as pleased. For binary, mix and match đ2, đ4, and đ8 for desired amount of bits.

There may be a case of lacking enough of a particular type of dice, be it Catalan or Platonic or d100/d10. Pivot around the face count or otherwise redistribute it like so (PivotDice):

2d120 =>  d180 + d 60                          (3d120 =>  d180 +  d100 +  d 80)
2d100 =>  d120 + d 80                          (3d100 => 2d120 +  d 60)
2d 60 =>  d100 + d 20
3d 48 =>  d100 + d 24 + d 20
2d 30 =>  d 48 + d 12
3d 24 => 2d 30 + d 12        => d 48 + 2d 12
2d 20 =>  d 30 + d 10                          (3d 20 => 2d 24 +  d 12)
2d 12 =>  d 20 + d  4
2d 10 =>  d 12 + d  8
2d  8 =>  d 10 + d  6        => d 12 +  d  4
2d  6 =>  d  8 + d  4        => d 10 +  d  2   (3d  6 =>  d 10 + 2d  4)
2d  4 =>  d  6 + d  2

PivotDice flattens the distribution slightly, usually within margin of empirical error and dice misbehavior. Hoard d120 like a dragon if you cannot 3D print icospheres, or at least d12 and d10, as stated earlier. RadixDice can save you for 3d120 => d200 + d100 + d60 => đ20 * 10 + d10 + đ10 * 10 + d10 + đ6 * 10 + d10 = (đ20 + đ10 + đ6) * 10 + 3d10, as the numbers up there are quite composite.

There may also be cases more conducive to carrying less larger dice that are more universal to emulate smaller dice using binning (1-based) or either modulo or integer division (0-based, cleaner math):

d120: d60,      d40, d30,      d24, d20,      d15, d12, d10, d8, d6, d5, d4, d3, d2
d100:      d50,           d25,      d20,                d10,         d5, d4,     d2
d 60:                d30,           d20,      d15, d12, d10,     d6, d5, d4, d3, d2
d 48:                          d24,      d16,      d12,      d8, d6,     d4, d3, d2
d 30:                                         d15,      d10,     d6, d5,     d3, d2
d 24:                                              d12,      d8, d6,     d4, d3, d2
d 20:                                                   d10,         d5, d4,     d2
d 12:                                                            d6,     d4, d3, d2
d 10:                                                                d5,         d2
d  8:                                                                    d4,     d2
d  6:                                                                        d3, d2
d  4:                                                                            d2

This also supports some virtual dice that have an isohedral physical form only in form of a trapezohedron or bipyramid, as well as some odd-faced ones. Substitutions for the usual isohedral ones are as such (VirtualDice):

đ60 => đ120/ 2
đ48 => (đ12*12+đ12)/3
đ30 => đ120/ 4 => đ 60/ 2
đ24 => đ120/ 5 => đ 48/ 2
đ20 => đ120/ 6 => đ100/ 5 => đ 60/ 3
đ12 => đ120/10 => đ 60/ 5 => đ 48/ 4 => đ 24/ 2
đ10 => đ120/12 => đ100/10 => đ 60/ 6 => đ 30/ 3 => đ20/2
đ 8 => đ120/15 => đ 48/ 6 => đ 24/ 3
đ 6 => đ120/20 => đ 60/10 => đ 30/ 5 => đ 24/ 4 => đ12/2
đ 4 => đ120/30 => đ100/25 => đ 60/15 => đ 48/12 => đ24/6 => đ20/5 => đ12/3 => đ8/2

Specifically đ48 is quite awkward to emulate, here it's done by a great dozen roll integer-divided by 3. Maybe also hoard that, or at least closely guard your d8 and d6, as stated earlier.

Using factorization from RadixDice, large dice can emulate multiple smaller dice at once with their entropy, assuming the guest dice face count multiplies to a number that divides the host die face count. If equal, the host dice entropy is utilized fully. Sometimes, LaTeX could really be handy. Thereby single đ120 can be a source for virtual đ10+đ6+đ2 like đ120/12+đ120/10+đ120/60, which is PivotDice for 3đ6. Similarly, đ8 can be seen as rolling octal-packed 3đ2, more generally đ(2^k) can roll kđ2 for any natural k. This application of VirutalDice to multiplex entropy can be called EntroMuxDice.

As a last resort, especially with funky prime DCC dice, go with the next higer face count you have or at least can deal with using methods described above, and simply reroll when the result is too high. This application of VirtualDice can be called RejectDice.

Putting it all together, to roll a đ° pseudodie:

đ360 => đ60 * 6 + đ6 => đ6 * 60 + đ6 * 10 + đ10 => đ4 * 90 + đ8 * 10 + đ10

Some games store angle in multiples of tau/256=pi/128 ("binarians"):

đ256 => đ8 * 32 + đ8 * 4 + đ4 => đ4 * 64 + đ8 * 8 + đ8


NPC ROLLS (DirectDice):

This substitution was conceived primarily to eliminate correction constants using combinations of 1-based and 0-based dice. All Nd6-N rolls can be DirectDiced as Nđ6, but this is boring. Reject signifies to reroll on said result. If the extrema of both sides are mentioned, it's possible to treat it as a slight range extension.

OrigExpr   From   To   DirectDice   Reject
  d6-1       0     5   đ6
  d6         1     6   d6
  d6+1       2     7   d8           1, 8
  d6+2       3     8   d8           1, 2
  d6+3       4     9   đ10          0, 1, 2, 3
 2d6-2       0    10   đ8+đ2
 2d6-1       1    11   đ10+d2
 2d6         2    12   d8+d4
 2d6+1       3    13   d8+đ6        2
 2d6+2       4    14   d8+d6        2, 3
 2d6+3       5    15   4d4          4, 16
 3d6-3       0    15   đ8+đ6+đ4
 3d6-2       1    16   đ8+d6+đ4
 3d6-1       2    17   đ8+d6+d4
 3d6         3    18   d8+d6+d4
 3d6+1       4    19   đ10+d6+d4    2, 3
 3d6+2       5    20   5d4
 3d6+3       6    21   5d4+d2       22
 4d6-4       0    20   3đ8          21
 4d6-3       1    21   3đ8          0
 4d6-2       2    22   2d12         23, 24
 4d6-1       3    23   3d8          24
 4d6         4    24   2d8+2d4
 4d6+1       5    25   3d8+d2       26
 4d6+2       6    26   3d8+d2       5
 4d6+3       7    27   7d4          28
 5d6-5       0    25   2đ12+đ4
 5d6-4       1    26   2đ12+d4
 5d6-3       2    27   2d12+đ4
 5d6-2       3    28   2d12+d4
 5d6-1       4    29   3d10         3, 30
 5d6         5    30   2d8+d6+2d4
 5d6+1       6    31   2d8+4d4      32
 5d6+2       7    32   2d8+4d4      6
 5d6+3       8    33   2d8+4d4+d2   7, 34

Generally, to ensure minimum result, roll that many dice, and to ensure maximum, ensure the faces add up to it. At medium amounts of d6, the minimum starts getting too high for this approach.


HEROIC ROLLS (AltDice):

These keep mean while trying to minimize extending range, like in the original table. Replacement is by single type of dice, using multiple types is basically PivotDice, since you have to (re)distribute the maximum result plus range expansion between face counts of minimum result amount of dice minus range expansion, so that the face counts are present in your collection. Precise numerical meanings of results of such rolls are unlikely. Shift the corrective constant accordingly.

OrigExpr   From   To   AltDice   Expand
  d6-1       0     5   d4          -1
  d6+1       2     7   d8          +1
  d6+2       3     8   d10         +2
  d6+3       4     9   d12         +3
 2d6-2       0    10   2d4         -2
 2d6+2       4    14   2d8         +2
 2d6+3       5    15   4d4         +1
 3d6+1       4    19   2d10        +1
 3d6+3       6    21   3d8         +3
 4d6-3       1    21   2d10        -1
 4d6-1       3    23   2d12        +1
 4d6+4       8    28   4d8         +4
 5d6-1       4    29   3d10        +1
 5d6+2       7    37   3d12        +3
 6d6         6    36   2d20        +4
 6d6+1       7    37   4d10        +3
 7d6-2       5    40   5d8          0
 7d6+3      10    45   5d10        +5
 8d6-2       6    46   4d12        +2
 8d6-1       7    47   6d8         +1
 8d6+5      13    53   6d10        +7
 9d6         9    54   3d20        +6
 9d6+1      10    55   5d12        +5
10d6-2       8    58   6d10        +2
10d6+1      11    61   8d8         +3
10d6+4      14    64   6d12        +8
11d6        11    66   7d10        +4
11d6+2      13    68   9d8         +4
12d6        12    72   4d20        +6
12d6+3      15    75   10d8        +5
13d6        13    78   7d12        +6
14d6-4      10    80   10d8         0
14d6+4      14    84   8d12        +7
15d6-3      12    87   11d8        +1
15d6        15    90   5d20       +10
16d6-2      14    94   12d8        +2
16d6-1      15    95   10d10       +5
17d6-1      16   101   9d12        +7
17d6+1      18   103   11d10       +7
18d6-2      16   106   12d10       +4
18d6        18   108   6d20       +12
18d6+2      20   110   10d12      +10 
19d6+1      20   115   15d8        +4
20d6+2      22   122   16d8        +6
21d6-2      19   124   13d10       +7
21d6        21   126   7d20       +14
22d6+1      23   133   12d12      +11
23d6+2      25   140   15d10      +10
24d6        24   144   8d20       +16

At higher amounts of d6, too many polyhedral dice are rolled, albeit less, facing the same problem of counting taking too long, as well as the range being expanded too much. Only dice hoarders have 16 d8 or 12 d12, which only come once per D&D set unlike d10.


SUPERHEROIC ROLLS (LessDice):

Hero System and Shadowrun are notorious for using obscene amounts of d6, moreso than GURPS. They're hard to hold in hands, and the pips take ages to count. This is the time to finally resign at eliminating corrections. 4 or 5 dice (6 or 5 from 54d6, 6 or 7 dice from 63d6, 8 or 7 from 80d6) are enough to invoke Central Limit Theorem, allow the Bell curve to take shape, and provide enough wiggle room for mean coinage payment problem. These mostly Catalan dice aren't typically owned in large quantities of the same type, the most egregious ask is for 3d48 and 3d30. 3d120 enters only at 61d6 and 3d100 at 63d6, where the table used to end originally. Geodesic polyhedrons (d80,d180;d32,d42,d92,d162) would be useful here, since I'm already entertaining the zocchihedral d100.

Die           d2    d4    d6    d8   d10   d12   d20   d24   d30   d48   d60  d100  d120
      Mean   1.5   2.5   3.5   4.5   5.5   6.5  10.5  12.5  15.5  24.5  30.5  50.5  60.5
  d2   1.5   3     4     5     6     7     8    12    14    17    26    32    52    62
  d4   2.5   4     5     6     7     8     9    13    15    18    27    33    53    63
  d6   3.5   5     6     7     8     9    10    14    16    19    28    34    54    64
  d8   4.5   6     7     8     9    10    11    15    17    20    29    35    55    65
 d10   5.5   7     8     9    10    11    12    16    18    21    30    36    56    66
 d12   6.5   8     9    10    11    12    13    17    19    22    31    37    57    67
 d20  10.5  12    13    14    15    16    17    21    23    26    35    41    61    71
 d24  12.5  14    15    16    17    18    19    23    25    28    37    43    63    73
 d30  15.5  17    18    19    20    21    22    26    28    31    40    46    66    76
 d48  24.5  26    27    28    29    30    31    35    37    40    49    55    75    85
 d60  30.5  32    33    34    35    36    37    41    43    46    55    61    81    91
d100  50.5  52    53    54    55    56    57    61    63    66    75    81   101   111
d120  60.5  62    63    64    65    66    67    71    73    76    85    91   111   121

For visualization, there could be a coinage compositon graph, but more generically, mean of any dN is N/2+0.5. Therby each compactification of k dice of dN_i into a single dM is sum(i=1)(k)(N_i/2+1/2)=M/2+1/2, simplifying to sum(i=1)(k)(N_i)=M-k+1. This can only work for odd k, for even k there needs to be M_1+M_2-k+1 to add those lingering halves to make it whole.

OrigExpr   From   Mean   To   LessDice
 6d6         6    21     36   d12+d10+2d8
 7d6         7    25.5   42   d12+d10+3d8
 8d6         8    28     48   d24+2d10+d8
 9d6         9    32.5   54   d24+2d10+2d8
10d6        10    35     60   2d24+d10+d8
11d6        11    39.5   66   2d20+2d12+d10
12d6        12    42     72   2d24+d20+d12
13d6        13    45.5   78   d24+2d20+d12+d10
14d6        14    49     84   d30+d24+2d20
15d6        15    52.5   90   2d24+2d20+d12
16d6        16    56     96   2d30+2d24
17d6        17    59.5  102   3d30+2d12
18d6        18    63    108   d48+d30+d24+d20
19d6        19    66.5  114   2d30+2d24+d20
20d6        20    70    120   2d48+2d20
21d6        21    73.5  126   d48+d30+d24+2d20
22d6        22    77    132   2d48+d30+d24
23d6        23    80.5  138   d48+2d30+2d24
24d6        24    84    144   3d48+d20
25d6        25    87.5  150   2d48+d30+d24+d20
26d6        26    91    156   d60+2d48+d24
27d6        27    94.5  162   3d48+2d20
28d6        28    98    168   2d60+d48+d24
29d6        29   101.5  174   3d48+d30+d24
30d6        30   105    180   d120+d48+d30+d8
31d6        31   108.5  186   d100+d48+d30+d24+d10
32d6        32   112    192   d100+2d48+d24
33d6        33   115.5  198   d100+d48+d30+2d24
34d6        34   119    204   d120+d60+d48+d6
35d6        35   122.5  210   d100+d60+d48+d20+d12
36d6        36   126    216   d120+d60+d48+d20
37d6        37   129.5  222   2d100+d30+2d12
38d6        38   133    228   d120+d100+d30+d12
39d6        39   136.5  234   2d100+2d24+d20
40d6        40   140    240   2d120+d24+d12
41d6        41   143.5  246   d120+d60+d48+d30+d24
42d6        42   147    252   2d120+d30+d20
43d6        43   150.5  258   d120+d60+2d48+d20
44d6        44   154    264   d120+d100+d60+d24
45d6        45   157.5  270   2d100+d60+d30+d20
46d6        46   161    276   2d120+d48+d30
47d6        47   164.5  282   d120+3d48+d60
48d6        48   168    288   d120+2d100+d12
49d6        49   171.5  294   2d100+d60+d48+d30
50d6        50   175    300   2d120+d100+d6
51d6        51   178.5  306   d120+d100+d60+d48+d24
52d6        52   182    312   2d120+d100+d20
53d6        53   185.5  318   d120+2d100+d30+d24
54d6        54   189    324   d120+d60+3d48
55d6        55   192.5  330   2d120+d100+d30+d10
56d6        56   196    336   2d120+d100+d30+2d8
57d6        57   199.5  342   2d120+d100+d30+d24
58d6        58   203    348   2d120+d100+d30+d20+d10
59d6        59   206.5  354   2d120+d100+d48+d20
60d6        60   210    360   2d120+d100+d30+d24+d20
61d6        61   213.5  366   3d120+d60+d2
62d6        62   217    372   2d120+d100+d48+2d20
63d6        63   220.5  378   3d100+d60+d30+d24+d20
64d6        64   224    384   2d120+d100+d48+d30+d24
65d6        65   227.5  390   d120+2d100+d60+2d24+d20
66d6        66   231    396   2d120+d100+d60+d48+d8
67d6        67   234.5  402   d120+2d100+2d60+d12+d10
68d6        68   238    408   2d120+d100+2d60+d10
69d6        69   241.5  414   d120+2d100+2d60+d24+d12
70d6        70   245    420   2d120+d100+2d60+d24
71d6        71   248.5  426   d120+2d100+2d60+d30+d20
72d6        72   252    432   d120+3d100+d48+d30
73d6        73   255.5  438   d120+2d100+2d60+d24+d20
74d6        74   259    442   2d120+2d100+d48+d24
75d6        75   262.5  448   2d120+2d100+d48+d20+d10
76d6        76   266    454   3d120+d100+d60+d6
77d6        77   269.5  460   3d120+d100+d48+2d12
78d6        78   273    466   3d120+d100+d60+d20
79d6        79   276.5  472   3d120+d100+d60+d20+d6
80d6        80   280    480   3d120+d100+3d24+d20

Eventually, the amounts of Catalan dice needed start rising as well, and the variance becomes enormeous, so a different approach is needed. Consider splitting digits, like rolling 6d6*10+4d6 instead of 64d6. Substitute d6 accordingly. Don't roll 1d6 or 2d6 for most significant digit, Bell curve starts only taking shape at 3d6. Numerical inflation makes a TTRPGs feel like Yu-Gi-Oh!, where players become accountants with 8000 LP, instead of more pedestrian 20 Life of MTG.


DEMIGOD ROLLS (NormalDice):

At higher amounts of d6, the Bell curve gets so narrow it's almost better to roll a bunch of dF and modify the mean, so for example 100d6 goes from 100 to 600 with mean 350, but instead of d120+5d100+d48+d24 (8 large dice) or 10d6*10 (digit split loses precission with round numbers, maybe try different radices), roll 350+10dF*10, which gives flatter range from 200 to 500. Generate the least significant digit with d10 if you need precission. This keeps the variance increase in check. There could be a NormalDice table that specifies the exact amount of Fudge dice to replicate the distribution, but just note this:

Nd6: Mean 7N/2 = 3.5N, Variance 35N/12 = 2.9167N, StdDev 1.7078*N^(1/2)

KdF: Mean 0, Variance 2K/3 = 0.6667K, StdDev 0.8165*K^(1/2)

LdF*10: Mean 0, Variance 200L/3 = 66.6667L, StdDev 8.165*L^(1/2)

Therefore, K = 35N/8 = 4.375N, or N = 8K/35 = 0.22857K, and L = 7N/160 = 0.04375N, or N = 160L/7 = 22.85714L

Using dF*10 instead of dF reduces the amount to be rolled to approximate normal distribution to 4 from 438 at 100d6. To reach the range of 100 to 600, there needs to be 25 decadic dF rolled, i.e. N/4. Mean is fixed in all modes, it's just a question of whether to match the variance or the range, and if you don't know, arithmetic mean is 4+25/2=14.5, which rounds to 15, geometric mean is (4*25)^(1/2)=10, and harmonic mean is 2/(1/4 + 1/25)=6.89655, which rounds to 7. Multiply accordingly for 1000d6 or other crazy rolls.

This means the amount of dice rolled is reduced by a factor of 25 when matching variance (realistic), 4 when matching range (cinematic). I propose to balance with a factor of 10, the geometric mean of 4 and 25, for being simpler to conceptualize for decimal beings who create market for artrocities like d100, but post-graduate GMs for whom Master's wasn't enough may have their own opinions.


No comments:

Post a Comment

Barely anyone comments, so I don't moderate. Free advertising, I guess.