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 hexes d12 and d10 roll
1 1
2 d12/6 (round down)
3 d12/4 (round down)
4 d12/3 (round down)
5 d10/2 (round down)
6 d12/2 (round down)

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

Source Elevation d12 result
Mountains 1-6: Mountains
7-12: Hills
Hills 1-4: Mountains
5-8: Hills
9-12: Plains
Plains 1-3: Hills
4-9: Plains
10-12: Lowlands
Lowlands 1-4: Plains
5-8: Lowlands
9-12: Valleys
Valleys 1-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 Vegetation d12 result
Dense 1-6: Dense
7-12: Forest
Forest 1-4: Dense
5-8: Forest
9-12: Grasslands
Grassland 1-3: Forest
4-9: Grassland
10-12: Scrubland
Scrubland 1-4: Grassland
5-8: Scrubland
9-12: Barren
Barren 1-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 Water d12 result
Lake 1-2: Lake
3-7: River
8-12: None
River 1-4: Lake
5-8: River
9-12: None
None 1-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 roll Result
1-14 No Point Of Interest
15-19 Point Of Interest
20 Major 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 roll Result Description
1-3 Ruins Wall or foundation fragment, tomb or graveyard, statuary, collapsed hut, ruined keep or tower
4-6 Caves Simple one room lair, 5 room dungeon, huge complex
7-9 Natural Formations Massive tree, oddly shaped boulder, waterfall
10-11 Lair of unique NPC/creature Lair of an “alpha monster”, odd or quirky NPC, unusual but non hostile monster etc…
12-14 Campsite Wayside shrine, small lean-to, small cave
15-16 Settlement Small encampment or village. May be hostile, friendly or neutral
17 Magic A magical feature of some sort. An endless fire, magic fountain, floating tower, etc…
18-20 Unusual Terrain A 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?