Friday, December 29, 2017

Maximally Separated Points on a Sphere

One of the designs for a seven-sided die is a sphere truncated at 7 points as far apart from each other as possible. The die doesn't have opposite and parallel sides so there isn't a face for writing the result on. Still the technique is general and could be used to create dice with anywhere between 5 and 100 sides.

How do we find points as far apart as possible from each other? For most values of n the problem is hard. One approach is to sum the pairwise distances of the points and use gradient ascent to find a maximum. The objective function is not convex and has local maxima, but if you think a local maximum is better than nothing, here is code find one. The code uses Euclidean distance, though I wonder if using the angle between two points would work better.  The partial derivatives are with respect to the θ and φ of spherical coordinates since we are constrained to the surface of the sphere.

Running the code:

  $ ./maximally_separated_points_on_sphere.py -n 7
  (0.139, -0.576, -0.805)
  (-0.191, 0.963, 0.191)
  (-0.608, 0.338, -0.718)
  (0.173, 0.142, 0.975)
  (0.884, 0.38, -0.273)
  (-0.855, -0.418, 0.308)
  (0.458, -0.828, 0.322)
  31.530926 

The output contains the coordinates of the 7 points found and the value of the objective function at those points.  A convex polytope can be defined in polymake using a set of points—in which case it finds the convex hull—or a set of half spaces—in which case it finds the intersection. Polymake requires homogeneous coordinates.

  $ polymake
  polytope > $p = new Polytope(POINTS => 
    [[1, 0.139, -0.576, -0.805],
     [1, -0.191, 0.963, 0.191],
     [1, -0.608, 0.338, -0.718],
     [1, 0.173, 0.142, 0.975],
     [1, 0.884, 0.38, -0.273],
     [1, -0.855, -0.418, 0.308],
     [1, 0.458, -0.828, 0.322]]);

  polytope > print $p->VERTICES_IN_FACETS;
  {1 2 5}
  {0 2 5}
  {0 2 4}
  {1 3 5}
  {1 3 4}
  {1 2 4}
  {3 4 6}
  {3 5 6}
  {0 5 6}
  {0 4 6}

Polymake tells us the polyhedron has ten faces. This website says there are 5 topologically different polyhedra with 7 vertices and 10 faces. Since polymake tells us which vertices belong to which faces, we can use Blender to visualize the polyhedron.



Following the instructions above yields this picture:
Our polyhedron is topologically equivalent to a pentagonal bipyramid. The figure is the dual of the 7-sided polyhedron we would like to make a die out of. The dual can be found in polymake using polarize:

  polytope > $dual = polarize($p);

  polytope > print convert_to<Float>(
    dehomogenize($dual->VERTICES));
  1.455537382 -0.7147719412 -0.1762669144
  1.083809015 0.804520317 0.8537214292
  -0.4415750134 -0.506366941 1.52830861
  1.059871785 -0.6049596605 -1.125593382
  -0.8893855532 -1.073711966 -0.7114555899
  -0.2646212759 -1.291044842 1.009076016
  -1.423698754 0.1131924589 -0.7895112253
  0.2939932965 0.9002156047 -1.208914314
  0.4841557507 1.557693116 0.211262627
  -1.274046573 0.7045065006 0.518151282

  polytope > print $dual->VERTICES_IN_FACETS;
  {1 2 8 9}
  {0 3 4 5}
  {0 1 2 5}
  {3 4 6 7}
  {2 4 5 6 9}
  {0 1 3 7 8}
  {6 7 8 9}

Polymake lists the vertices in a face in ascending order. Blender requires that we list the vertices in the order they occur as we travel around the polygon—otherwise the wireframe will have extra edges in the faces. Trial and error was used to find the correct order:
The polyhedron is topologically equivalent to a pentagonal prism.

Tuesday, December 26, 2017

Polyhedral Duality

Blender is 3D modeling software. It has an operation called bevel which can be used to convert a cube into an octahedron. When you are in Edit Mode, type w to bring up the Specials menu.


The operation converts each face of the cube into a vertex and each vertex of the cube into a face. Edges become edges, although the orientation of each edge rotates by 90º.

The f-vector of a polyhedron is a triple containing the number of vertices, edges, and faces. The f-vector of the cube is (8, 12, 6) and the f-vector of the octahedron is (6, 12, 8). If a polyhedron can be converted to another polyhedron by the bevel operation, the f-vector of the first must be the same as the f-vector of the second reversed.

An icosahedron has f-vector (12, 30, 20) . The bevel operation converts it to a dodecahedron with f-vector (20, 30, 12).


The face lattice of a polyhedron shows which edges belong to which faces, and which vertices belong to which edges. Since the cube and the octahedrons are dual polyhedra, the face lattice of an octahedron
is an upside down version of the face lattice of a cube.
For the labels to agree we must map the faces, edges, and vertices of the first lattice to the vertices, edges, and faces second respectively.  The mapping should match the way the bevel operation maps them.

The bevel operation converts a tetrahedron into tetrahedron. The f-vector of the tetrahedron is a palindrome: (4, 6, 4). The tetrahedron is said to be self-dual.

One last note about duality. Dual polyhedra have isomorphic symmetry groups and isomorphic alternating groups.

Sunday, December 10, 2017

How to Draw Platonic Solids

