Home > Campaign Development, Mapping, Worldbuilding > Hex-based Campaign Design (Part 1)

Hex-based Campaign Design (Part 1)

Campaign Design by the Hex

deutsche Übersetzung

In my quest for rapid campaign development, I came across an elegant idea called Six sided gaming: Hex magic on Greywulf’s Microlite d20 site. Subtitled “the lazy gamer’s guide to world building,” Six sided gaming suggests launching your campaign with an adventure in a single hex, then placing adventures in each of the six surrounding hexes, assigning hex terrain and encounters to match the adventures you’ve chosen. As the campaign grows, you simply populate the next “ring” of surrounding hexes, and so on and so on.

Defining the campaign by its adventures—instead of the other way round—is a great time-saver and perfect for the busy GM. With Greywulf’s kind permission, I’ve expanded the concept into a slightly different approach, but with the same time-saving goal. In Part 1 of Hex-based Campaign Design, we’ll start with a hex map and its terrain.

Skip to Part 2…

The Hex Map

Sub-hex Template

Sub-hex Template

The underlying goal of Hex-based Campaign Design is to create a playable setting with as little effort as possible, so I recommend starting with a small map. The sub-hex map from our Hex Templates post (shown at right) is a good start, at a scale of 5 miles per sub-hex. This makes the template’s larger, atlas-scale, hexes 25 miles wide.

As you work on the sub-hex template, keep the large hex boundaries in mind, as it’ll make life easier when you expand the map and scale up to the atlas level.

N.B. The sub-hex template is now available in Hexographer format on the Hex Templates page.

Choose Climate

The first task is to determine climate. This affects the precise terrain you place in the next step. For example, if you’re placing forest, climate indicates what type of growth exists (e.g., conifers in cold climes, deciduous in temperate, or jungle in tropical areas). While not exact, the guidelines below are sufficient for our purposes:

  • Arctic – Cold all year round
  • Sub-arctic – Four distinct seasons, with a short, cool summer
  • Temperate – Four distinct seasons, each of roughly equal duration
  • Sub-tropical – Four distinct seasons, with a short, warm winter
  • Tropical – Hot all year round

Assign Hex Terrain

Terrain placement does not rely on a random function, since it’s too easy to end up with unrealistic results (e.g., swamps next to deserts or mountains next to plains). Besides, who wants to roll dice for each hex anyway? Instead, I assign a primary terrain type to each atlas hex, then fill in the remaining sub-hexes with related terrain types. This lets you place terrain sensibly, but with the benefit of some speed.

Let’s begin with some basic terrain types:

  • Water – lake, sea, or ocean; may be ice-covered in arctic/sub-arctic, or seaweed-choked in tropical/sub-tropical areas
  • Swamp – marsh, bog, fen, or moor; will be partially frozen most or all of the year in arctic/sub-arctic climes
  • Desert – arid land; sandy in tropical/sub-tropical, barrens in temperate, or snowfield in arctic/sub-arctic
  • Plains – grassland, savannah, heath, or scrub; this is farmland in settled hexes, tundra in arctic
  • Forest – woodland; mixed deciduous/evergreen in temperate, conifers in sub-arctic, or jungle in tropical/sub-tropical
  • Hills – rocky ground, rough or broken land (up to 1,000′ above sea level)
  • Mountains – peaks, ridges, and mesas (1,001′ or more above sea level)

Assign a terrain type of your choosing to the sub-hex at the centre of the atlas hex. This defines the atlas hex’s primary terrain type. The rest of the sub-hexes are broken down as follows:

  • 18 whole hexes – assign 9 primary terrain, 6 secondary terrain, and 3 tertiary (or “wildcard”) terrain; distribute these as you see fit
  • 12 half-hexes – there are 2 half-hexes along each edge of the atlas hex; assign any non-wildcard terrain as desired

Terrain type designations are pretty straight-forward:

  • Primary (P) – the most prevalent terrain type in the atlas hex
  • Secondary (S) – the second-most common terrain relative to the primary type
  • Tertiary (T) – the third-most common terrain relative to the primary type
  • Wildcard (W) – highly uncommon, but possible, terrain relative to the primary type

Secondary, tertiary, and “wildcard” options for each terrain type are shown on the following table:

ATLAS HEX PRIMARY TERRAIN TYPE
Water
Swamp
Desert
Plains
Forest
Hills
Mountains
Water P W W W W W -
Swamp W P - W W - -
Desert W - P W - W W
Plains S [1] S T P [4] S T -
Forest T [2] T - S P [5] W [8] T [11]
Hills W - S [3] T T [6] P [9] S
Mountains - - W - W [7] S [10] P [12]
Footnotes 

  1. Treat as coastal (beach or scrub) if adjacent to water
  2. 66% light forest
  3. 33% rocky desert or high sand dunes
  4. Treat as farmland in settled hexes
  5. 33% heavy forest
  6. 66% forested hills
  7. 66% forested mountains
  8. 33% forested hills
  9. 20% canyon or fissure
  10. 40% chance of a pass
  11. 33% forested mountains
  12. 20% chance of a dominating peak; 10% chance of a mountain pass; 5% volcano

When all the sub-hexes are filled, you may move onto an adjacent atlas hex, whose primary terrain type is any valid terrain on the table above (i.e., primary, secondary, tertiary, or wildcard). If you need some polyhedral guidance, assign the following weights and roll 1d12:

d12 Result Adjacent Hex Terrain [1]
1-6 Primary
7-9 Secondary
10-11 Tertiary
12 Wildcard
Footnotes 

  1. Relative to the current hex’s primary terrain type

Example

Terrain assignment in Regional Hex

Terrain assignment in Atlas Hex

Let’s assume a temperate climate. I’ll assign “Plains” to the centre hex, which becomes the atlas hex’s primary terrain. According to the “Plains” column on the Terrain table, the remaining sub-hexes are assigned as:

  • Plains (P) – 9 hexes
  • Forest (S) – 6 hexes
  • Hills (T) – 3 hexes (alternatively, you could sprinkle up to 3 wildcard hexes: water, swamp, and desert)
  • Plains, Forest, or Hills – 12 half-hexes

I roll 1d12 for each of the six adjacent atlas hexes. Based on the primary terrain of “Plains” in the current hex, my results on the Adjacent Hex Terrain table are shown below:

Terrain assignment in adjacent hexes

Terrain assignment in adjacent hexes

  1. 1d12 = 4 (Primary = Plains)
  2. 1d12 = 11 (Tertiary = Hills)
  3. 1d12 = 9 (Secondary = Forest)
  4. 1d12 = 8 (Secondary = Forest)
  5. 1d12 = 5 (Primary = Plains)
  6. 1d12 = 8 (Secondary = Forest)

Using these primary terrain results, I can easily fill in the adjacent atlas hexes (cutting the distribution by 50% since only half of each adjacent atlas hex is shown). The image at right shows only the primary terrain assignments (based on the d12 results above) in the remaining atlas hexes on the map.

Scaling Up

The atlas hex on your map is 25 miles wide, which matches the hex scale on the Atlas template. When mapping on the atlas level, populate each hex with the primary terrain of each atlas hex on your sub-hex map.

However, the atlas template is very big, so I recommend that you transfer your sub-hex map to the Regional template first. This approach lets you fill in a Regional map rather quickly (there are roughly 7 sub-hex templates in one Regional map), and since this still represents a considerable amount of real estate, your setting should have plenty of space.

Either way, you can rather quickly expand your campaign using a series of sub-hex templates like the one you created above (all map scales noted in this post are located on our hex templates page).

Next Steps

