Skip to content
OSR 12 min read

Cheating your way to a campaign map

Older artist supervising a younger one, who's drawing on an easel

Fantasy map making used to be simple. You drew some lines for mountains and coast lines, any shape goes, and then some rivers, some of them even flowing from mountain to the sea. Cities can and do go anywhere.

But we're living in a time of untold riches. Not only can you buy map creation software that's basically a Computer Aided Drawing package as they use in engineering, or something that comes with a huge number of highly detailed graphical images to create a high tech collage.

No, but you also get the unfettered access to science that was a big part of the internet's early promise, so you can find out everything about plate tectonics and why your map doesn't fit it or download hyper-complicated tools that simulate eons of erosion.

"That seems a bit much, maybe I'll just use a pre-made setting", you say?

No, don't despair, no need to flee into the arms of Elminster or pay homage to the Earth Mother Ernalda, there's a secret to achieve mapping happiness: Just don't give a flying flood plain.

The Life-Changing Magic of Not Caring Enough

Things we don't care about:

General Setup

Let's actually dig in into one of the most pervasive fantasy cartography cliché: The Left-Justified Fantasy Map. You've seen it a thousand times before, when looking at those line-drawn images in fantasy novel trilogies or in RPG fold out maps:

We're going to copy that coastline with sea cutout, as the cliché page above notes: If you exceed the bounds of your initial novel/game/campaign, just introduce an Expansion Pack World.

We're also going to stick with a Hex Map, beloved of RPGs and wargames since time immemorial. It's fit for the genre, it helps you get an estimate of distances without using a ruler, and it neatly breaks down our tendencies to arrange everything in a rectangular grid.

There are a myriad ways to generate hex maps. You can buy RPG-specific tools like Worldographer or Hex Kit, you can use regular graphics tools like Adobe Illustrator or Affinity Designer (guides for the former and the latter), you can generate them from text, and of course there are online tools, which I'll be using here to make it easier to follow. I've had some issues with the much-lauded Hextml, so I'll be using Hexfriend. If you have trouble following along my notes, play around with the application, or try this great YouTube tutorial.

Also, grab a six-sided die!

To distant shores!

The first choice for this type of map is where you want your main shore to be. The trope is "left-justified", but you might as well put the shore to the right, or go totally crazy by putting them on the top or bottom! I'll stick with the tradition now.

We click on the "Map Settings" icon (the gear) on the Hexfriend page, go to Shape and Size and set the Map Shape to Square. The default dimensions are large enough for this tutorial.

The web application hex friend, with a rectangular empty hex map created
So much room for activities!

Pick the shallow sea color (light blue), and draw a jagged line from the top to the bottom. Switch to the paint bucket, and click on the left side, and you'll end up with our basic shoreline. Maybe create a bay or too.

The toolbare of Hexfriend, showing the selected paint bucket tool
Don't forget to switch off the bucket after doing that, Hexfriend has no Undo yet!

We'll pick "Plains" as our regular biome for the main map, use the paint bucket tool on the white space, and end up with something like the following.

a basic hex map, coast to the left, plains to the right

You might want to go with something more tropical as your basics, but I'm sticking with the most boring Euro-centric imagery for this first attempt. Some desert space could also fit in there. In our real world, this is often at the latitudes where there's not much wind brining in humidity (the doldrums), but in a magical world there are a lot of reasons for deserts and wastelands. I'll be putting a few hexes at the bottom of the map, as that gives use a good natural border.

Speaking of borders, now we're going to introduce our biggest ones: A long mountain chain running parallel to the coast. This should be familiar to Americans, as the Appalachians or Rockies are at a similar location, but for us it's also a good reason why the civilizations we're putting there haven't moved too much inland, and our player characters might do the same for a while.

I prefer to leave a bit of space on the map behind the mountains, just to get a general idea what's coming, and to prevent a too artificial vertical line.

hex map, now with mountains from north to south
Arise!

Now add in some regular hills to make the mountains rise more gradual. This is also the time where I'll add the desert hexes. Not every part of the mountain needs the same amount of "padding" with hills, and don't worry yet about whether those hills should have forests or not, just pick the regular grassy hill hex.