I've been held back from posting more about polyhedra by my inability to create the necessary graphics. A picture is worth a thousand words, and if it's a picture of a polyhedron use 3D modeling software to create it. I used Blender to create the above image. I made a screencast of how I did it:


Sunday, November 26, 2017

Thursday, November 23, 2017

Difficult Rolls

Here are the dice I keep behind the screen:

Making Do With a d20 and a d6

In a pinch I could get by with the two d20s and three d6s with pips. The d20s can be used for a percentile roll with the convention that pink is tens and white is ones.

The d20 can simulate a d4 by taking the result modulo 4, treating 0 as 4.

The d20 can simulate a d8 or a d12 with the help of a d6. Take the result of the d20 modulo 4, treating 0 as 4. Roll a d6 and add 4 if the result is 4, 5, or 6. Or add 4 if the result is 3, 4 and add 8 if the result is 5, 6.

This DM is a minimalist and only uses a single d6 and a d20 when running a game. Perhaps he uses the techniques above. Maybe he runs an old version of the game where everyone has d6 hit dice and does d6 damage. The DM could ask a player to make a roll.

Discrete Uniform Distributions

How many discrete uniform distribution are needed?

If we are using the above dice, it is sensible to stick to dice rolls in the ranges 1–4, 1–6, 1–8, 1–10, 1–12, 1–20, and 1–100. But if we could generate an integer randomly from any range, then any list could be used as a random generation table.

The Holmes rulebook lists 14 1st level magic-user spells, 18 2nd level magic-user spells, and 18 3rd level magic-user spells. What if we need to determine a spell randomly, say because a scroll is found or an NPC spell caster is encountered? Small wonder the spell lists were truncated to 12 per level in the Moldvay rulebook.

Integer Division and Round Up or Modular Arithmetic

Two techniques for getting a smaller roll from a larger roll

To get a d2 or a d3 we can use the d6 and apply integer division and rounding up. When rolling a d6 with pips I like to use ⌈d6/3⌉ or ⌈d6/2⌉.

For a d5, I use d20 % 5, replacing 0 with 5.

As discussed previously one could use modular arithmetic to get the d2 and d3 rolls. Why the inconsistency? I prefer modular arithmetic nowadays, but the group has a tradition going back to childhood for how a d2 or d3 is rolled.

d6 Helper

Getting a larger roll from two smaller rolls

Back when icosahedral dice were numbered 0 to 9 twice, grognards would roll them with a helper d6 to determine whether the result was in the range 1–10 or 11–20. Specifically the formula d10 × (d2 – 1) × 10 was used. The technique generalizes:

    d15: d5 + (d3 – 1) × 5
    d16: d8 + (d2 – 1) × 8
    d18: d6 × (d3 – 1) × 6
    d24: d12 × (d2 – 1) × 12
    d30: d10 × (d3 – 1) × 10
    d36: d12 × (d3 – 1) × 12
    d40: d20 × (d2 – 1) × 20
    d60: d20 × (d3 – 1) × 20

I use a d6 with pips as the helper. When rolling a d18 I combine it with the d6 with digits.

If High Then Low

Interpolating a roll in between a smaller and a larger roll

A truly uniform result for most of the other ranges is not possible, at least not with a single roll. We use the "if high, then low" technique to get a near uniform approximation. To get a d7, one rolls a d8 and a d6. If the d8 is too high the result on the d6 is used. In general we find the next higher and next lower ranges that we can roll exactly and use those.

To get a d17 a d16 and a d20 are rolled. I don't use a d16 and a d18 because both need a helper d6; there would be ambiguity if the dice are rolled at the same time.

Falling Distributions

Motiving the falling distribution

Gaming has gotten by with uniform (e.g. d20) and normal (e.g. 3d6) distributions. Both of these are symmetric distributions with expected values at the center of the distribution.

When world-building, an asymmetric distribution in which small values are more likely than large values is desirable. We should use a distribution whose probabilities fall in this way to determine the level of an NPC if we want low-level characters to be common and high-level characters to be rare. It could also be used to determine the number of humans in a settlement or the number of orcs in a war party, since populations tend to follow a Pareto distribution.

I know about exploding rolls and penetrating rolls,  but they are close to uniform in practice.

One gets a geometric distribution by rolling repeatedly until a certain value is obtained and counting the number of rolls that is needed. Although strictly decreasing, it is a slow method which requires a lot of re-rolling.

Update: I've found a better way.

Absolute Value of the Difference of Two Rolls

A linear falling distribution with a single roll of two dice—almost

This interview mentions a promising technique, which is to roll the same dice twice and apply the absolute value function to the difference:
Because of the zero value, this isn't a perfect falling distribution, but if one is willing to re-roll until the result is not zero a falling distribution is achieved.

Tables

Falling distributions and in general any distribution using percentiles

Here is code for generating a d100 table which approximates an arbitrary distribution. It was used to make this table:

d100      level
01-331
34-552
56-703
71-804
81-865
87-916
92-947
95-968
97
9
98
10
99
11
00
12

An exponential distribution was used with the parameter chosen so 12 is the highest possible value. The distribution looks like this:

Sunday, November 12, 2017

Giant Hit Points

To get the hit points of a monster with a lot of hit dice, you have to roll the d8—or d6 if playing the old way—repeatedly and add them up.

