Tiny hex map generator

Screenshot of a spreadsheet showing the label 'Center hex terrain' next to a drop-down menu with the value 'random' selected; a series of checkboxes with labels like 'dungeon', 'city', 'beast lair', 'fortress', 'magical place', etc.; and a big check box marked 'Click to reroll'. On the right, there are seven big table cells colored in various shades of green and yellow. Each one contains a bulleted list including a terrain type such as 'Grassland' or 'Swamp', a location feature such as 'Dwarven fastness' or 'Alchemical laboratory', and a pair of random words like 'Rain, pit' or 'Rebirth, order'.

The excellent Prismatic Wasteland called for a blog bandwagon on the broad and highly relevant topic of maps. Predictably, the first thing I considered was making some kind of map generator. I discarded that idea, considered instead just creating a bunch of actual maps with some kind of mechanical connection . . . but then I went back to the generator idea. So here it is.

Tiny hex map generator

Before I proceed, I need to give credit to Warren of the I Cast Light! blog, whose "Six Hex Crawl" post was a major inspiration here. I also owe a debt to Jed McClure's Wilderness Hexplore Revised.

Okay, so each of the big boxes on the right of the "map" sheet is supposed to be a map hex. No particular scale. The first bullet point shows the prevailing terrain type for the hex, the second shows the main feature of the area—like a dungeon or town or lair—and the third just gives you a couple spark-table-style words to add color to the area. (That third bit does a lot for me; I really love interpreting these oracles, you know?)

Now, you can reload the browser window to reroll the map, but I recommend you make a copy of the file so that you can alter it yourself. Selecting checkboxes and such counts as alteration.

Once you've got your own copy, you can select a terrain type for the center hex, or just leave it as "random". Neighboring hexes influence each other's terrain type, so the center tends to determine the overall character of the map.

You can also select specific features for the map to include. It's one feature per hex, so picking more than seven means those selections get way less certain. Note that most of the options are broad categories, so if you select "resource", that might show up as something like "defensible terrain".

The "megadungeon" feature type is the only one without any variable details. That's because I figure that, if you're going to run a megadungeon, you've already got a pre-existing one in mind.

