Saturday, March 17, 2018

Sunday, March 11, 2018

The Dimensions of a Ten-Sided Die

TSR introduced the ten-sided die to gamers in 1981 but the idea of using a pentagonal trapezohedron as a die was first patented in 1906.

The pentagonal trapezohedron is face-transitive and each face is parallel to a face on the opposite side. Is the pentagonal trapezohedron the only ten-sided polyhedron with these properties? The pentagonal bipyramid is face-transitive but lacks parallel, opposite sides. The right, regular-octagonal prism has parallel, opposite sides but isn't face-transitive.

The pentagonal trapezohedron isn't vertex-transitive. Two of the vertices, which we can think of as the poles, touch 5 faces each. The remaining 10 vertices are arranged in two parallel pentagons and touch 3 faces each.
In the diagrams above a few labels are provided as an aid to figuring out the dimensions of the pentagonal trapezohedron. In the first diagram the dimensions n and h are along the axis connecting the two poles of the pentagonal trapezohedron. The left diagonal is the central spine of one of the kite-shaped faces, labeled z in the bottom two diagrams. If we rotate the trapezohedron around the axis 36°, we can bring the central spine of an adjacent face into the position of the right diagonal.  The non-polar vertices are in the planes perpendicular to the axis indicated by k or m.

If we rotate the polyhedron so that the axis is perpendicular to the plane of the page, then the second diagram shows how the non-polar vertices are arranged.

By similar triangles in the first diagram this holds $$ \frac{k}{n} = \frac{m}{n+h}$$ From the second diagram and trigonometry $$ \frac{k}{m} = \cos{\frac{2 \pi}{10}}$$ The remaining equations in the Mathematica code that follows can be justified by similar triangles, trigonometry, or the Pythagorean theorem:

  Solve[{k/n == m/(n + h), k/m == Cos[2*Pi/10], w/z == h/(n + h),
    y/(2*m) == Sin[2*Pi/10], z == Sqrt[m^2 + (n + h)^2],
    f == Sqrt[(z - w)^2 + (y/2)^2], g == Sqrt[w^2 + (y/2)^2]},
    {k, h, w, z, y, f, g}]

$$ k = \frac{1 + \sqrt{5}}{4}m \\ h = (2 + \sqrt{5})n \\ w = \frac{3\sqrt{m^2 + (6-2\sqrt{5})n^2}}{4} \\ z = \sqrt{m^2 +(6 - 2\sqrt{5})n^2}  \\ y = \sqrt{\frac{1}{2} \left(5-\sqrt{5}\right)} m \\  f = \sqrt{m^2 + n^2} \\ g = \sqrt{\left(9-4 \sqrt{5}\right) n^2-\frac{1}{2} \left(\sqrt{5}-3\right) m^2} \\ \alpha = 2 \sin ^{-1}\left(\frac{\sqrt{\frac{1}{2} \left(5-\sqrt{5}\right)} m}{2
   \sqrt{m^2+n^2}}\right) \\ \gamma = 2 \cos ^{-1}\left(-\frac{\left(\sqrt{5}-3\right) \sqrt{m^2-2 \left(\sqrt{5}-3\right) n^2}}{2
   \sqrt{4 \left(9-4 \sqrt{5}\right) n^2-2 \left(\sqrt{5}-3\right) m^2}}\right) \\ \beta = \frac{2 \pi - \alpha - \gamma}{2}$$We are free to choose m and n to be any positive values.

Monday, February 19, 2018

TSR Dice: Mentzer Basic

TSR replaced the Moldvay edition of the basic set with the Mentzer edition in 1983. At perhaps the same time TSR started producing dice from new molds.
Like the Moldvay dice, the new dice came unpainted in a baggy with a crayon. They were also sold separately from the basic set in a blister pack.


Sunday, February 18, 2018

TSR Dice: Moldvay Basic

DiceCollector.com has diagrams for identifying dice manufacturers. The diagrams are partial dice nets—they show the digits on the faces adjacent to the face with the highest digit. The orientation of the digits on the faces is also significant. Even though the diagrams don't describe all the faces, they often narrow down the possibilities to a single manufacturer.

The problem with partial dice nets is they require having the die in hand. To make it easier to identify dice in photos, I thought it would be nice to make some complete dice nets available.