This is similar to rolling fireball damage. An earlier post shows how to approximate the results of fireball damage using just two d6 rolls. The goal in the earlier post was to reduce the amount of calculation while preserving the original distribution.

The same could be done for hit dice. But do we want to preserve the original distribution? As noted in the previous post the result will usually be within 5 hit points of the mean. If a more uniform distribution is desired, we could replace an nd8 roll with an (n-1)×d8 + d8 roll.

Here are the distributions for a hill giant using 8d8 and 7×d8+d8:

A few values: 15, 22, 29, 36, 43, 50, and 57, are twice as likely as the others. If we were using 8×d8+d8 to roll hit points for a stone giant the distribution would be perfectly uniform.

When n is greater than 9, some values have a probability of zero. We could use an (n–2)×d8+2d8 roll so that all values are still possible, at least as long as n isn't greater than 17. Here is a comparison of using 15d8 and 13×d8+2d8 for storm giant hit points:
You might ask how hit points are distributed in the old modules. Let's take a look at the adult male hill giants in the steading:

Also see an earlier post for the distribution of goblin hit points in Little Keep on the Borderlands.

Wednesday, November 8, 2017

Polyhedra

We make use of in-game puzzles. To prosper in the Athenopolis campaign, familiarity with a fair amount of polyhedra lore is necessary.

Platonic Solids


Polyhedral dice come in the shapes of the five Platonic solids:
  • tetrahedron or triangular pyramid
  • hexahedron or cube
  • octahedron
  • dodecahedron
  • icosahedron
In the original edition of the game the colors of the dice were yellow, orange, green, blue, and white respectively.

How many vertices does an icosahedron have? You can pull out a die and try to count them, but it is better to observe that there 20 faces, and each has 3 vertices, for a total of 60 (vertex, face) pairs. However, each vertex is shared by 5 faces, so the number of vertices is 60 / 5 = 12.

A similar line of reasoning can be used to show the number of edges is 30.

In the Timaeus (c. 360 BCE), Plato associates the tetrahedron, octahedron, icosahedron, and cube with classical elements fire, air, water, and earth respectively. The dodecahedron is said to be the shape of the universe. Aristotle later associates the dodecahedron with the element aether.

The Platonic solids are the only five convex regular polyhedra. Euclid seems to argue something to this effect in Book XIII, Proposition 18 of The Elements (c. 300 BCE).  One translation of his claim is:
No other figures, besides the five said figures, can be constructed which is contained by equilateral and equiangular figures equal to one another.

Face, Edge, and Vertex Transitive

Imagine we had a case for the model of a polyhedron that fit it snugly. The polyhedron is face-transitive if we can place any face of the polyhedron to any face of the case and it still fits. A consequence of being face transitive is that every face is the same shape and size.

The polyhedron is edge-transitive if we can place any edge of the polyhedron to any inside angle of the case and it still fits. A consequence of being edge transitive is that every edge is the same length.

The polyhedron is vertex-transitive if we can place any vertex of the polyhedron to any corner of the case and it still fits. A consequence of being vertex transitive is that every vertex touches the same number of faces and edges.

Alternative names for face-transitive, edge-transitive, and vertex-transitive are isohedral, isotoxsal, and isogonal, respectively.

A polyhedron which is face, edge, and vertex-transitive is called a regular polyhedron.

Alternating Groups and Symmetry Groups

Let's reserve the letters V, E, and F  for the number of vertices, edges, and faces of a polyhedron, respectively. The vector (V, E, F) is called the face counting vector or f-vector of a polyhedron. For example the f-vector of the cube is (8, 12, 6).

Returning to the model of a polyhedron and its case, each way we can put the polyhedron in its case represents an element of the alternating group of the polyhedron.

Since Platonic solids are vertex transitive there is at least one group element for each of the V vertices. Each vertex is connected to 2 × E / V edges, and if we assign one of the model edges to a case edge the positions of the rest of the vertices and edges is determined. Thus the size of the alternating group is V × (2 × E / V) = E × 2.

The symmetric group allows for reflections as well as rotations. If the mirror image of a polyhedron also fits in its case, its symmetric group is twice the size of its alternating group.

VEF|A||S|
tetrahedron4641224
cube81262448
octohedron61282448
dodecahedron20301260120
icosahedron12302060120

The symmetry groups of the cube and octohedron are the same size. They are in fact isomorphic. The same is true of the dodecahedron and the icosahedron.

Other Polyhedra

Let's show that the tetrahedron with an f-vector of (4, 6, 4) has the smallest possible number of vertices, edges, and faces for a polyhedron.

A polyhedron must have at least 4 vertices since any 3 points are contained in a plane.

We can rule out a polyhedron with 3 faces by noting that an edge must have exactly two faces. For the polyhedron to have a vertex on the edge, the third face must intersect the vertex but not the rest of the edge. It follows  the polyhedron doesn't have any additional vertices, but this contradicts the fact that a polyhedron must have at least 4 vertices.

Each edge belongs to exactly two faces, but each face has three or more edges. The constraint 2E ≥ 3F  follows, and because a polyhedron must have at least 4 faces it must also have at least 6 edges.