💡
As I noted before, Hexfriend has no proper Undo function yet, so a lot can be ruined by a single click. In addition, you might reconsider some design decisions you made. So save early and often: The function to do that is the Export As... item in the sidebar, where you pick the export format Hexfriend, as you can import this later. Pro tip: Change the name of the map right above to reflect your current stage, and the downloaded file will be named accordingly.
hex map, hills surrounding mountain chain
Lots of unobstructed hillside views

1d6 rivers run through it

Where the water is or isn't is a major component of any map. It shapes the landscape, it attracts people – which attract other people in turn, which is how most messes in the world start.

In Hexfriend, rivers are drawn with the path tool, right in the middle of the bottom toolbar. I tend to click on the Snap Path Point Icon right above the toolbar to allow only points on the edges of the hexes. This creates a very artificial look, but also naturally meanders the rivers, and you don't have concern yourself with river crossings within a hex, which simplifies gameplay a bit. But of course you can go creative here.

For a map this size, you can roll the amount of major rivers with a six-sided die, I just picked three. I also made one of the rivers a bit larger (increased the width from 6 to 8 in the path tool), and added some small paths at the end, not constrained by the hex grid to have a bit of a delta.

hex map with rivers added, bottom one has a delta

Now that the major waters are distributed, you could add forests and more dry spots. This also has a huge influence on where people would move and live and could help you decided where to put them.

I tend to go the opposite way, and just "retcon" the vegetation after the fact.

The Golden Age

This is a small trick of mine: I'll start with a time a few hundred or even thousand years before our campaign starts. This way, I get my future ruins for free.

If you have a good idea already–or if you're one of those people who just has to–you can do that along migration routes. Pick a spot from where your peoples are coming from, start there. This often creates more interesting distributions of cities. Sure, that spot on the river up north is ideal for settlement, but maybe the Grand Empire of Klavargh never got that far, and thus all you find is a measly village, not a grand metropolis.

I'll humbly admit that I didn't do that for this demo. I pick special icons for this, so that I can distinguish them from the "proper" cities in the "now" of the campaign. Some of them will be turned into ruins and dungeons, some will just be cities again.

hex map, with ancient cities and roads between them
Soon!

I marked one big ancient metropolis and a lot of smaller ones on the map, then I created the roads / trade routes between them, which also gave me good locations for other cities. The stars are special locations, maybe mines, maybe important shrines. Given that I placed the biggest river in the south, I made this the center of my ancient civilisation, thinning out cities and trading places the farther north you got. I didn't yet add another competing group of people yet, given that the map isn't that large and the timeframe of this demonstration. This is certainly a good place for experimentation.

Centuries pass…

You could theoretically repeat this pattern, adding cities, removing others, adding or removing trade routes. Simulating millennia of trade. But we've got "cheating" in the title, never mind the wild frontier nature of lots of fantasy settings. So we're skipping straight to the current day and age.

With one exception: I'm using this to place rough outlines of the forest. I basically decided that this old civilization did a lot of ship-building, and thus I want a pattern of deforestation before I proceed.

Cities tend to stick around for a long time. Some are just a shadow of their former size, some become the new center of civilisation. But rarely some new metropolis just pops up in the middle of nowhere. I'm restricing myself to (rolls die…) two new cities here. (If you want to do further chance-based restructuring, roll 1d6: 1 – city vanishes, 2-4 – city stays the same, 5 – city gets smaller, 6 – city grows)

Keeping with the wild frontier theme, I'm also giving trade routes and roads away from the coasts a smaller chance of survival. Wild tribes and bandits are moving in, everything closer to the mountain gets more dangerous. This reinforces our natural border, but you might have different strategies for that. Maybe there are wild sea peoples–viking-like raiders or murdering mermen?

There are opportunities for even more random rolls and tables here. D&D and the OSR scene have several products that could tie in here, but again: This is more an improvised approach. Neither all random-rolled (Hexfriend has that option with its generators), nor with intricate mechanics for simulating history and economy.

After old roads are converted to trails or paths, old cities are replaced with ruins, forts or new towns and cities, there's another round of changing the flora and fauna a bit. Some farmlands from olden times might be overgrown, there might even be some supernatural devastation.

hex map, with contemporary cities, forests and "modern" trade routes

Here we are. After doing a lot of steps, we reached a usable map with lots of entries quite organically. We could use this to start a campaign, but there are some enhancements still possible.

Lords & bandits

