My Beyond the Wall game is a Westmarches-style hexcrawl, for the most part. The players are from a small village situated on the edge of a deadly wilderness, but the “settled” lands are also filled with adventure locations (largely safer ones for low-level characters not yet ready to venture into a forest of razor-sharp thorns). I’ve been thwarted for years by attempts to make a hexcrawl, due to the sheer amount of creation involved, until, finally, for this campaign, I hit upon the following idea.

First off, I didn’t try to fill every single hex with content. Instead, I used BtW‘s conception of distance bands (near hexes are those within a close radius, moderate hexes are the next band of that distance, and far hexes are the band after that), and decided that I’d use an alphabet key for each band. Basically, of the 37 “near” hexes, only 26 have significant content, as do 26 of the “moderate” hexes. Other than the players’ home town being A1 right in the center, the hexes that got a letter were determined randomly.

This still leaves space for things I might decide to add later, but coming up with 52 locations across a 7-hex radius was much less daunting than filling in every single one of them. I had a pool of general ideas for locations I might want to have in the game (like a haunted farmhouse, a crossroads, a giant inn, and the old watchtower required by one of the threat packs I’m using), and then filled in the rest with the random location generator from BtW.

But none of that is the trick.

The trick is that, at this point, all I had were some vaguely atmospheric locations and a few ideas for how some of them hooked into the overall campaign themes and threats. So next, I made a spreadsheet*. In addition to salient data about the location’s key letter, name/description, and overall position within the world, it got a couple of useful columns: clue to near, and clue to moderate. Each location would hold some kind of clue to how to find one other location in the near band, and one in the far band, and some kind of useful details about those other locations. And each location would get used the same number of times (so each location essentially has two out clues and two in clues).

Some of the locations were easy. Obviously the haunted farmhouse (which was secretly the home base of goblins trying to scare people away) would be a good place to put a clue to the goblin market location. But most of the connections wound up being fairly arbitrary: when you only have one location without a clue, and one location that can take a clue, you match them up.

And this became the trick to filling in these locations with interesting details. On the spreadsheet, I could now see that each vague location had some kind of clue to two other vague locations. And that clue would inform both sides.

Why is the estate of rival nobles getting a clue from the old battlefield and sending a clue to ancient ruins? I already know they’re nobles that are good at farming, but maybe they have an inferiority complex about it. Maybe they’re trying to find proof that they’re actually an extremely old noble house in order to raise their prestige among the other nobles. Boom. The old battlefield now has a roleplay encounter with archaeologists hired by the family to dig for relics of the family’s armies, and if the players follow it up they can get hired by the noble family to hunt for further proof in the ancient ruins.

Not only is every location now findable without just having to go hex-by-hex, but each location has four data points to spur imagination about why it’s interesting and how it fits into the larger world.

And the GraphViz of the connections is pretty neat too:


* My next step is almost always to make a spreadsheet.