For every value of F ≥ 4 we can construct a polyhedron called a pyramid with F faces by starting with a (F – 1)-polygon and connecting each vertex with a point not in the plane of the polygon. The f-vector of the polyhedron is (F, 2F – 2, F). A tetrahedron is triangular pyramid and the Great Pyramid of Giza is a square pyramid. The formula for the f-vector shows that we have also constructed a polyhedron for every V ≥ 4.

A pyramid is right if the line connecting the center of the polygon to the off vertex is perpendicular to the plane of the polygon. Otherwise the pyramid is oblique.

Similarly a prism is a way of constructing a polyhedron for each F ≥ 5 with an f-vector of (2F – 4, 3F – 6, F). The cube is a square prism. Note that a decagon prism has an f-vector of (20, 30, 12) which is the same as the f-vector of a dodecahedron. The example shows that the f-vector of a polyhedron doesn't necessarily tell us the number of edges each face has.

A prism is right if the off-polygon faces are perpendicular to the polygon faces. Otherwise the prism is oblique.

Polyhedral Dice

If we want the die to be fair, then the die should be face transitive. The Platonic solids are face transitive, but pyramids and prisms in general are not. Recall that a triangular pyramid is a tetrahedron and a square prism can be a cube.

There is a type of polyhedron called a bipyramid which yields an infinite family of face transitive polyhedra. The vertices of a regular n-polygon is connected to two vertices off the plane of the polygon on opposite sides. For the polyhedron to be face transitive, the vertices must be equidistant from and perpendicular to the center of the n-polygon. The figure is (n + 2, 3n, 2n) for n ≥ 3. The octohedron is a bipyramid.

The pentagonal bipyramid gives us a way to construct a 10-sided die, but most 10-sided dice are a different polyhedron called the pentagonal trapezohedron. The faces are quadrilaterals and in particular kites. The f-vector is (2n + 2, 4n, 2n) for n ≥ 3. The triangular trapezohedron has a f-vector of (8, 12, 6) which is the same as the cube.

The trapezohedron shows that face transitive does not imply edge transitive or vertex transitive. Bipyramids other than the square bipyramid or octahedron also show this.

The tetrahedron notwithstanding, for a polyhedron to be useful as a die we want each face to be parallel to a face on the opposite side so that there is always a clear "up".  Insisting that a bipyramid or trapezohedron have parallel faces places a constraint on the distance of the off-polygon vertices from the polygon. Update: or so I thought, but in fact the trapezohedron or bipyramid can have parallel faces regardless of the ratio of off-polygon vertex distance to polygon side length. And it should be emphasized that for a bipyramid to have parallel faces the polygon must have an even number of sides. The trapezohedron does not have this limitation.

The Catalan solids are another set of 13 face transitive polyhedra. One of these, the rhombic triacontahedron is used for 30-sided dice.

Euler's Characteristic

For a convex polyhedron, the following formula for the number of vertices, edges, and faces holds:
V – E + F = 2

Polytope

A regular polygon is a two dimensional analog of a Platonic solid.

Polytopes generalize polygons (in two dimensions) and polyhedra (in three dimensions) to n-dimensions.

A 4-polytope has 0-dimensional vertices, 1-dimensional edges, 2-dimensional faces, and 3-dimensional cells. The number of each can be represented by a f-vector with four elements: (V, E, F, C).

An n-polytope has n – 1 dimensional facets, n – 2 dimensional ridges, n – 3 dimensional peaks.

Sub-polytopes of any dimension can be called faces. If necessary to indicate the dimension they are called j-faces.

The extended f-vector of a polytope includes extra values on either end. One value, for dimension –1, represents the empty set. The other value, for dimension n, represents the polytope itself. These values are always 1. The cube has extended f-vector (1, 8, 12, 6, 1).

The formula for Euler's characteristic extends to convex polytopes and motivates our use of extended f-vectors. If fi is the number of faces of dimension t, then

$$ \sum_{i=–1}^n (–1)^i f_i = 0$$

Lattices and Flags

When studying a polyhedron such as the cube above we can create a graph called the face lattice of the polyhedron which shows which edges belong to which faces and which vertices belong to which edges.


At the top of the graph we put the entire polyhedron and at the bottom we put the empty set. This makes the graph a mathematical lattice. Every two elements in the lattice have a unique least element which contains both of them and a unique greatest element contained by both of them. The extended f-vector is the number of elements in each row of the lattice from the bottom up.

Two polyhedra are combinatorially equivalent if their face lattices are isomorphic.  The cube and the triangular trapezohedron are examples of combinatorially equivalent polyhedra. The dodecagon prism and the dodecahedron are not combinatorially equivalent even though their f-vectors are the same.

A flag is a sequence of "faces" of an n-polytope of increasing dimension: F- 1, F0, F1, ..., Fn, where each face is contained in the face that follows it in the sequence. The F-1 face is the "empty face" and the Fn face is the entire n-polytype.

A regular polytope is one where the symmetry group of the polytope acts transitively on the flags. This implies that the polytope is face, edge, and vertex transitive.

Ways to Number a Platonic Solid

The number of ways we can put n different numbers on the n faces of a Platonic solid is n! divided by the size of the alternating group of the solid.

tetrahedron2
cube30
octohedron1680
dodecahedron7,983,360
icosahedron40,548,366,802,944,000