I hope you've saved the current status, as we're drawing scribbly lines all over the place: Borders between fiefdoms, remnants of empire or simple the reach of bandits & monsters. This will help ups generate some additional locations, and name everything in the final stage. It's obviously also the seed of many an adventure.

This where we have to make some decisions beforehand (if you have some tables, bring 'em out, but remember that I'm just cheating here, with nothing up my sleeves). While placing my cities, I put something empire-like at the bottom, and later made a small town in the north more important, as a point of light far away from the old order. I also eliminated trade near the mountains, stating that this is dangerous. These are the seeds of factions, but we need to establish some kind of desired mood for this. I've mentioned the wild frontier before, so we're going all-in here, once more favoring clichés. Apart from the more human cities, we're creating, say 1d6+1 (rolling: 6, wow!) factions, putting them in a list. As I rolled high, I'm making two of them more local and picking appropriate types.

Faction Leader Concept
Union of Land and Sea Jarl Farlorn & Seamaster Lemiriel Sea-Elves & Scandiwegians
Satrapy of Vajdat Satrap Yasmina the Victorious Decadent remnant of empire, aggressive again
Fortress Ruggdalshom Dwarven Council of Elders Trade center
The Ogredom Red-Fisted Rhon New power, united tribes of goblinoids & lizardpeople
Archmage Sostillon Archmage Sostillon So close to gaining new power…
True Inheritors unknown Weird intradimensional nomads

Hexfiend has the ability to draw borders, but tool support varies wildly here. If you're doing it in a regular graphics program, I recommend just coloring in wildly in a semi-transparent layer. You might even just print out a copy and use some crayons to do that.

There's adventure to be had in these surroundings. To my personal shame, I didn't use the rivers as natural borders here, it just didn't feel right considering the rest of the geography and the sheer number of factions.

How big are these hexes?
You got me. I intentionally never referenced how many miles one hex stretches on these maps. To be honest: I didn't know at the beginning, and I'm still not sure.

If I had chosen to have less diverse factions, it could've been a much smaller area, but like this it feels like we're going from southern, arid regions up to where it starts to get cold. We're not in 3 or 6 miles per hex anymore, which also means that for a true hexcrawl, we'll have to subdivide this. But the point was always a campaign map, which can mean a lot of sizes. Maybe I'll do a starting map in a future blog entry.

Finishing it up

We're missing names for our locations, but at least now we've got some factions that give us ideas where to go to. Plenty of fantasy name generators like this on the 'net, if you don't want to improvise this. If you've done that, you might actually start. There's not a lot of "flesh" on the factions, the cultures aren't defined, you don't have stats for important NPCs–but you also don't know where the party of adventurers will start and who they want to be. For an adventure in the Satrapy, you might not need too many details about the north. On the other hand, if one the players wants to be an Exiled Union Priest-Captain, maybe they want to write more about that part of the background?

Some additional ideas:

  1. Add more "intermediate" hex tiles between biomes (I already did that with the forested mountains).
  2. Get some better tiles for a more personalized look.
  3. Add more colors.
  4. Write a paragraph about each faction as a short campaign brief.
  5. Create a short list of rumors and news the party have just heard about the region.
hex map, final version with some enhancements, everything has a name and there are row/column coordinates in each hex
Enlarged, named, and with coordinates

What we did

We created a map that's fit for a campaign, by just setting our standards a bit lower. If you're satisfied with just a slice of the world and the graphical fidelity of a hex map is sufficient, it's easy to achieve a good result within an hour or so. There are free tools to do that, and we used one of them, but if someone is proficient in a (semi-)professional graphical application, it shouldn't take much longer–hexes are easy.

The key is slicing up our process into bits that build upon each other, and where you can refine on the previous output. We did the following:

  1. Defined the general geography: coast, mountains and rivers
  2. Place the historic locations on that map
  3. Let those influence both the biome and the future locations
  4. Introduce factions and their borders to each other
  5. Name everything

There are other approaches, some of which have different steps, some of which just eliminate ones we used (e.g. the historical phase).

I hope this is of help to people struggling with getting their initial version started. At least to met's just so much more satisfying to play in your own mini-setting than just re-using the work of others, even if it's small, quick & dirty.

Have you created something along those lines? Do you have your own version of doing something similar? Please share!