OK, you've got players adventuring on the ocean somewhere and want to randomly determine a swell. There's no compelling in-game reason to pick a very large swell or a very small one, or even a very medium sized one. You're letting the dice decide whether it's safe to land the boats on this shore, or how dangerous it is to go into the sea cave at this time, or whatever. So, the first thing you do is figure out what kind of sea or shoreline your characters are working from. Constricted areas like the Mediterranean Sea or the Gulf of Mexico get smaller swells on average than the Atlantic, with the Pacific getting bigger swells yet. This system measures out the ocean in 1200 mile hexes. Here's an icosahedral world map template; for an Earth-sized planet, each hex is 1200 miles. If your world isn't more or less Earth-sized, you'll need a different number of hexes per triangle to come out to 1200 miles per hex.
For reference, here's a map of the Earth in this template.
To describe the sea in any given area, we'll use two variables which I'll call exposure and fetch. Exposure is the number of hexsides of ocean a given area is exposed to, not counting the hex in question. For example, in the following diagram, the western end of Australia is exposed to four hexsides of ocean. (The fourth hex is split into two halves in the template; the two hex halves that the number sits on in the picture don't exist. Only the two hex halves within the triangles of the grid. This should be obvious from the full diagram, but gets a little less obvious zoomed in like this.)
By "straight line distance" I don't necessarily mean just the six lines of direct contact radiating out from the six hexsides of the original hex. Any hex that isn't already counted is one higher than the lowest number touching it, as shown here:
Note that for Western Australia, the mass of Australia itself blocks fetch into the Pacific, Africa shadows the fetch into the Atlantic, and South America and Antarctica shadow fetch into the Pacific to the west. We could conceivably extend the fetch in this direction further than 9 hexes, but I'm going to go ahead and rule that Cape Horn and the Antarctic Peninsula block off wave propagation to Western Australia except for that very small window immediately past them.
Ideally, this would give us a nice, unambiguous number to use for fetch, but in most cases it will be something like this, with a fetch of 5 being the single most common number, followed by 6, with a small but distinct extreme of 9. Let's call this 7 in this case.
Now, exposure and fetch won't change very often (unless you have a very chaotic world map). These numbers can be noted down in your world descriptions for any important or commonly visited areas, and you won't need to go back and recount every time.
Once, you have these numbers, you can roll 4d6 with an additional d6 of another color (to be read as a d2, d3, or d6 as indicated) and consult the following table, taking fetch adjustments into account:
Exposure (hexsides) → | 1 | 2 | 3 | 4 | 5 | 6 |
4 | 0 | 0 | 0 | 0 | D2-1 | D2-1 |
5 | 0 | 0 | 0 | D2-1 | D2 | D2 |
6 | 0 | 0 | D2-1 | D2 | D3 | D2+1 |
7 | 0 | D2-1 | D2 | D2+1 | D2+1 | D3+1 |
8 | 0 | D3-1 | D3 | D2+1 | D3+1 | D3+1 |
9 | 0 | D2 | D2+1 | D3+1 | D2+2 | D3+2 |
10 | D2-1 | D2+1 | D2+2 | D6+2 | D3+2 | D3+4 |
11 | D3-1 | D3+1 | D3+2 | D3+5 | D3+6 | D6+6 |
12 | D3-1 | D3+2 | D3+5 | D3+7 | D6+8 | D6+8 |
13 | D2 | D3+5 | D6+6 | D6+8 | D6+11 | D6+11 |
14 | D2+1 | D3+7 | D6+9 | D6+12 | D6+14 | D6+14 |
15 | D3+3 | D6+8 | D6+14 | D6+16 | D6+20 | D6+20 |
16 | D6+5 | D6+12 | D6+17 | D6+20 | D6+25 | D6+25 |
17 | D6+8 | D6+18 | D6+20 | D6+25 | D6+25 | D6+25 |
18 | D6+12 | D6+21 | D6+25 | D6+28 | D6+28 | D6+28 |
19 | D6+18 | D6+24 | D6+28 | D6+28 | D6+28 | D6+32 |
20 | D6+24 | D6+30 | D6+32 | D6+32 | D6+32 | D6+32 |
21 | D6+30 | D6+32 | D6+32 | D6+32 | D6+32 | D6+32 |
22 | D6+32 | D6+32 | D6+32 | D6+32 | D6+32 | D6+32 |
23 | D6+32 | D6+32 | D6+32 | D6+32 | D6+32 | D6+32 |
24 | D6+32 | D6+32 | D6+32 | D6+32 | D6+32 | D6+32 |
Fetch adjustment | die roll | steps |
4-12 | -3 if fetch=2; -2 if fetch=3; -1 if fetch=4 | |
13-16 | -2 if fetch=2; -1 if fetch=3-4 | |
17 | -2 if fetch=2; -1 if fetch=3 | |
18-19 | -1 if fetch=2 | |
20-24 | no adjustment |
So, continuing with our Western Australia example, if we rolled an 18 on our 4d6 and a 6 on the other d6, we'd check the fetch adjustment for fetch of 7 and a roll of 18 (no adjustment here), then check the table (d6 + 28 = 6 +28 = 34 foot swell).
Most ocean hexes or ocean shores will not really get a fetch adjustment. Enclosed areas like the Gulf of Mexico tend to have exposure of 1 and fetch of about 2, and much smaller swells because of this. With the same rolls as the last example, we would get a fetch adjustment of -1 (making the die roll 17 instead of 18), then check the table to find a swell of d6 + 8, for a total swell of 14 feet.
The last thing we need to do to get a complete swell description is period. I'll admit this isn't all that elegant, but like I said earlier, I was starting to get tired of messing with it. Basically, once you have your swell height, you cross-reference it on this table against your fetch to find a minimum and maximum period. I'll leave it up to you how you pick the value in between. If you'd like, you can use the maximum fetch on this table, instead of the fudged number we used above.
Maximum period | ||||||||||
wave height | minimum period | Fetch=2 | Fetch=3 | Fetch=4 | Fetch=5 | Fetch=6 | Fetch=7 | Fetch=8 | Fetch=9 | Fetch=14 |
2 | 2 | 7 | 11 | 12 | 13 | 14 | 15 | |||
3 | 2 | 9 | 11 | 12 | 13 | 14 | 15 | |||
4 | 3 | 10 | 11 | 13 | 14 | 15 | ||||
5 | 3 | 10 | 12 | 13 | 14 | 15 | ||||
6 | 3 | 10 | 12 | 13 | 14 | 15 | ||||
7 | 4 | 11 | 12 | 13 | 14 | 15 | ||||
8 | 4 | 11 | 12 | 13 | 14 | 15 | ||||
9 | 4 | 11 | 12 | 13 | 14 | 15 | ||||
10 | 4 | 11 | 13 | 14 | 15 | |||||
11 | 5 | 11 | 13 | 14 | 15 | |||||
12 | 5 | 12 | 13 | 14 | 15 | |||||
13 | 5 | 12 | 13 | 14 | 15 | |||||
14 | 5 | 12 | 13 | 14 | 15 | |||||
15 | 5 | 12 | 14 | 15 | ||||||
16 | 5 | 12 | 14 | 15 | ||||||
17 | 6 | 12 | 14 | 15 | ||||||
18 | 6 | 12 | 14 | 15 | ||||||
19 | 6 | 12 | 14 | 15 | ||||||
20 | 6 | 13 | 14 | 15 | ||||||
21 | 7 | 13 | 14 | 15 | ||||||
22 | 7 | 13 | 14 | 15 | ||||||
23 | 7 | 13 | 14 | 15 | ||||||
24 | 7 | 13 | 14 | 15 | ||||||
25 | 7 | 13 | 14 | 15 | ||||||
26 | 7 | 14 | 15 | |||||||
27 | 7 | 14 | 15 | |||||||
28 | 8 | 14 | 15 | |||||||
29 | 8 | 14 | 15 | |||||||
30 | 8 | 14 | 15 | |||||||
31 | 8 | 14 | 15 | |||||||
32 | 8 | 14 | 15 | |||||||
33 | 8 | 14 | 15 | |||||||
34 | 8 | 14 | 15 | |||||||
35 | 9 | 14 | 15 | |||||||
36 | 9 | 14 | 15 |
For the Western Australia example, in this case, with a fetch of 7 and a wave height of 34 feet, we'd have a period somewhere between 8 and 15 (d8 + 7 possibly). If we wanted to use the maximum fetch for W. Australia, we'd use 9 instead, although for waves this high, it makes no difference (waves this high are generated pretty close by and haven't had time to degrade). The 14 foot swell from the Gulf of Mexico would come in with a period somewhere between 5 and 12 (d8 + 4 most likely).
And that's about that. Random swells with not a whole lot of screwing around to get them. I think they come out a little higher on average than real world swells, but I think wind speeds are higher in the 2d6 wind speed table used in B/X and RC D&D than in the real world, and that (more or less) is what I started from. High winds and waves provide adventure material though, and give spell users a reason to learn more than magical artillery spells. I have a few more small things on waves and wave related topics that I think I'll stick all together in one miscellaneous post, and then move on to some new project. Or probably post a bunch of standalone, unrelated posts on various topics, like DCC patrons or adventure ideas or what have you. Hopefully I'll post a little more often since I don't have tables and tables of math to do first anymore.
PS: Thanks to Daniel "Theophage" Clark and his In a Dark Cell blog for the icosahedral hex grid I used for this post. He didn't post much, and hasn't updated for years, but he didn't nuke the blog when he gave it up. I wish more people would leave their thoughts out there. You never can tell what someone will find immensely useful.
Also, thanks to whoever made the mp_IcoSnyder_s82.45(yadayada, etc...it's a long string of numbers after this and you can search for it without them) icosahedral Earth map. I don't remember where I snagged it, and when I search it none of the hits seem to be the original source. It, obviously, was also immensely useful.