Six-sided dice are often numbered with the constraint that opposite sides must add to 7. With this constraint there are only two ways to number a six-sided die. If you hold a six-sided die so that the sides for 1, 2, and 3 are showing, if the numbers increase in a counter-clockwise direction the die is said to be right-handed, which is the way Western dice are numbered.

Net

A polyhedron net is a set of edge-connected polygons, which can be folded into a polyhedron. Polyhedra can be constructed by printing a net on paper, cutting it out, and then folding the edges to create the shape.

Assigned Reading

"Convex Polyhedra" by Alexandrov. The reader is allowed to consult an English translation.

Monday, October 30, 2017

Using Blogger

We might see posts from some of the other Bookhouse Boys eventually. To that end, here are few fine points on using Blogger.

CSS

To tweak the CSS, go to

Theme | Customize | Advanced | Add CSS

Whitespace

Avoid putting two spaces after a period. The Blogger line-breaking algorithm might put one of the spaces at the beginning of a line.

Fonts

The Compose editor is convenient for the most part, but don't use the font or the text size drop downs. They insert inline styles, making it impossible to control the look of the site with CSS.

Code

The Compose editor does not provide a way to insert a code block. You could set the font to Courier to get a monospace font, but this uses inline styles and Courier isn't the monospace font you want to use.

A better method is to insert the text in the Compose editor. Then switch to the HTML editor; surround inline code with <code>...</code> tags and blocks with <pre><code>...</code></pre> tags. Indent the code by adding two spaces to the front of each line.

LaTeX

To enable LaTeX, switch to the HTML editor and insert this snippet:

<script type="text/x-mathjax-config">MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], processEscapes: true}});</script>
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script>

Mark off math equations from the rest of the text with doubled dollar signs: $$.

For inline math, set the text off with single dollar signs: \$ \$. Use a backslash to escape two dollar signs in a line.

Links

When creating a link, check the "open this link in a new window" box.

Footnotes

Switch to the HTML editor. Put this after the text to be footnoted:

<a href="#1" name="top1"><sup>1</sup></a>

Put this at the bottom of the post:

<a name="1">1.</a> Gary Gygax, <i>Dungeon Masters Guide</i> (TSR Games: 1979), p. 10<a href="#top1"><sup>↩</sup></a>

Labels

Labels are used to categorize posts. Separate multiple labels with commas.

Stray Whitespace

When editing, be careful not to add extra blank lines to the end of the post. They will be rendered when the post goes live.

Saturday, October 21, 2017

Monday, October 16, 2017

The Lost Book of Holmes



A few years ago we ran a campaign with the Holmes rulebook. We customized the rules a bit. Our house rules have finally been written up as a PDF and are available for download. I'm calling them the Lost Book of Holmes.

We are biased because of when we started playing, but we like the Holmes rules. There isn't any bloat there.  While it's true characters are limited to 3rd level, most of the monsters are there, even if you can't hope to fight them.

The Holmes Companion fixes the level limitation. The author of the companion is minimalist and fits his additions into 4 pages. Like the Holmes rules themselves there isn't any bloat so we used them as a starting point for our house rules.

Our campaign was run with the Holmes rulebook, a printout of the Holmes Companion, and few pages of handwritten rules.

Our first rule addition was variable weapon damage. In Holmes every weapon does d6 of damage, which is simple and befits a beginning version of the game. However, we like variable weapon damage. It makes the players think about trade-offs such as do I use a shield or a two-handed weapon? Should I be a fighter who can use the best weapons, or should I be a cleric or magic-user?

Universal d6 damage is perhaps a throwback to a time when the polyhedral dice were hard to get, but the box set came with the dice as you will remember.

We also removed the rule in Holmes where daggers strike twice a round and two-handed weapons strike every other round.

Although we did not use it in our play, the Lost Book of Holmes includes a optional WEAPON ADJUSTED COMBAT section in which all hits do d6 and the attacks per round of daggers and two-handed weapons as in the original Holmes rulebook are used. To make this sensible a variety of "to hit" bonuses and penalties are introduced.

We used d6 dice for monsters. I'm not sure how I feel about that in general, but we played with a small party so it worked well in our campaign. Incidentally the manuscript Holmes submitted to TSR used d6 monsters. The d6 dice for monsters rule is removed from the Lost Book of Holmes, however, to be compatible with the Holmes rulebook that was published.

We added to the list of monsters. The Holmes rulebook doesn't have many monsters a party might encounter in the wilderness. The Holmes manuscript shows they were originally there, so we added them back. We also added elementals, efreet, and a few more dragons. Monster descriptions were taken from the Holmes manuscript, OD&D, or the 1977 monster manual.

So the players could go deeper, we expanded the WANDERING MONSTER TABLE from 3 to 6 levels.

We added rules for generating NPC characters. If you look at the description for Bandit,  you will see some short rules for generating high level NPCs. These rules call for a magic-user as high as 11th level! Anyway, generating NPCs quickly is something published versions of the game have never provided good rules for. The tables cover alignment, class, race, level, weapons, armor, equipment, magic items, and even names.

We added rules for brawling, capturing, mounted combat, and sea battles. Each of these was motivated by a specific encounter in the campaign.

