I looked through some of the likely game materials I have, and the Wilderness Survival Guide does list some "default" elevations for different terrain types for the purposes of weather generation, but this by itself is totally insufficient for working out riverbed slopes. For one thing, this would leave a river barely flowing with essentially no slope at all while it flows between hexes of the same terrain type, and then have waterfalls falling hundreds or thousands of feet when the terrain changed, or perhaps even flowing uphill if the terrain suddenly got hilly. Everything else I saw just had vague references to terrain type elevations, mostly centered on how tall mountains or hills of various types might be.
Next I tried looking at real world measurements, but aside from the official elevation of various cities and the elevation of high points like mountain peaks, these weren't easy to find. No one (except me apparently) is interested in how high the base of a hill is, or how high a river is, with the sole exception of the Yarlung Zangbo River in Tibet. It's the world's highest river, with 3/4 of its length at elevations above 3000 meters, and 1/3 over 4000. But one river simply isn't enough to build any kind of coherent system on.
So what I've settled on here isn't based firmly in reality, and hasn't been extensively playtested in any way, but it seems to feel about right. If anything, it generates terrain a little slopier than you might expect in real life; I think I'd prefer something a little closer to real life, but for now at least, I'll take rivers with more rapids and cascades as a high adventure feature rather than a bug.
All right, the method: the ocean is at an elevation of 0'. For every river hex, roll a die appropriate to the surrounding terrain, consult the table, and add the result to the previous river hex's elevation. If you're not starting at the ocean, just use the hex that's furthest downstream as the baseline; all elevations above that are relative to the baseline, rather than being relative to sea level.
Terrain type | Die type | Die Roll | Elevation Add | ||||
24 mile hex | 12 mile hex | 6 mile hex | 1 mile hex | ||||
Swamp | d2 | 1 | negligible | negligible | negligible | negligible | |
Plains | d4 | 2 | negligible | negligible | negligible | negligible | |
Low Hills | d6 | 3 | 100' | 50' | 25' | 4' | |
Foothills | d8 | 4 | 200' | 100' | 50' | 8' | |
Low Mountains | d10 | 5 | 300' | 150' | 75' | 12' | |
Mountains | d12 | 6 | 500' | 250' | 125' | 21' | |
7 | 800' | 400' | 200' | 33' | |||
8 | 1300' | 650' | 325' | 55' | |||
9 | 2100' | 1050' | 525' | 85' | |||
10 | 3400' | 1700' | 850' | 140' | |||
11 | 4500' | 2250' | 1125' | 185' | |||
12 | 6000' | 3000' | 1500' | 250' | |||
13 | 10000' | 5000' | 2500' | 415' |
Low Hills and Low Mountains are kind of transitionary types, to be used for the lowest hex of hills or mountains in a range, or not. Do what you want with them.
Why is there a 13 on a table where the highest die you'd roll is a d12? Because this table is primarily for working out the elevation of the low points of the hex, but I thought it might be useful to have the ability to randomly roll up the high point too. If you're looking for the high point, roll again and add 1; this gives the chance that a small hill will poke up out of a swamp. Of course, there is a very small chance that a mountain hex will have a high point barely above the level of the riverbed. Maybe use d10+3 or d6+7 or something. Suggestions for improvements are welcome.
Also keep in mind that if you're going back and making a more detailed map, like a 6 mile per hex version of a map you originally did in 24 miles per hex, make sure your overall slope is the same. There can be places in the detail map where the riverbed is more level or more sloped than you found in the 24 mile hex, but it has to even out by the time you get across the hex. If you have an 800' drop in the 24 mile hex, and you roll three "negligibles" in a row, that last 6 mile hex will have to have an 800' drop to keep it even.