In the comment section of my last article, reader Roxysteve commented about the random terrain generation of Source Of The Nile, one of the games on my “Great games of yesteryear” wish list. I have never read Source Of The Nile, and am only vaguely familiar with it (players compete for gold and glory by outfitting expeditions to the heart of unexplored Africa and discovering the randomly generated wonders therein) but his comment made me think about doing something similar for myself. What I came up with is a system that randomly generates terrain based on the hexes about it. To start, you need to make a seed hex by picking an elevation, vegetation and water from the lists below. From there, pick blank hexes adjacent to filled ones one at a time and roll on the tables below to fill them. This is of course an excellent time to make a custom d10,000,000. In this case, you’ll need a d12, d10, d12, d12, d12, d20, d20 combo.

For starters, if there is more than one filled hex bordering the hex you’re generating, you’ll need to randomly choose a source hex from those available. To do so, roll a d12 and d10 and consult the following table. Assume hex 1 is directly north or west (or whatever, it doesn’t matter) and count clockwise from there.

# of surrounding hexesd12 and d10 roll
2d12/6 (round down)
3d12/4 (round down)
4d12/3 (round down)
5d10/2 (round down)
6d12/2 (round down)

From there, generate the elevation of your new hex with another d12 roll and the following table:

Source Elevationd12 result
Mountains1-6: Mountains
7-12: Hills
Hills1-4: Mountains
5-8: Hills
9-12: Plains
Plains1-3: Hills
4-9: Plains
10-12: Lowlands
Lowlands1-4: Plains
5-8: Lowlands
9-12: Valleys
Valleys1-6: Lowlands
7-12: Valleys

Interpret those results liberally. Mountains and hills both might be a single large elevated feature, or a cluster of smaller ones. They might be any number of shapes. Similarly, lowlands could be basins, deltas, swampland. You don’t have to limit yourself to only five options. This table results in a map that is approximately 2/14 Mountains, 3/14 Hills, 4/14 Plains, 3/14 Lowlands, and 2/14 Valleys. You can alter the table to achieve different distributions. I’ll cover the math behind that in a separate article.

Next, generate the vegetation of your new hex based on the vegetation of the source hex and another d12 table:

Source Vegetationd12 result
Dense1-6: Dense
7-12: Forest
Forest1-4: Dense
5-8: Forest
9-12: Grasslands
Grassland1-3: Forest
4-9: Grassland
10-12: Scrubland
Scrubland1-4: Grassland
5-8: Scrubland
9-12: Barren
Barren1-6: Scrubland
7-12: Barren

For the purposes of this table, I’m considering dense vegetation to be jungles, thick forests, choking swamps and the like, Grassland to include lots of small vegetation and frequent trees or other large plants, and scrubland to include short coarse grasses and infrequent scraggly brush. Like elevation, play fast and loose with those definitions and let the contents of the hex and nearby hexes inform your interpretation. Because the rolls are the same, this table creates a distribution the same as the one created by the height table: 2/14 Dense, 3/14 Forest, 4/14 Grassland, 3/14 Scrubland, 2/14 Barren.

The next table is for water features.

Source Waterd12 result
Lake1-2: Lake
3-7: River
8-12: None
River1-4: Lake
5-8: River
9-12: None
None1-2: Lake
3-4: River
5-12: None

Water features should be present wherever makes sense. Feel free to add them in where appropriate, for example to connect a randomly selected water system to a nearby source. Also, take it as writ that there are dozens of streams and ponds too small to be shown on the map at smaller scales unless the terrain makes that unlikely. With the table above water will have the following distribution: 4/19 Lakes, 5/19 Rivers, 10/19 None.

The last component of the map is points of interest. The frequency of these will depend more on the scale of your map and your personal preference. According to this article from Hydra’s Grotto, the entirety of the massively populated game worlds of Skyrim and Oblivion would each fit into a single 6 mile hex, have hundreds of distinct points of interest each and roughly match real world distributions, so you really can’t pack them in too tightly. Instead, the limit is whatever distribution of points of interest to white space you’re comfortable with in your game. For these tables I went with 3/10 of hexes with points of interest with 1/6 of those being major points of interest. Roll on the next table. If the result indicates a point of interest, roll on the point of interest table.

d20 rollResult
1-14No Point Of Interest
15-19Point Of Interest
20Major Point Of Interest (Use the same table, think big when interpreting the results.)

The following table is by no means exhaustive. Add entries, fiddle with weights to your heart’s content.

d20 rollResultDescription
1-3RuinsWall or foundation fragment, tomb or graveyard, statuary, collapsed hut, ruined keep or tower
4-6CavesSimple one room lair, 5 room dungeon, huge complex
7-9Natural FormationsMassive tree, oddly shaped boulder, waterfall
10-11Lair of unique NPC/creatureLair of an “alpha monster”, odd or quirky NPC, unusual but non hostile monster etc…
12-14CampsiteWayside shrine, small lean-to, small cave
15-16SettlementSmall encampment or village. May be hostile, friendly or neutral
17MagicA magical feature of some sort. An endless fire, magic fountain, floating tower, etc…
18-20Unusual TerrainA pocket of terrain that is different than the surrounding hex or an unusual type. A barren defile in the middle of a forested hex or a quicksand marsh

Once you finish randomizing the map you can add some additional features, connect water features, add roads between settlements, water features and points of interest as appropriate and any other finishing touches you feel like.

Here’s a sample I started with a seed hex of mountain forest in the upper left corner. You can see that even if the long term results tend to a single distribution, small regions are heavily influenced by their seed hex. It features 11 points of interest, key below.

Sample Map

1 – a small cave with the remains of a campfire and a few crude iron tools scattered about
2 – area between hills here is full of wet mucky forest detritus
3 – small cave complex full of giant mud wasps
4 – mountain in the middle of the forest is the lair of a great serpent, knows much, is dangerous, but can be bargained with
5 – hills riddled with boltholes and tunnels, home to morlock-like creatures
6 – a village of refugee duergar have a town in some caves here, they are shrewd and conniving but needy
7 – the caves in this forest basin are home to root-gnawing worm and crusted with strange salts
8 – a strange wild man lives in these woods
9 – an “undead” treant roams these wood infected with giant termites
10- several hills are connected by natural bridges
11- small hide tent village of desert lizard folk

So what do you think? Too complex? Not complex enough? Dying to see the math behind it? (Not holding my breath on that one.) Missing anything obvious?