That summarizes our house rules, but there are a few more extras in the Lost Book of Holmes:

  • WILDERNESS ENCOUNTERS
  • TOWN ENCOUNTERS
  • RANDOM DUNGEON GENERATION
  • SAMPLE WILDERNESS
  • SAMPLE TOWN

We had equivalent stuff for some of this in the setting I ran, but I wanted Lost Book of Holmes to be a bit more generic. The SAMPLE WILDERNESS and SAMPLE TOWN are supposed to fit with the Sample Dungeon from the Holmes rulebook.

Friday, September 29, 2017

Saturday, September 16, 2017

Rolling 1–3 with a d6

How would you generate a random number in the range 1–3 uniformly using a d6?

There are at least three ways which seem natural to me:

     d6   ⌈d6/2⌉   d6%3+1  d6%3 replace 0 w/ 3
    ----  ------  ------  -------------------
      1      1       2             1    
      2      1       3             2
      3      2       1             3
      4      2       2             1
      5      3       3             2
      6      3       1             3

Most people, I imagine, would divide by two and round up.

Rounding strikes me as a trait of a poorly designed game. I prefer to use modular arithmetic.

There is the problem that the modulus operator returns a number in the range 0–2, at least when we are computing a number modulo 3. We can add 1 to the result, but I prefer to use 3 in place of 0. After all 0 and 3 are the same modulo 3.

Friday, September 8, 2017

Sunday, August 27, 2017

Goblin Hit Dice

Do you recognize this stat block?