The completed sub-hex template, scaled at 5 miles per individual hex, should be more than sufficient to get your campaign off to a good start (as a side note, if you’re incorporating the Mid-size Campaign approach, you’ve just created your map). In Part 2 of Hex-based Campaign Design, we’ll populate your hexes with some interesting things you can start building adventures around.

  1. October 21st, 2009 at 22:45 | #1

    Nice! I like this, I’ve been working on maps lately and this will help for sure.

  2. October 21st, 2009 at 22:56 | #2

    Thanks, kaeosdad. Be sure to tune in next week for Part 2!

  3. February 8th, 2010 at 14:16 | #3

    I saw your posts over at Hexographer and thought you did a great job. I’m using the hex mapping to beta test a board game I’m designing, but your posts are very informative for the sandbox Swords and Wizardry campaign I’m running. Thanks for posting!

  4. February 8th, 2010 at 16:28 | #4

    @Brenton Haerr : Thanks, Brenton. I checked out Wilderfast on your site, and the map looks cool. One thing I’m using Hexographer for is rapid campaign development – it’s a real timesaver and the maps come out looking great. Thanks again — I appreciate the links!

  5. June 12th, 2010 at 18:35 | #5

    Great post!

  6. November 29th, 2010 at 10:08 | #6

    This is an excellent article, and very useful. I wish you had included this (and part 2) in Chimera RPG 3.0 Basic, and hope that this material makes it into the Core Rules.

  7. November 29th, 2010 at 12:27 | #7

    @Da’ Vane : The Campaign Creation section borrows from this concept in a more distilled fashion (e.g., creating the map and Points of Interest). Rest assured, though, you’ll see this again, with improvements…

  8. James
    March 18th, 2011 at 08:14 | #8

    Hi Erin,

    I’m using your articles here in conjunction with Hexographer to experiment with world generation in a semi-random way. However, I’m a bit confused by the footnotes in terrain type table. For example – Footnote 2 says ’66% Light Forest’. Does that mean there’s a 66% chance of any given forest hex to be ‘Light’, or that 66% of the forest hexes in that Atlas Hex will be light? Similarly, footnote 12 – Does every individual hex with a mountain in it have a 20% chance of having a dominating peak, a 10% chance of a pass and a 5% chance of a volcano?

    I’m generally rolling for each individual hex, and 3 times for the mountain hexes, as I’m happy for that level of randomness atm, but I’m curious as to what you intended the footnotes to mean.

    Thanks for creating the hexographer templates and writing these articles btw, they’re a great help in providing a structure to work with!

  9. March 18th, 2011 at 09:33 | #9

    @James : Your first interpretation is correct–roll separately for each Regional hex. For example, if the Atlas Hex’s Primary Terrain is Water, then Forest is a Tertiary terrain type. Each of the 3 recommended forest hexes has a 66% chance of actually being “light forest.” Same with the mountains–in a Mountain Atlas Hex, each of the 9 suggested mountain hexes within it carries a 20% chance of dominating peak, 10% chance of a pass, and 5% chance of a volcano.

    Still, if you wanted to save time, there’s no reason you couldn’t go with your second interpretation. If you have 9 mountain hexes, there are 2 dominant peaks (9 * 20% = 1.8) and 1 pass (9 * 10% = 0.9); maybe (?) a single volcano for every 2 mountainous Atlas hexes (that still could be too many, so you’ll need to season to taste).

    BTW, I do have the makings of an Inspiration Pad Pro table to do the dice rolling for you. Any interest?

  10. James
    March 21st, 2011 at 16:01 | #10

    @Erin D. Smale
    I’d never heard of Inspiration Pad Pro.. Looks interesting! Sure I’d give that a go!

    Btw – the map I’ve generated (so far) is here: http://inkwellideas.com/hexographer_forum/index.php?topic=305.0. I’d be interested to see what you think given I’m (ab)using your method ;-)

  11. March 22nd, 2011 at 10:30 | #11

    @James : Inspiration Pad Pro is a free program for creating random tables (http://www.nbos.com/products/ipad/ipad.htm). I recreated the system above via IPP; still need to polish it up a bit for public consumption, but if you’re willing to “beta test,” email me privately (via Contact Us link above) and I’ll send them along.

    The map you created is good (I posted comments on the Hexographer forum). The ‘method’ above is just a guideline to get you started, and if it provided you with a foundation to build on and create around, then it’s done its job.

  12. James
    March 23rd, 2011 at 05:29 | #12

    I’ve downloaded Inspiration Pad Pro; it’s an interesting little app and I can definitely see the benefit to the time-starved GM! I’ll contact you directly and happily do some Beta testing for you (time permitting).

    Thanks for the comments on my map, I’ll be posting another revision of the map at some point!

  13. April 16th, 2011 at 18:20 | #13

    I take it you like to start from the bottom up. I prefer from the top down, that way I have a general idea as to how my world looks, and then can burrow down, as it were, into the particulars

  14. April 17th, 2011 at 14:16 | #14

    @Alan Kellogg Most of the time, I’m with you–top down so I know the general shape of the world and give context to a small area that I develop with detail.

    But for rapid sandbox development, this approach helps you get started quickly. And I find that the random stocking in part 2 gives lots of clues to help you expand when the PCs outgrow the original area.

  15. Alex
    January 11th, 2012 at 03:09 | #15

    Hello Erin, big thank you for your work, great guide. But can you say the rules of how to fill atlas hex. I mean, i have type of atlas hex, filled central hex in atlas hex, and what next? how should i fill other empty hex with my other not used hex for this atlas-hex? Is there any rule about what type of hex can be near other hex? Can i fill atlas hex by rounds from center hex? Im trying to automate it, not to do by myself.

  16. January 11th, 2012 at 21:45 | #16

    @Alex Hi Alex – thanks for checking this out. If you’re filling out a Regional map, you can fill the Atlas hexes via the large table in the “Assign Hex Terrain” section above. If you’re working on an Atlas template and need to fill in hexes, you can use the d12 method on the table just below that.

    I’ve worked out an Inspiration Pad Pro table to help you out. It’s not completely automated, but can at least help you figure out how to “populate” an Atlas hex using the guidelines above. Here’s the table: http://www.welshpiper.com/wip/_RegionMapTerrain.ipt

    It’s still in beta and subject to change, but unzip the file into the “Generators” folder of your IPP installation. When you open the table in IPP, choose the central Atlas hex type from the drop-down menu and the table will provide results for the rest of the hex, as well as the primary terrain for the 6 adjacent Atlas hexes.

    Let me know if this works out for you. Cheers!

  17. Alex
    January 12th, 2012 at 08:24 | #17

    @Erin D. Smale
    Hello Erin, thank you for reply. Ive tried IPP2 with RegionMapTerrain. And you know what, i got some issues with what IPP generates and what it should generate/ For example, in _RegionMapTerrain.ipt there is a rule:
    Table: GrasslandHex
    9:Grassland
    6:Forest
    3:Hills
    1:[@GrasslandWildcard]
    and IPP created next list:
    Forest
    Forest
    Forest
    Forest
    Forest
    Grassland
    Grassland
    Grassland
    Grassland
    Grassland
    Grassland
    Grassland
    Grassland
    Grassland
    Grassland
    Grassland
    Grassland
    Hills
    its 5*forests, 12*grasslands and 1*hills. But the rule said: 9*grassland,6*forest,3*hills and 1*wildcard.
    the question is: why so many grasslands IPP have generated? :)
    or may be its right and i cant get something? ^_^

  18. January 13th, 2012 at 21:21 | #18

    @Alex : The numbers you’re seeing in the IPP table don’t indicate number of hexes. Instead, they’re “weights” for each terrain type. Assuming a baseline of “1″ for wildcard, Hills occur 3 times as often, Forest 6 times as often, and Grassland 9 times as often. IOW, these numbers influence the random distribution. It’s not a straight interpretation of the tables in the article, but it’s a bit more interesting than stating that there’s always 9 primary, 6 secondary, and 3 tertiary terrain types in each Atlas hex. That said, the “weights” are based on the table above, so there is a correlation.

    If you want strict numbers of each terrain type, you should assign them manually. I think the IPP results give a bit more latitude, however. Hope this explanation helps. Cheers!

  19. Alex
    January 14th, 2012 at 15:33 | #19

    @Erin D. Smale
    Thank Erin, that explains all. Can you say please more about “correlation” for types? ^_^

  20. January 15th, 2012 at 11:26 | #20

    @Alex : Sure–if I understand what you’re asking, the Primary, Secondary, and Tertiary terrain types listed above are just the most likely “matches” for the terrain is the centre hex, while still allowing for variation. The correlation is somewhat artificial, in that I came up with the terrain type weights based on the number of vacant surrounding hexes.

    You could shift the weights in the IPP table, but you’d end up with a lower chance that the surrounding terrain matches the centre hex. IOW, the correlation I’ve assigned provides more gradual (and less abrupt) terrain change.

  21. Alex
    January 17th, 2012 at 02:39 | #21

    @Erin D. Smale
    Thank you Erin, i get it all. I’m trying to smooth algorithm of region hex to fill it.

  22. Todd
    January 26th, 2012 at 23:35 | #22

    I had a question regarding the Water, Swamp, and Desert Secondary hexes. According to the article, the Secondary hexes account for 6 of the full hexes and potentially all of the half hexes.

    What should be done for the entries that do not have a Secondary entry? This issue also causes an issue for the adjacent Atlas hex assignment. I’m guessing that you would use the Primary instead.

    BTW, excellent article!

  23. January 28th, 2012 at 11:11 | #23

    @Todd : I’m not sure I understand your question–all terrain types have a secondary entry. Or am I missing your point?

  24. Todd
    January 30th, 2012 at 15:19 | #24

    @Erin D. Smale
    Looking at it again, I see my issue. I was reading the grid from left to right, not top down. I was expecting the two to cross, but they are slightly different.

    For example:
    Top down
    Water = P, W, W, S, T, W, -

    Left to right
    Water = P, W, W, W, W, W, -

    Is there a reason for the difference?

  25. January 31st, 2012 at 19:51 | #25

    @Todd : Each column represents a primary terrain type for an Atlas hex and each row is just a terrain type; the intersection indicates frequency.

    I suppose I could have Primary, Secondary, Tertiary, Wildcard on the left-most column, but I thought this was cleaner.

    Sorry for the confusion. I’ve updated the labelling – hopefully this is clear.

  26. Todd
    January 31st, 2012 at 21:06 | #26

    @Erin D. Smale
    Thanks, that does help! Reading it the way I did was hard to figure out how a Water Hex would turn into land ;-)

  1. November 16th, 2009 at 21:25 | #1
  2. April 27th, 2010 at 14:19 | #2
  3. November 30th, 2010 at 05:23 | #3
  4. January 20th, 2011 at 01:55 | #4

s2Member®