What Is TableMaster?

(I just moved this over from the post it was originally; I’ll edit a bit later)

I’ve lived so close to it for so long that it’s easy for me to forget that not everyone actually knows what I’m going on about. The way I usually explain it: any random generation table in a game is actually a program meant to execute on a system of humans and dice; TableMaster makes it possible to set it up to run on a computer instead. And moreover, you can go far beyond anything that a game would provide, because the computer can do in seconds what it would take you an hour of dice-rolling and note-taking to produce.

I think the best way to explain it is with an example. Let’s say you have a table like this:

Gem table, roll 1d6
1-3 emerald
4-5 sapphire
6 diamond

Converted to TBL, that would come out like this:

.table Gems
.roll <1d6>
1-3 emerald
4-5 sapphire
6 diamond

Still very similar, and very human-readable, but now you can use it to roll up a dozen, or a hundred, gems for your hypothetical treasure.

While being able to turn out a few gems in a hurry might not be much of a big deal, you can get as elaborate as you want to. One of TableMaster’s distant ancestors was a program I wrote that rolled up random subsectors for my Traveller game, way back in the day. TableMaster could do that without blinking, and while you’re at it, you could have it turn out the descriptions and buildings of the major spaceports on all those planets, or stats for the more important species of animals on them.

Here’s a real table, one of the ones that comes with TableMaster. This is one of the simpler tables, at least of those that are not merely (or mostly) bad puns. For a quick note, .indent, .outdent, and .hang are formatting commands, and anything with a backslash capitalizes or pluralizes a word; you can guess pretty much which does what. [square brackets] are inline subtable calls — when TableMaster encounters that, it rolls on the designated subtable and inserts the result (capitalized if preceded by a \C, of course) in the output line. The rest should be fairly intuitive.

: Wilderness encounter table
.table Wilderness_Encounter
.hang 4
.roll <1d10>
1-4  Encounter: \C[Normal_Animal].
5-7  Encounter: \C[People].
8-9  Encounter: \C[Monster].
10   Event: \C[Special_Event].
.table Normal_Animal
.roll <1d20>
1-4   <1d6> deer
5-6   a black bear
.chanceof 20% + and <1d2> cub\s
7     a moose, male
8     a moose, female
.chanceof 40% +, with calf
9     a rattlesnake
10-11 a skunk
12-14 lots of noise, and two squirrels
15    <1d8> wol\f
16    a porcupine
17-18 a fox
19    a weasel
20    a wolverine
.table People
.roll <1d20>
1-5   an adventuring party of [Adventurers] [Advent_Goal]
6-15  .rollon Orcs
16-19 .rollon Locals
20    .rollon Special_People
.table Adventurers
.roll <1d10>
1    a Master Wizard, [Their] <1d3> apprentice\s,
.chanceof 40% + <1d2> cleric\s,
.chanceof 50% + <1d3> scout\s,
.chanceof 50% + a local guide,
+ and <2d5> armsmen,
2-4  <2d4> warriors,
.chanceof 60% + <1d2> cleric\s,
.chanceof 80% + <1d3> scout\s,
+ and a local guide,
5-6  a Warrior-Priest, <1d6> acolyte\s,
.chanceof 30% + <1d2> scout\s,
.chanceof 75% + <1d2> local guide\s,
+ and <2d6> armsmen,
7-10 <1d2> thie\f,
.chanceof 50% + a moderately powerful wizard,
.chanceof 80% + <1d2> lesser wizard\s,
.chanceof 90% + <1d5> warrior\s,
.chanceof 70% + <1d2> cleric\s,
.chanceof 60% + <1d3> scout\s,
.table Advent_Goal
.roll <1d10>
1-2  following an old map
3-5  returning from an unsuccessful quest
6-7  returning from a successful quest
8    returning from a very successful quest
9-10 recovering after a fight with a monster
.table Orcs
.roll <1d8>
1-3  an orc hunting party, <2d5> orcs
4-5  an orc raiding party, <3d6> orcs
6-7  an orc warband, <3d10> orcs and a shaman
8    an orc camp, <10d8> orcs
.table Locals
.roll <1d6>
1-2  a ranger, scouting
3    a ranger, tracking orc raiding party
4-5  a trapper, checking [Their] trapline
6    a bandit camp, <2d10> bandits
.table Special_People
.roll <1d7>
1    a group of famous adventurers: [Adventurers] [Advent_Goal]
2    an elf warband, <2d8> elves and <1d6> elven mage\s, tracking orc raiders
3    a squad of Royal Griffon Riders, on a scouting mission
4    a werewolf, posing as a lost hunter
5    a solitary druid and <1d3> animal companion\s
6    a group of <2d6> monster hunters from the Royal Zoo
7    a nomadic band of <2d6> centaurs
.table Monster
.roll <1d20>
1    a fire-drake
2    a wyvern
3    a cold-drake
4    a nest of giant centipedes
5    a wendigo
6    a giant weasel
7    a giant wolverine
8    <1d3> griffon\s
9    <1d8> dire wol\f
10   <1d3> werewol\f with a pack of <2d6> normal wolves
11   a giant beetle
12   <1d3> ogre\s
13   <1d3> troll\s
14   a giant
15   <1d3+1> young giants
16   a pair of griffons with <1d4> young
17   a will'o'wisp
18   a bog man
19   <1d6> giant frog\s
20   a windwalker
.table Special_Event
.roll <1d10>
1-3  there is a sudden, violent storm, as appropriate for the season
4    there is a sudden storm, unseasonal (i.e., blizzard in spring)
5    the party's horses are spooked by something nobody can detect
6    the party finds the remains of a small camp, burned and looted
7    the party comes across [Orcs], recently killed, +
.chanceof 10% with no apparent cause of death
.otherwise amid signs of a major fight
8    the party encounters a\n [Feature] not shown on map, <1d3> days to avoid
9    biting insects attack all exposed flesh, burrow into clothes
10   the party comes across an orc boundary-marker
.table Feature
.roll <1d4>
1    river
2-3  swamp
4    blowdown
.table Their
.roll <1d2>
1    her
2    his

So that’s a quick introduction to what TableMaster does.

You can take it to a game on a laptop, or you can just print out a few pages of what you need, put them in your GM notebook, and check off entries as you use them; that’s what I used to do with NPC names, because I’m terrible at coming up with names. That’s why TableMaster exists, actually: because I got frustrated trying to think of names. And if it sells really, really well (when I’ve got something to sell!) a mobile app isn’t out of the question, either.

And of course, you can use it with any genre of game you want. You could write a table to generate entire clans of vampires, or starships and their crews, or the residents of wasteland outposts in a post-apocalyptic world. People wrote tables for all sorts of things, or bought the ones I’d written and modified them to fit what they needed.

So that’s TableMaster in a nutshell. When I get some time I’ll put a more complete description on the Wintertree Redux website. Sadly, I can’t just give out copies of the old one to try because it won’t run on anything newer than Win98.