FREQUENCY: Uncommon
NO. APPEARING: 40–400
ARMOR CLASS: 6
MOVE: 6"
HIT DICE: 1–7 Hit points
% IN LAIR: 40%
TREASURE TYPE: Individuals K, Lair C
DAMAGE/ATTACK: 1–6 or by weapon
SPECIAL ATTACKS: Nil
SPECIAL DEFENSES: Nil
MAGIC RESISTANCE: Standard
INTELLIGENCE: Average (low)
ALIGNMENT: Lawful evil
SIZE: S (4' tall)

There isn't much remarkable here. The hit dice entry has excited commentary in our group, though. 1–7 hit points. How do you roll that?

In OD&D a goblin was 1 - 1 hit points (i.e. 1d6 - 1). This can result in zero hit points.

Maybe you roll d8 and re-roll on 8.  There is evidence that Gygax used similar methods. For example, he allowed player characters to re-roll if they got one hit point. See this post on Gary's House Rules.

Our house style is to resolve with single rolls. We don't role-play; we roll-play. Roll-players have enough dice and they design games correctly for the dice they have.

There are non-uniform approximations, such as to roll d8 and replace an 8 with a 7. Of course, you could also roll d8-1, and replace a 0 with 1. The fact that there at least two ways to do this seems unaesthetic.

To measure the quality of a non-uniform approximation, let's use the mean absolute deviation of the approximation from the uniform distribution. Lower numbers are better. For "roll d8 and replace 8 with 7", the MAD from uniform is:

$$ \frac{6 \cdot |\frac{1}{8} - \frac{1}{7}| + |\frac{1}{4} - \frac{1}{7}|}{7} \approx 0.031 $$
One could use 2d4-1 to generate a 1–7. The MAD from uniform is:

$$ \frac{2 \cdot |\frac{1}{16} - \frac{1}{7}| + 2 \cdot |\frac{2}{16} - \frac{1}{7}| + 2 \cdot |\frac{3}{16} - \frac{1}{7}| + |\frac{4}{16} - \frac{1}{7}|} {7} \approx 0.056$$
There is an idea I like which could be called "if high, then low". Roll a d8 and a d6 simultaneously. Use the d8 unless it rolls an 8, in which case use the d6.  The MAD from uniform is:

$$ \frac{6 \cdot |\frac{1}{8} + \frac{1}{8} \cdot \frac{1}{6} - \frac{1}{7}| + |\frac{1}{8} - \frac{1}{7} |}{7} \approx 0.005$$
Another proposal. An encounter says there are 12 goblins, but if any of them are determined to have zero hit points, rule that they are already dead!

I analyzed cave D of "The Keep on the Borderlands" to get a hint of how to generate goblin hit points. This module was written by Gygax himself. There are 28 goblins, not counting the chieftain, females, and young. Here is a distribution of their hit points.

I'm not sure how Gygax randomly generated numbers with this distribution. If you have any ideas, shoot me an email.

We like to stick to the standard six shapes for dice: d4, d6, d8, d10, d12, d20. The Platonic solids and the bastard interloper known to science as the pentagonal trapezohedron. Looking over these new dice shapes makes us guffaw and chortle and a few other synonyms. We see useless bits of dice bag clutter which deceive people into rolling them by mistake. But goblins have made us reconsider one shape. Or possibly two shapes.


The orange die is a truncated sphere. The manufacturer supposedly found 7 maximally separated points on a sphere and then truncated the sphere at those points.

The other two dice are pentagonal prisms. Did the manufacturer, Gamescience, take an empirical approach to choosing the height of the prism so that the die rolls fair?

The p-values are 0.38, 0.23, and 0.08, suggesting the dice are fair enough for casual play. The Gamescience dice put the 6 and the 7 on the pentagons. 6s and 7s look to be over-represented in my Gamescience rolls, even if we showed the effect is not statistically significant for this sample size. It might be the truncated sphere is the better choice.

Here are suggestions from Gamescience on how to use your new 7-sided die:

Saturday, August 26, 2017

One Page Dungeon

My first Photoshop dungeon.

A few months back I was practicing with Photoshop. Eventually I want to put some campaign materials online. I don't want to scan handwritten papers.

It seemed like every effect I wanted to achieve was a research project, so my first dungeon doesn't have many rooms:


By the way, putting room descriptions on the same page as the map is a great idea. I wish I could say it was my idea, but since I faintly remembered reading about it I knew it wasn't.

The internet remembers whose idea it was. On 21 December 2008, dwayanu posted the following comment on the odd74.proboards.com forum:
I'm trying out an approach of mapping by sectors of 30 x 30 squares. That leaves room on the same page for a succinct "key."
 By 31 December 2008 the phrase "one page dungeon" was in use. There is more history at the One Page Dungeon Contest website.

I used light blue because TSR used light blue ink for their earliest dungeons. TSR used light blue, I suppose, so the Dungeon Master could write notes on the map. TSR switched to maps with multiple colors in 1983. Update: Frank Mentzer claimed in a Dragonsfoot forum it was because the color photocopied poorly.

Sunday, January 8, 2017

Testing Dice for Fairness: Part II

The power of the fair die fair test.

Previously a method was outlined for testing a die for fairness.

The test calls for rolling the die a large number of times, computing a p-value, and classifying the die as unfair if the p-value is below a significance threshold.

The example uses 100 trials and a significance threshold of .05. It doesn't mention why these numbers are chosen.

The Two Types of Error

To intelligently choose the numbers, we have to consider two types of mistakes. We might reject a fair die, or we might accept an unfair die.

The chance of making the first error—rejecting a fair die—is our significance threshold. To reduce the chance of making the first error we make the significance threshold low. A threshold of .05 is a bit high; our test has a 1 in 20 chance of rejecting a fair die!

The Power of a Test

The power of a test is the chance of not making the second error.  That is, the power is the chance of rejecting an unfair die.

The power of a test usually depends on how unfair the die is. The more lopsided the chances, the easier it is to detect the unfairness.

An Approximation

Because of the dependence on the amount of unfairness, we can't represent the power as a single percentage. It is natural to characterize an unfair die as a categorical distribution with n - 1 free parameters where n is the number of faces. Even in the case of a d6 we can't plot the power as a function of the free parameters: there are too many.

For this reason let's only consider unfair dice characterized by a single parameter which is the probability of rolling the most likely face. All other faces are assumed to be equally likely.

The Power of the .05 Significance Test

Now we can plot the power of a test, given the probability of the mostly likely face.
If we increase the number of trials, the chance of detecting an unfair die goes up. Even if we only do 100 trials, the chance of detecting an unfair die where one of the faces is twice as likely as expected is about 90%.

I would like the percentage to be higher, but when I think the about the effort of making 200 trials instead, the percentage seems acceptable.

The code used for calculating the power of a test is online. It uses the Monte Carlo method as discussed previously. The number of Monte Carlo trials was 10,000 which gives a 95% confidence our estimate is within 1%.

The Power of the .01 Significance Test

What if we decide to use a .01 significance level instead?
The chart doesn't change much. The chance of detecting the die where one of the faces is twice as likely as expected is now 77%.

Sunday, January 1, 2017

When Did RPG Become Collectible

Three events point to 1991 as the year your RPG crap became collectible.

Yes, there were a few people collecting before 1991.  I don't mean players, of which there were millions. I mean people buying stuff when it was still in print and leaving it in the original shrink wrap. People who maybe had uncommon foresight. Or maybe a type of compulsive hoarding disorder.

Ignoring such people, 1991 was the year the collecting started. I couldn't say what it was about 1991, exactly. The Mentzer box sets, also known as the BECMI rules, went out of print.  Their passing made some people wistful. They introduced a lot of people to the game.

My argument that 1991 was the year the collecting started rests on three pieces of evidence.

Exhibit 1: Heroic Worlds

Lawrence Shick finished Heroic Worlds in 1991. It lists nearly every RPG item published before 1991! It presents over 3000 items organized by genre.

Heroic Worlds told collectors what was out there to be collected. Here is what it says about the original set:
230-010.1/900-74. Digest-sized, boxed: three digest-sized books ("Men & Magic," 36 pp.; "Monsters & Treasure," 40 pp.; "The Underworld & Wilderness Adventures," 36 pp.), six reference sheets of tables and charts. Tactical Studies Rules (TSR), 1974 (1st ed., brown wood-grain box, white sticker cover). 1st and 2nd pr. have drawing of mounted warrior on "Men & Magic" and box cover. 2nd pr. says so inside "Men and Magic."
230-010.2/900-76. As above, but all-white box. "Men and Magic" has fighter with sword on cover. Early printings refer to the J.R.R. Tolkien creatures "hobbits" and "ents"; after legal hassles, these were changed in later printings to "halflings" and "treants." Tactical Studies Rules (TSR), 1976.
The description identifies at least four printings of the original edition. Collectors care about printings.

Today we know there were in fact three printings of the wood-grain box and three printings of the white box.

The original set isn't the oldest item in Heroic Worlds. Here is the description for Chainmail:
Medieval miniatures rules. The 2nd and 3rd eds. contain the "Fantasy Supplement" section that directly contributed to the development of D&D. The supplement includes rules for individual wizard, hero, and super-hero characters, plus hobbits, dwarves, elves, goblins, orcs, trolls, dragons, elementals, balrogs, and ents. Wizards can throw fireballs, lightning bolts, and eight other types of spells; hero-types can use magic weapons.
230-005.1/379-71. Digest-sized, 36 pp. Guidon Games, 1971 (no Fantasy Supplement).
230-005.2/379-72. Digest-sized, 44 pp. Guidon Games, 1972 (2nd ed.).
230-005.3/900-75. Digest-sized, ring-bound, 44 pp. TSR, 1975 (3rd ed.).
The description makes a case for the historical importance of Chainmail. Collectors care about historical imporance.

Schick must not have had access to the 1st printing of Chainmail, since it does in fact contain the Fantasy Supplement!

Next let's look at the description of Deities & Demigods:
Supplement describing deities of 17 different mythoi, with rules on how to incorporate them into AD&D. Unfortunately, the book is usually used merely as a sort of Monster Manual that describes very high-powered monsters. This usage is encouraged by the book's format, which emphasizes the gods' physical abilities over their religious significance. A descendent of the Original D&D supplement Gods, Demigods, and Heroes, the book covers 12 pantheons of gods from myth and folklore (Egyptian, Norse, etc.), plus gods for various AD&D nonhumans, and four fictional groups: Arthurian heroes, Fritz Leiber's "Newhon Mthos," Michael Moorcock's "Melnibonéan Mythos," and H.P. Lovecraft's "Cthulhu Mythos," (The latter two mythoi were removed from the 2nd ed., thus giving the 1st ed. a high collector's value.) The 3rd ed. was repackaged and retitled Legends and Lore (see listing).
004-228.1/900-80. Hardcover, 144 pp. TSR, 1980.
004-228.2/900-81. Hardcover, 128 pp. TSR, 1981.
Ignore the part about gods having stats blocks. That's Schick telling you how to play the game. Focus on the comment about the 1st edition. That's Schick telling you what to collect.

