Domesday / Medieval Demographics for your Hex Map Descriptions

 ... or, how I became a mad scientist of spreadsheets and abulafia-style random generators!

I've mentioned elsewhere about my project to convert my old hex/encounter generation system (using a spreadsheet) over to a table-based random generator called "Hex-Describe" by Alex 'kensanata' Schroeder. (found at:

One such item that my tables will generate are settlements: towns, villages and hamlets. And what do PCs want from towns, villages and hamlets?

  1. A place to sell their crap to get coin.
  2. A place to spend their coin to buy crap to help them get crap to get coin.
  3. A place to find information on where to get more coins or crap to sell for coin. 

To find out the likelihood if those businesses that buy/sell items or provide rumors are present in a settlement, I usually turn to an article written in the early 2000s. "Medieval Demographics Made Easy" by S John Ross, easily one of the neatest and most useful (IMO) RPG-related articles written.

Most fantasy GMs or medieval wargamers have, at one time or another, wondered how many magic-bean-sellers there were in a village of 600 individuals. Well, SJR did some research and put a few numbers together - enough that it's given folks a starting point over the past 20 years or so. 

I've used "MDME" quite a bit in my Etinerra campaign, so it was an obvious choice to include that information in my tables... but not so obvious when I realized that I had to generate a lot of text for up to 80 possible population sizes (from 100 to 8000, increments of 100) and for 52 different businesses. That's 4,160 data points - uhhh... that's a lot of text.

Now, keep in mind that if I wanted to expand on what type of settlements I'm generating, a lot of cities can go up 20,000 folks living in fantasy-land. That's over TEN THOUSAND combinations of businesses to population sizes to figure out! So yea... it was time to come up with a new approach!

Spreadsheets to the rescue.

Without getting into too much detail, I created a spreadsheet that calculated the numbers and spit out text like "23 magic-bean-sellers" in a cell for a population of 6,800 individuals, or a weird looking set of formulas that hex-describe would use to calculate by a dice roll if a magic-bean-seller had set up shop in this tiny little hamlet. The text/formulas are in a format that I can copy/paste into my random table text file, do a bit of fix-up and it's ready to be used in hex-describe or an abulafia-compatible random table generator.

The original version of the spreadsheet and resulting hex-describe table was tuned for my Etinerra campaign, but I created a more generic version for you all to use.


The latest version of the text file that can be used with hex-describe will always be here:

I'm releasing this file into the public domain. See the file for details and attributions.

How to use these tables:                                                    

  1. You can point hex-describe to the link above, or  
  2. You can copy these tables into your own table text file that you are pointing hex-describe to, or 
  3. You can host this text file somewhere and point hex-describe to it.

To use the data within, we'll make use of hex-describe's indirection feature.

Example: I'm generating a small town:

1,[store [[1d2x1000]+[1d10x100]] as population]**Small Town of [townname1][townname2]**.

To reference the appropriate domesday table so I could figure out what businesses were in this small town, I'll reference the population when I'm calling the domesday tables:

1,[store [[1d2x1000]+[1d10x100]] as population]**Small Town of [townname1][townname2]**. Businesses available: [common-domesday-table-[same population]].

If my population is 1300 souls, then I'll end up referencing:


What hex describe will return is something that looks like this:

The following tables are provided in this text file: 
(XXX is replaced with a number from 100-20000, increments of 100)

 [common-domesday-table-XXX] - the businesses by population size tables

 [common-domesday-guards-table-XXX] - num. guards by population size tables

 [common-domesday-nobles-table-XXX] - num. nobles by population size tables

 [common-domesday-lawyers-table-XXX] - num. lawyers by population size tables

 [common-domesday-priests-table-XXX] - num. priests (potentially clerics) by population size tables

 [common-domesday-clergy-table-XXX] - num. clergy (layfolks) by population size tables

These tables are based on the MDME article and SJR's numbers that he came up with, or the formulas he used. 


BUT... you might ask, WHAT IF I want to customize those numbers, or add new businesses AND have this neato-nifty table text generator gizmo do my work for me? Or what if I want to add punctuation of some sort between the entries?!

Well, then you get to open the hood of the spreadsheet that I used to generate the tables!

There are instructions and a FAQ in that spreadsheet, but it's pretty meta and a bit of mad-science/alchemy, so read them, be warned and have fun!

Enjoy! Let me know if you find this useful.


Post a Comment