The map will auto-generate with every click, but you can also just toggle the "click to reroll" checkbox to get a new map without changing any parameters. If you want to save a generated map to another spreadsheet, make sure to do a "paste as values" so that you get the actual results instead of the formulas. (This will fuck up the merged cells, but you'll have the contents.)

How I would use this

I think this would be pretty handy at the beginning of a campaign to just give me a little starting area I could flesh out. If I know I want to run Rappan Athuk but I don't have a surrounding region and convenient nearby town in mind (I have no idea if the book includes that stuff already), I could just generate a few maps with the "megadungeon" feature selected until I've got some something that feels right.

Another use that comes to mind is situations where the PCs find themselves suddenly teleported to a place unconnected to their established starting map. A few years back, I threw a Stargate-style multi-destination gateway into a dungeon, and of course I didn't have maps ready for any of the places the players could have gone with it. This generator could have been real handy there.

A lot of the location features in this generator seem a bit out of place in a water hex, so I'm inclined to presume some coastline to support those castles and dungeons and whatnot. That said, it's also worth asking "Could this be an island or a giant boat or something weird instead?"

Customization

If anybody's interested in a verbose description of how this whole thing actually works, catch me on Blewski and let me know. For now, I'll just talk about some ways you could customize this thing.

There are two basic table types in this generator: weighted tables that can potentially produce duplicate results and unweighted tables that prevent duplicates.

Weighted tables

This category includes things like the center terrain table and the dungeon table. These pretty much work as described in my random generator spreadsheets post from last year. The "chance" column determines the likelihood of a result, with higher numbers making it more common. The "percentage" column doesn't determine anything; it's just a handy indicator of what the chance column actually works out to in percentage terms. "Min" shows the minimum die roll (so to speak) that will produce a given result, and "max" is, of course, the corresponding maximum roll.

I set up the chance values on the center terrain table to add up to 100, so a chance of 30 makes the "grassland" result come up 30% of the time, but if the chance values totaled 200 instead, then a chance of 30 would only work out to 15%.

Anyway, you can set the chance numbers in a weighted table to anything you want—including zero! They don't have to add up to any particular number. I built my tables so that I could roll on them with real dice, but that's absolutely unnecessary.

On most of these tables, you can change the results to anything you want, and even add or remove entries, but the specific terrain types are kinda hooked into lots of other calculations, as are the basic categories of features. So, if you change "forest" to "jungle", it'll break a bunch of stuff. You can do it, but get ready to track down a bunch of errors.

A lot of the table sheets in here have two sections: the actual table on the left and a sub-generator on the right that rolls on the table a few times, producing results that are used elsewhere in the generator. Maybe that's a little weird or awkward; I just found it convenient at the time.

Unweighted tables

There are only a few unweighted tables in the generator, including things like the city name table and the color trait table. Instead of working like dice roll tables, these are kind of more like stacks of shuffleable cards. In these, the "index" column contains a bunch of random number generators (using the RAND function, which just spits out a number between 0 and 1 with a lot of decimal places). Then, in the "sorted index" column, a SORT function takes all of those random numbers and sorts them lowest-to-highest. Finally, the column to the right of that does a VLOOKUP on the sorted index back to the first pair of columns, outputting the table's results (city names or whatever) in now-randomized order.

Some other sheet in the generator then looks at the first result on the randomized list, or the first two results, or the first several, and applies that output to some other fields elsewhere. The "field" column on the unweighted tables just labels which results are used, and where.

Anyway, these tables are really easy to customize. You can add, change, or remove results from the B column of the sheet as you please; just make sure that (1) the index column always has a number generator for each entry, (2) the SORT function in the sorted index column covers all of the index cells, and (3) there's a corresponding VLOOKUP formula in the last column for every number in the sorted index column.

The "neighboring terrain" table

Okay, this one's slightly weird. It's a weighted table, but the actual result it's rolling isn't the terrain type, but the rarity. Then some other part of the generator looks at the terrain types of a neighboring hex, and cross-references that terrain type with the randomly rolled rarity to find the new hex's terrain type.

Anyway, you can change the chance values without any trouble, and replace the terrain results as long as you stick to the six existing types. If you don't want water hexes, for example, you can just replace all the water results with grassland or whatever.

You could also add or remove rarity levels, or rename them! They don't even have to be about rarity; I actually had "A, B, C, D, E" in that column at first.

A worked example

Okay, so let's see what I can actually get out of this thing. First, I'll go full random, with no specified center terrain on required features, then hit the reroll button and take the first map I get.

So the terrain seems pretty sensible: We've got an obvious altitude gradient with highlands in the southwest and lowlands in the northeast. Hills-to-swamp is an odd transition, though. I imagine the hilly hexes are moorland, flattening out to a peat bog in the northeast. The mountains are probably green but not forestested. I've got "rain" as a spark word in the southeast hex, but I think it's rainy all over this place.

We've got an abandoned dwarf hold and unidentified megadungeon in the mountains. These might be related! In the north, we've got Mulberry, a "disorganized" town that's surely a natural home base for adventurers. The watchtower might be an outpost of some empire, or it could be some abandoned/haunted place that the PCs will conquer for themselves.

But we've also got some interesting magical folks hanging around here! There's a whole palace full of jinn (whatever that means here), a sphinx lurking in the hills, and some ambiguous immortal chilling in the bog. I'm a big fan of taking folklore-derived creatures as independent beings instead of representatives of their originating stories or cultures, so this would be a fun opportunity to do non-Arabic jinn and a non-Egyptian/Greek sphinx. Not sure what that means yet, though.

North hex

Let's start at the top with the town of Mulberry! I figure this place is an informal settlement, a collection of outlaws, refugees, or prospectors. The sparks "wisdom" and "salt" are interesting. I think the people here know something that the rest of the world doesn't. Does the salt indicate that the nearby swamp is a salt marsh (perhaps with a sinister secret) rather than a peat bog? Nah, I think it's metaphorical salt: The people of Mulberry are aggrieved over something. I'd make them refugees from the dwarven fastness, but "Mulberry" isn't a good dwarf town name.

Instead, I want to go with my other two ideas: These folks are both outlaws and prospectors, kinda like what people call "artisanal miners" these days: They're here to harvest resources that they're technically not supposed to touch, specifically loot from the old dwarf hold. They're not dungeon delvers, but they've been hauling away accessible stuff from the surface, from old weapons to stone blocks. Unfortunately, they couldn't settle any closer because they're scared of the sphinx, and the soldiers in the watchtower—who come from the same northern country as most of the people in Mulberry—have orders to prevent their countrymen from offending the greater dwarven community. And that's why they're feeling so salty.

Oh, and I just decided they're mostly halflings. Mulberry is a great name for a halfling town.

Northwest hex

I used the term "jinn" without thinking much about how that's not technically a thing in D&D, but of course I mean the beings that various versions of the game call dao, djinn, efreet, marids, and (in some editions) jann. I disagree with D&D's conception of the jinn as elemental beings: It seems pretty clear that they fill the same niche as fairies, so I'd have categorized them as fey.

And that's the role that they'll have here in their castle out on the moors. It's a beautiful, colorful place, seemingly out of place—even inexplicable—in the rough landscape. The people who live here aren't as ephemeral and transcendent as fey who dwell in a hidden otherworld accessible only through a fairy mound, but they're clearly a different folk from mortals: They're tall, powerfully built, and radiantly healthy, with gem-bright eyes and insanely luxurious clothes. They read as humans to the halflings and dwarves of this area, but a human will know there's something really odd about them.

The palace needs a name, so I'll call it Dream in Summer. It's kind of a vacation cottage / refuge from Fairyland political strife. This "vacation" has lasted a very long time. The jinn could go back home at any time, but they'd face uncertain consequences.

These are powerful, magical, immortal people, but they're also kind of earthy and hedonistic. They like to eat and drink and sleep and fuck. They like to fight, too, but they're not allowed to kill anyone here, not even each other: That's part of the rules of whatever treaty is letting them stay here. And they're loath to even fight any mortal, because it would be really easy to kill one accidentally.

They're also loath to do any work, so they've got slaves for that. They've got dwarven slaves from before the fastness fell, they've got halfling slaves from Mulberry, and they've got fairy slaves (mostly goblins) from their home. They take people into their service through gifts and debts and oaths, and hold onto them through magic. The slaves are absolutely able to kill people, but the jinn aren't allowed to directly order them to do that.

Northeast hex

When I put "mysterious immortal" in the generator, I was vaguely picturing a Tom Bombadil type, or an old hermit who's secretly a retired celestial. If the immortal is living in a bog, though, that suggests a different vibe. The spark "trade" makes me think they're a mortal who sold their soul for immortality, or a supernatural being who gave up their power to dodge some responsibility.

I think I'll go with the former, since it would make loads of sense for somebody to bargain with the jinn at Dream in Summer for immortality. I also dig the idea of having some kind of Baba Yaga figure here, so I'll say that this immortal is an extremely old dwarven woman, and an ambiguous but intimidating magic-user. Let's call her Grandmother Mirgrim.

She knows all about who the jinn are and why they're here. Maybe they needed her soul to make their refuge here work. She's also kind of a liability to them, and they would prefer if someone killed her. She lives in a muddy little stone hut and flies around at night on a little cloud like Son Goku. The people of Mulberry are afraid of her, but they bring her food and sometimes ask her for help. A halfling kid from the town comes by to do housework for her every couple days, and they're halfway to becoming Mirgrim's apprentice, but not out of the running for being sacrificed in a ritual.

Center hex

So here's our sphinx. Do you suppose sphinxes, lammasu, and manticores might all be the same kind of being? That's a thought. Not sure if there's room for that idea here, though.

Let's make this a male sphinx, because you basically never see that. I'll ditch the goofy androsphinx/gynosphinx distinction, though. This is just a sphinx who happens to be male. If the jinn are earthly/fey borderline beings, the sphinx is borderline celestial. Maybe this one is in the process of gradually falling to a more earthly state. He's not a manticore, but he could become one.

Running with the idea of sphinxes as divine servants and the sparks "destruction" and "mind", I'm going to say that this guy was involved with the extermination of the dwarven fortress as some kind of celestial retribution and was stationed here to keep it from being reoccupied. And both the guilt and isolation are getting to him. He doesn't technically need to eat, but he's started hunting animals. He hasn't eaten anything sapient yet, but he might.

He speaks all languages and he never lies. There are a lot of things he doesn't want to talk about, so he stays silent most of the time. He's got a name, but he doesn't tell anyone.

He lives in a massive burrow dug right into the moor. It's as clean and perfect as a hole in the ground could possibly be.

Southwest hex

This hex contains the megadungeon, but I've been really focused on the abandoned dwarf hold as the defining ruin of the region. This place could just be a larger extension of the same dwarven civilization, or else some older site that was connected to why the dwarves were punished. I like the latter idea better, so I think I'd pick something fairly random, grind off the serial numbers, and put something terrible and world-threatening at the bottom.

The spark words "flesh" and "growth" are great, obviously. Maybe the cataclysmic threat inside it could be some combination of Abhoth, the Thing (from The Thing), and the Stuff (from The Stuff). Maybe throw some extra mimics, doppelgangers, and shoggoths in there.

Southeast hex

The watchtower—as established—hosts a military mission from a mostly halfling polity to the north. This region is effectively no-man's land since the dwarven fastness was destroyed and the northerners make no claim to it, but they know that some other dwarf faction will want to reclaim or scavenge the ruins as soon as they can figure out who has the rights to it . . . and how to deal with the sphinx. When some of their own people started venturing south with dreams of prying gold teeth out of dwarven skulls, the halflings decided to head off an international incident and station a few soldiers down here.

The watchtower is also an old dwarven fortification, and has stairs leading deep into the earth, joining tunnels that lead to the fallen fort. The troops keep that door firmly locked.

At the top, there are three swivel-mounted dwarven binocular sets. They're in bad repair, but they still give a pretty great view of the surrounding hexes.

The first troops sent here were an elite team with wizard support, prepared to make a good impression on any dwarven observers or maybe even survive an encounter with the sphinx. Most of those folks have rotated out since, and it looks like the sphinx isn't bothered by the soldiers. The tower is now occupied by some very bored halflings (and a few humans and orcs) who are very sick of the rain and isolation. The only town nearby is Mulberry, and soldiers aren't popular there. It's basically a punishment detail at this point.

The soldiers only know about the palace of Dream in Summer as a bunch of weird human aristocrats who trade with Mulberry. They've been ordered not to go anywhere near the place.

There are notes in the tower's basement that hint at why the fastness was destroyed, but nobody stationed here is both capable of reading Dwarven and interested in old papers.

South hex

At last, here's our abandoned dwarven fastness. I found a Dwarf Fortress name generator and got "Cudgelbrass", so I'll go with that.

So, Cudgelbrass was never a full dwarven city. It was something between an archaeological base camp and a tunneling project. It was intended to find and breach the megadungeon in the southwest hex, a place which the founding Dwarves suspected to hold something of tremendous power. Unfortunately, they were totally right, and they succeeded. They were a few miles off target from the actual site, but they persevered for decades—ignoring nightmares and ill omens—and eventually managed to break into one of the older civilization's radiating tunnels.

That's when the sphinx was sent in to destroy Cudgelbrass' alchemical digging engine. The gas released from the apparatus caused more than half the population to hemorrhage catastrophically and die within minutes. The sphinx, unable to lie even to himself, can't say that the genocide was an unintended side effect.

The buried fortress is now wholly empty of living dwarves, but there are a few hideously toxic undead ones down there, as well as alchemical oozes and random subterranean scavengers. There's also also a whole dwarf hold's worth of high-quality weapons and tools, precious metals, and hoarded knowledge . . . as well as a way into the god-forbidden megadungeon.

Finished map

I'm going to consider each of those hexes to be standard (in some quarters) six-mile hexes. I like handling overland movement in mile-by-mile fashion, so I'll use HexTML to make a zoomed-in map with one-mile hexes.

I placed each point of interest within its super-hex randomly, but I like where they ended up, with the town of Mulberry very close to Grandma Mirgrim and the two related dungeons near each other. I ended up labelling all of them in Photoshop instead of just using HexTML.

Anyway, this actually seems like a totally workable start for a campaign! I'm going to call this a successful experiment.

But also

Back on the topic of the map bandwagon, I want to point out a great post on dungeon mapping by Dwiz over at A Knight at the Opera! I'm not sure if it's intended to be part of the bandwagon, but it definitely fits. I'm really interested in the idea of using a flow-chart-style format to make mapping as a playing much easier. Gotta try that out soon.