Another cue for collectors is found in the description of B3: Palace of the Silver Princess, where Schick alerts us to the existence of the recalled edition:
Scenario for character levels 1–3 describing a ruined palace and the evil creatures that have taken it over. The 1st ed. is similar to B1 in that monster and treasure listings are left open for the GM to decide. The 1st ed. was released, then quickly recalled and destroyed due to several illustrations that were deemed to be in poor taste. (Look for the captured princess tied up with her own hair!) There may be fewer than 300 copies in existence; it is highly collectible. The 2nd ed. was entirely rewritten and largely reillustrated. It is a more standard dungeon, without fill-in encounters.
230-204.1/900-81. 32 pp., outer folder. TSR, 1981 (1st ed., tan border on cover).
230-204.2/900-81. 32 pp., outer folder. TSR, 1981 (2nd ed., dark green border on cover).

Exhibit 2: Gen Con Auctions

Consider this advertisement for Gen Con 91 from the June 1991 Dragon:


It mentions the opportunity to "bid on treasures in games and art auctions". In 1991 Gen Con started catering to collectors.

In truth, I'm not sure when auctions started at Gen Con. The ad from 1991 is the first mention I've found. There were auctions at Gen Con 92 as well; they became a regular feature.

Exhibit 3: Zocchi's TSR Collector Treasures Sale

The last exhibit contains the full page ads Lou Zocchi took out in the Dragon to sell used TSR products. Zocchi placed 10 of these ads between May 1991 and December 1996. Here is the ad from October 1991:

A PDF of all of the ads is available here.

Like the Gen Con auctions, the Zocchi ads cater to collectors. Collectors are mentioned explicitly in the title of most of the ads!

I take prices which are several times the original list price as evidence of collector interest. There are a few such prices in the original ad: the "Chainmail Rules" for \$30, a "Fine 1st Printing White Box D&D" for \$80, and "Deities/Demigods 1st Ed. damaged" for \$50.

If we compare ads we see items appreciate. In October 1993 the "D&D White Box Set" is \$110 and the "Deities & Demigods, 1st Ed." is \$130. The first issue of Dragon becomes available for a record price of \$230. That's \$384.16 in 2016 dollars!

The final ad in December 1996 has an even more expensive item: a "B3: Palace of Silver Princess (Brown cover ed.)" for \$250.

By the way, are Zocchi and Schick both color blind? The recalled edition of B3 had an orange cover.

Appendix A: The Dragon Shuts Down

After the December 1996 issue came out, the Dragon shut down. TSR had gone bankrupt. When the Dragon resumed in August 1997 it was owned by Wizards of the Coast.

Zocchi had been a monthly advertiser in the Dragon for years. The TSR collector treasures sale was just one of the angles he was working. Most months his ads were for Gamescience dice or Zocchi's own RPG products. He owned the rights to some Judges Guild titles and he sold a game designed by Jeff Dee called TWERPS.

For whatever reason, Zocchi didn't place any ads in the Dragon when it got back on its feet.

For collectors it was just as well. They were discovering AuctionWeb, which changed its name to eBay in September 1997.

Update

I've since found Gen Con advertisements in the Dragon mentioning auctions before 1991.