My first set of dice nets are for the dice which came with the Dungeons & Dragons Basic set edited by Tom Moldvay. The copyright on the rulebook is 1980, but the product wasn't announced in Dragon Magazine until August 1981. There were four identifiable printings of this box set. I have the 3rd and 4th printings. Both came with a set of the light blue dice pictured above. The dice came sealed in plastic with a white crayon.


My apologies there is no dice net for the d10.

Update: d10 dice net courtesy of Scott Sturm:

Saturday, February 17, 2018

Falling Distributions

In a previous post I suggested some ways to generate falling distributions with dice. I was looking for a technique where all numbers between 1 and n have nonzero probability and where the probability of k is greater than the probability of k + 1. The ideal solution in my mind would use a single cast of the dice and wouldn't require consulting a table.
Such a solution exists. It's so simple I'm sad I didn't see it right away. Just roll several dice and take the lowest.  As a bonus you can decrease the expected value by using more dice.

Sunday, January 28, 2018

Monday, January 22, 2018

The Holmes Edit History

The Lost Book of Holmes was written to be used with the 2nd and 3rd editions of the Holmes rulebook. Earlier editions have different monsters and wandering monster tables.

There are five versions of the Holmes rulebook.
  • 1st printing, 1977
  • 2nd printing, January 1978
  • 3rd printing, May 1978
  • 2nd edition, November 1978
  • 3rd edition, December 1979

Identifying the Versions

All of the versions, except for the 1st printing, identify themselves on the title page below the copyright notice. The 1st printing has no printing or edition information on the title page.

The 1st printing cover is the only one with a F116-R product code in the upper right.

Only the 1st and 2nd printing covers have a "*T.M. Reg. app. for" notice in the upper right.

The 1st, 2nd, and 3rd printing covers have the lizardman logo; the 2nd and 3rd edition covers have the wizard logo.

The 2nd and 3rd editions have identical front covers.

The 1st, 2nd, and 3rd printings have blank back covers. The 2nd and 3rd printings have TSR product lists. Only the 2nd edition back cover product list includes the AD&D manuals. Only the 3rd edition back cover product list includes B2: The Keep on the Borderlands.

Text and Art Changes

Preface (p. 2)

2nd edition: the page number is removed.

Table of Contents (p. 4)

2nd edition: the page number for the Languages is corrected from 8 to 9.

2nd edition: entry for Encumbrance is added.

2nd edition: the page numbers for all sections after Monsters are increased by 1.

Introduction (p. 5)

2nd printing: a reference to "hobbits" is replaced with "halflings". References to "hobbit" or "hobbits" are replaced in this manner by my count at 21 places in the book; subsequent places will not be noted.

See First Level Clerical Spells p. 17 for a reference to "hobbits" that is never replaced in any version.

3rd edition: the text "by rolling special polyhedral 20-sided dice" is emended to "by rolling special polyhedral dice".

Adjusting Ability Scores (p. 6)

2nd edition: this text about dwarves is deleted: "They are the only ones who can wield the +3 Magic War Hammer (described later)".

The +3 Magic War Hammer is not, in fact, described later in any version of the Holmes rulebook. It is described on p. 31 of OD&D Vol. 2 Monsters & Treasure.

Additional Character Classes (p. 7)

2nd printing: a reference to "hobbitish" is replaced with "halflingish".

Non-Player Characters (p. 8)

2nd edition: the text "Only the lowest level of character types can be hired" is emended to "Generally, only the lowest level of character types can be hired".

Character Alignment (p. 8)

2nd edition: the alignment chart is updated from the old chart on the left to the new chart on the right:
The old chart refers to apes, beholders, blue dragons, demons, and lammasus which are not described in any version of the Holmes rulebook.

Languages (p. 9)

2nd edition: this text is added: "Any languages should be selected before the character begins play".

Encumbrance (p. 9)

2nd edition: this item is removed from Malchor's list of equipment: "1 10' pole (right hand)".

Wandering Monster Table (p. 10)

The wandering monster table from the 1st printing contains monsters not described in the Monsters section:

These monsters were not described in this 1st printing: Giant Rats, Centipedes, Large Spiders, Gnolls, Giant Toads, Huge Spiders, Leprechauns, Troglodytes, Piercers, Shriekers, Giant Snakes, Giant Spiders, Giant Weasels, and Giant Lizards. 

The 2nd printing updates the wandering monster table. Monsters not described in the Monsters section are removed:

Experience Points for Monsters Overcome (p. 11)

2nd edition: the value and bonus for a 2 + 1 hit dice monster, previously blank, are added. They are 25 and 10 respectively.

2nd edition: the text "For example, if a third level fighting man killed the first level orc" is emended to "For example, if a third level fighting man killed a first level orc".

Fighting Men, Elves, Halflings and Dwarves (p. 11)

2nd edition: formerly, the "spells" column for cleric had the values "0", "1", and "2". These are emended to "0", "1 first level spell", and "2 first level spells".

Explanation of Thief's Abilities (p. 12)

2nd edition: adds a column for "climb sheer surfaces".

2nd edition: this text is added:  "(Note: When a thief of any level strikes a blow from behind, a bonus of +4 to hit is given, and double damage is done.)"

Clerical Abilities (p. 12)

2nd edition: the text "When a cleric of the first three levels confronts one or more of the undead, consult the table below" is emended to "When a cleric confronts one or more of the undead, consult the table below" .

Monster Saving Throws (p. 14)

2nd edition: this text is removed:  "(except zombies who are poisoned by salt)"

Magic User Spells (p. 14)

2nd edition: in the description for Enlargement, this text is added: "(example: a 6' man would become 9' tall)".

Magic User Spells (p. 16)

2nd edition: in the description for Levitate, the text "Range: 20 feet × level of spell caster in 10's of feet" is emended to "Range: 20 feet × level of spell caster".

Clerical Spells (p. 17)

2nd edition: this text is added: "Second level spells are not available to clerics of below fourth level, and are included for use with non-player characters and scrolls."

The spell Cure Light Wounds references "hobbits". This reference was not updated to "halflings" in the 2nd printing or any later version.

Combat Melee (p. 19)

3rd edition: this text is removed: "A 20-sided die must be marked or colored so that one set of sides 0-9 is different from the other set. Count 0 as a 10. The marked set is then read as if 10 had been added to the roll (11-20), treating 0 as 10 or 20. This die is used for all combat resolution."

The removed text was redundant; there is already a description of how to mark a 20-sided die on p. 14.

Monsters (p. 22)

The 2nd edition replaces this text:
If the monster's alignment is given here, then there follows a brief description which should include any special powers and attributes of the creatures.
with this text:
If the monster's alignment is not given, it may be assumed to be an unintelligent beast that will attack anyone who comes near. "Attacks" means the number of blows, bites, etc. the creature can deliver in a single melee round. "Damage" gives the effect of these attacks. Then there follows a brief description which includes any special powers and attributes of the creature.
The 2nd edition replaces this text:
A good guide to the amount of treasure any given monster should be guarding is given in the MONSTER & TREASURE ASSORTMENTS which are included in the game.
with this text:
A good guide to the amount of treasure any given monster should be guarding is given in the MONSTER & TREASURE ASSORTMENTS (available from TSR or your retailer).

Monster List (p. 22-33/34)

2nd edition: this text is added: "Monsters hit dice are 8-sided".

2nd edition: entries for these monsters are added: Giant Ant, Giant Centipede, Giant Rats, Gnoll, Shrieker, Spider, Troglodyte.

Although early versions do not have the Gnoll entry, they mention that a kobold chieftain fights like a gnoll.

2nd edition: this text is removed from the Giant entry:
Giants in castles usually have other monsters there—a hydra, wolves, bears or referee's choice. Giants encountered outside their lair carry 1000 to 6000 gold pieces as well as rocks for throwing in their capacious shoulder sack.
2nd edition: in the entry for Horse the lines "Attack: 2 hooves, 1 bite" and "Damage: 1–6/hoof, 1–4/bite" are inserted.

2nd edition: in the entry for Mummy the text "although it only does half-damage to them" is inserted in regards to damage from fire.

2nd edition: the entry for Nixie is removed.

2nd edition: this cross-reference is removed:  "Werewolf, etc.—see Lycanthrope".

