Small hex map generator
Okay, so remember that tiny hex map generator I posted a while back? I got distracted reading whole hexcrawl keys for a while, and thought maybe I'd want to try writing my own, and of course I decided that I needed to make a whole random map generator to get me started. So I spent a couple weeks expanding the tiny 7-hex generator from February into something that generates 127 hexes along with a key (or at least a Mad-Libs-style inspirational outline of one).
Check it out.
Small hex map generator
Just like with the tiny generator, you should make a copy of this file for yourself so that you can edit it. Then, if you click the checkbox in the upper-left corner, the whole thing will be rerolled. The "key" sheet is where the actual generation happens, and also where the details of each hex's contents are shown.
If you get a result you want to keep, you should copy the whole key sheet and right click > paste special > values only the whole thing right back in the same place. That'll replace all the formulas with their own outputs, allowing you to make changes and reload the file without causing the whole thing to reroll.
How it all works
First of all, I need to give loads of credit (again) to Jed McClure's Wilderness Hexplore Revised. Also, The Welsh Piper's lauded "Hex-based Campaign Design" posts were an important influence. Oh, and the B/X D&D sets and the AD&D 1e DMG, as well!
So, here's what's actually happening here. Each hex—okay, each square—on the two map sheets knows what its contents should be by looking at the numbers in the top row and leftmost column, and doing a VLOOKUP with those coordinates on the key sheet. The squares are colored by conditional formatting rules that look for the various terrain names.
The terrain generation starts with the center square. Every "hex" square after that checks the terrain types of all neighboring hexes that have already been generated, then randomly selects one of those adjacent terrain types and generates its own terrain based on that selected influence. The probabilities of these choices—the "If the previous hex was grassland, what kind of hex will this one be?" stuff—were very much based on those Welsh Piper tables, but tweaked a bit to encourage larger blobs of matching terrain.
Then a bunch of cells on the key sheet look at the terrain type of each hex and roll against a bunch of terrain-specific probabilities to determine whether various point-of-interest types occur in that hex. These include dungeons, settlements, monster lairs, temples, miscellaneous features, etc. So, for example, there's a 12% chance for a grassland hex to contain a settlement, but only a 4% chance for a swamp hex to have one.
(In retrospect, I kind of wish I'd made it check to see if any adjacent hexes already have a given type of feature. Then I could avoid having, like, three dungeons right next to each other. It would be annoying to implement, but I think I could get it to work.)
When a hex is determined to have a certain feature, the details for that get generated in the key sheet (based on tables in loads of other sheets) and combined together in "description" columns on the right end of the key. The monsters and classes referenced here all come from B/X D&D, mostly because I wanted to keep things kind of simple and vanilla.
There's an "icons" sheet that contains all of the emojis I used for the various hex trait types. Pretty much none of them are really ideal, but that's the material I've got to work with. If you want to replace them with normal Unicode characters or something, then changes made to this sheet will be reflected everywhere else.
A lot of other bits outside the map and key sheets should be pretty easy to modify, too. The "chance" sheets just use straight percentages, and most of the others use the same kind of chance-min-max columns that I've talked about on this blog before.
How I'd actually use this
Like I said, this is really just intended to generate inspiration, rather than anything close to a final project. I really love the creative exercise of taking something randomly generated and trying to rework it into coherent and resonant ideas. Multiple elements listed in a single hex's description might become separate points of interest at different locations, or they could be combined into a single adventure site.
The two-word items (like "• Love, raven") are just broad color suggestions to apply anywhere they're handy. Maybe I want to know whats on the heraldry of some castle's commander, or what kind of curse is on a ruin; the first place I'd look is that bit.
I'm currently working from the idea that you don't want every hex of a crawl to have some kind of keyed adventure material, so a lot of hexes don't get anything more than those color words. I'm not sure what kind of scale I want my maps to be at, but I'm considering something like three-mile hexes. I was kinda swayed by a recent anti-six-mile blog post, and then I found out that the parasang—an ancient travel measurement recently resurrected by Caves of Qud—was apparently about 3 or 3.5 miles. Folks, I think it would be really cool to talk about "parasangs" while running a hexcrawl.
Anyway, if that's the scale I'm working at, then I'd assume there are around 0–2 villages per arable hex in addition to the named towns and cities that get generated. That's why I'm not explicitly generating villages as a settlement type: They can just be assumed to be ambiently present (as long as you're not in the mountains or something).
When actually converting a generated map into something playable, I'd probably move stuff around. I'd like to have a little bit more space in between major settlements than I'm sometimes seeing here.
I used B/X monsters and classes here, both to keep my lists short and intelligible, and to make it easy to reflavor its output. A water elemental could become a river spirit, a medusa could become some unique mutant with a radiating death field, etc.
The numbers of monsters (including "monsters" like halflings) generated for lairs are frequently crazy high. I figure that a "lair" isn't a single combat encounter, but can instead be a whole dungeon, a regional power, or just a modification to encounter tables. A lot of these critters don't sound like things that will live together in groups, so a lot of the time a lair would just indicate a significant presence of that creature in the local ecosystem. And a lot of them are clearly just settlements of demihumans, or even just humans who don't live in farming villages.
Anyway, I'll probably make some changes in the future. I could stand to add a bit more character to settlements, reign in some of the crazy high numbers that crop up in temples, add more feature entries, etc.