2nd edition: adds art for Harpy, Hydra, Manticore, and Skeleton.

2nd edition: removes art for Gray Ooze and Purple Worm.

Base Treasure Values (p. 33/34)

2nd edition: this text is added: "50 CP = 10 SP = 2 EP = 1 GP = 1/5 PP".

2nd edition: this text is added: "All coins are roughly equal in size and weight, being approximately the circumference and thickness of a quarter and weighing about twice as much as a quarter."

A quarter weighs an eighth of an ounce, so the added text is inconsistent with the Encumbrance section on p. 9, where a gold piece weighs a tenth of a pound.

2nd edition: the list giving the value of each type of coin in gold pieces is removed.

2nd edition: treasure art is removed.

Potions (p. 35/36)

2nd edition: in the random magical item generation chart, the potion "Speed" is renamed "Haste" so that it now matches its name in the description on the following page.

Explanation of Magical Items (p. 37/38)

The 2nd edition changes the Ring of Protection +1 entry from:
serves as plate armor +1, and adds +1 to all saving throws.
to this:
adds +1 to armor class; i.e., a magic-user with no armor (armor class 9) would be treated as if he had armor class 8. Also, +1 is added to all saving throws."

Dungeon Mastering as a Fine Art (p. 38/39)

The 2nd edition replaces this text:
The geomorphic dungeon levels provided with this game
with this text:
The geomorphic dungeon levels (available from TSR or your retailer)
2nd edition: this text is added:
The Basic Set of DUNGEONS & DRAGONS includes the introductory module "In Search of the Unknown", which will be usable for initial adventuring as well as provide ideas for dungeon construction.

Illustration of Sample Floor Plan (p. 41/42)

The 2nd printing adds the text "START" under the stairs.

The 2nd edition adds add an arrow pointing north.

Sample Dungeon (p. 43/44)

The 2nd edition replaces the this text in room J:
An enormous spider lurks in the darkness of the roof, thirty-five feet above. He will drop on unwary adventurers. He is armor class 3 (plate mail), has 6 hit dice (31 hit points), and his bite causes 1-8 points of damage and is poisonous (-1 on saving throw dice because it is so strong).
to read as follows:
A giant spider lurks in the darkness of the roof, thirty-five feet above. He will drop on unwary adventurers. He is armor class 3 (plate mail), has 4 + 4 hit dice (21 hit points), and his bite causes 2-8 points of damage and is poisonous.
The 2nd edition replaces the this text in room L describing a giant crab:
It strikes with its giant claws one at a time as fast as a man.
to read as follows:
It strikes with its giant claws one at a time as fast as a man, doing 2-12 points of damage per hit.

Using the Dice (p. 45/46)

The 2nd edition adds this text:
In some places the reader will note an abbreviated notation for the type of die has been used. The first number is the number of dice used, the letter "d" appears, and the last number is the type dice used. Thus, "2d4" would mean that two 4-sided dice would be thrown (or one 4-sided dice would be thrown twice); "3d12" would indicate that three 12-sided dice are used, and so on.
The 3rd edition replaces the text "By using the assortment of 4-, 6-, 8-, 12-, and 20-sided dice" with "By using the assortment of 4-, 6-, 8-, 10-, 12-, and 20-sided dice".

The 3rd edition replaces this text:
For example: to generate 1-20, roll the 20-sided die and 6-sided die, and if the 6-sided die comes up 1-3, the number shown on the 20-sider is 1-10 (1-0), and if the 6-sider comes up 4-6, add 10 to the 20-sided die and its numbers become 11-20 (1-0). This application is used with the 12-sided die to get 1-24.
with this:
For example: to generate 1-24, roll the 12-sided die and 6-sided die, and if the 6-sided die comes up 1-3, the number shown on the 12-sider is 1-12, and if the 6-sider comes up 4-6, added 12 to the 12-sided die and its numbers become 13-24.

About the Editor (p. 45/46)

This section is added in the 3rd printing.

Other Swords & Sorcery, Fantasy, and Science Fiction Titles from TSR (p. 45–46)

The entire section, a product list, is replaced by a Gen Con advertisement in the 2nd edition. 

Sunday, January 14, 2018

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: