Mosaic Worlds, Generation and Interactions

 Note: I started writing this in March 2022. I procrastinated.

This post was originally inspired by one of my experimental (and defunct!) pamphlets Blockcrawl, where the referee generates a random world using Tetris-style permutations of blocks.

It occurred to me that it wouldn't be difficult to switch to using hexes instead of squares. Moreover, with just four hexes in a single area, it wouldn't be difficult to make interesting areas with specific features in advance of a game, rather than vague areas defined only by their biomes. These areas could then be reused and slotted into any world, being small and self-contained modules for adventuring.

World Mosaics

A single module is made up of four hexes that can be arranged in four different ways, as shown below. There are four hexes per module precisely because they can be arranged in more ways than just three hexes, within an area of seven hexes. There are even more combinations of four hexes in this space than there would be for five, unless you were to expand the boundaries of possible arrangements and thus make them more complicated and take up more space.



These modules can be arranged in any direction. You could even roll d6 if desired. The important part is that since they are shaped irregularly but with limitations of space, they can easily be slotted into one another. They can therefore serve as puzzle pieces of an incomplete world. You could quickly produce a region map prior to a game with just a couple of modules, or randomly select a module to be slotted into a procedurally generated world as players walk into undetermined areas. If a shape wouldn't fit, fudge it or justify it otherwise. There are so few hexes in a single module that the placement of one hex is not the most important thing except to create interesting positions of modules relative to each other.

There are a variety of quick, intuitive functions for procedural world generation this method proffers. You can have sequential module placements, where the placement of one module on the roll of a die means that on the next roll, a related module will be placed. Rather than having flow charts of explored areas, you can also just have a set of related modules that can be come across in random order. This can be done with a deck of cards, so that a card mapped to a placed module can be discarded from the deck of yet-to-be-discovered modules. Each suit of cards can correspond to one of the four module shapes.

Mosaic Modules

While pitching this article, one of my friends recommended another article by blogger Chicagowiz who came up with the "Just Three Hexes" method for easily creating a small region to start a campaign [1]. One hex contains a town to serve as a home base for the players, and the other three hexes contain their own locales for adventuring alongside serving as obstacles between the other hexes. It's the interplay between individual hexes that makes the region as a whole interesting, and the home town allows the region to become a jumping-off point for an adventure. It's an all-in-one package!

In my own notes prior to reading Chicagowiz's article, I figured that my modules would have almost a similar structure except intended to be both self-contained and combinable. I envisioned each module as having a settlement in the center, both as a spot for the party to rest each day while in the area and also for players to stop by while traveling (since there is, approximately, one settlement between each day of travel [2]). This does not have to be the case, especially perhaps for more frontier modules where you cannot expect to find settlements or other people at all nearby. Regardless, having just four hexes per module makes it easy to key each hex with a view towards a specific environment and local history. If you imagine a region too large to be confined to four hexes, split it up into two modules whose relative locations in the game-world are by extension not predetermined! This makes the game-world as a whole more unpredictable and dynamic, by how modules in combination will lead to different and unanticipated interactions between them and the players.

Using some concepts I had previously written down for little hex adventures, I'm going to consolidate them into bite-sized modules of four hexes each. I think individual hexes would need more prep, if only for worthwhile dungeon exploration, but you can easily pull from existing dungeon modules etc. Below is from a campaign post I'll republish with more notes and context next week.

  1. The Town: Kind of depressing. You can buy tunneling and outdoorsy supplies, at least. There’s an underground (figurative) sword show in the basement (literal) of the tavern; payments are made in bouillon.
  2. The Tunnels: The bitkojn mines, the glaber halls, and the worm holes are interconnected like a royal family tree. The surface looks like swiss cheese, so don’t worry about which hole you go into.
  3. The Temple: A decrepit temple dedicated to Letun, abandoned since the property was bought by the mining company. Probably full of useless gold and dormant eggs.
  4. The Tulips: An outdoor marketplace in a tulip field. There’s a soup convention taking place, where the winner of the contest receives a title to land thought to contain 1,000 pounds of bitkojn.

You can also use anti-canon techniques like world anchors and d666 oracle tables to populate modules and individual hexes, or even make such tables specific to individual modules [3] [4]!

Random Module Population

I will be referring to my post on D&D economics for hex tiles [5]. If the center of the module has a settlement, then you need only roll 1-6 for how many tithings (tens of homesteads) there are on the surrounding hexes. This makes up a roll for 3-18 in total, also corresponding to the number of tithings or tithing-equivalents (not rural homesteads, but still families nonetheless) who live in the center urban tile. Suppose you roll 3, 4, and 2 for how many tithings there are on the surrounding hexes. This is a total of 9, which we can suppose is how many tithing-equivalents there are in the city. Assuming each tithing represents 10 families of 4, we could say there are 360 people living in the city; this is multiplied according to agricultural productivity, as per [5], but at that point you shouldn't worry about it.

Since each city basically has a 3-18 score representing its population, we can treat this score similar to how you might an ability score. Does the city have a carpenter? How about a mason? Roll and modify the result based on the city’s population score! A carpenter might require a score of 10, and a mason a score of 15. A score of 9-12 is average but, as agriculture develops, the number of people living in cities multiplies in proportion to productivity, so roll the die that many extra times if you want to get that crazy about it.

  • 3-5: -2
  • 6-8: -1
  • 9-12: 0
  • 13-15: +1
  • 16-18: +2

Using modern modifiers (as in 5E, ranging from -4 to +5) might be more flexible.

When you are outside the city and want to find a family that will host you for a night, you could roll an x-in-6 where x is how many tithings there are on the hex.

This works best for borderland settlements rather than totally unsettled frontier land or a highly developed country. In the former case, you might roll 1-6 for individual hexes, or roll selectively if one or more hexes are supposed to be totally desolate. The latter case requires a whole fleshed out map, I’d think, rather than anything made procedurally. It’s a benefit of the borderland/frontier setting that we can assume people are spread out and isolated from each other, and thus we can combine disparate modules without worrying about whether it’s all cohesive and consistent. It's like the town of Nowhere from Courage the Cowardly Dog, or like Nightvale, except there's an infinite number of them and they all exist within a day's walk from each other. Would that be fucked up or what?

Fantasy Populations

If a hex is supposed to be populated by non-humans such as the typical dwarves, elves, goblins, orcs, et cetera, then roll 1-6 for how many families of that population live in that hex. If a module is populated by such peoples, then do the same for all hexes and treat the middle as a city of that population. If a module is populated by two or more conflicting groups, the city might belong to the faction that has the greatest rural population.

You might use the tables below to randomly determine the species of the sentient population living on a hex in a module (remember you're also rolling d6 for population in tithings). Since fantasy races tend to be naturally antagonistic, for better or for worse, you can think of this as also generating factional conflicts in an area.

Going Gary mode.

1. Clear

  1. Humans
  2. Humans
  3. Halflings
  4. Halflings
  5. Orcs
  6. Orcs

2. Woods

  1. Humans
  2. Humans
  3. Elves
  4. Elves
  5. Goblins
  6. Goblins

3. Mountains

  1. Humans
  2. Humans
  3. Goblins
  4. Goblins
  5. Dwarves
  6. Dwarves

4. Swamp

  1. Humans
  2. Humans
  3. Orcs
  4. Orcs
  5. Elves
  6. Elves

5. Desert (Mars)

  1. Humans
  2. Humans
  3. (Green Martians)
  4. (Red Martians)
  5. (White Martians)
  6. (Yellow Martians)

6. Cities

Roll d6 where each result is indexed to one of the six adjacent tiles. 


The hexes above are assumed to be 6 miles wide, such that it takes four hours to travel from hex to hex (if four hours is your typical time-unit for hex crawls). This means that modules plug into most rulesets for hex crawls or traveling throughout a day. It's simple.

It also means we can, if we choose, add a layer of abstraction: modules themselves can be treated as the unit of distance for travel over longer periods of time. Instead of considering hexes which take 4 hours to traverse or some multiple of that, we can consider modules which take 1 day to traverse or some multiple of that. For example, modules with clear terrain in nice conditions for travel might take just 1 day to travel; this means it costs 1 ration per traveler, and 1 encounter check is made. In worse conditions, because of terrain or because of weather, travel might take 2 to 3 days; this means travel costs that many rations per person and that many encounter checks for the party.

I think this is a nice compromise between hex crawls and point crawls, taking inspiration from Nick LS Whelan's flux space [6]. To avoid too much granularity in traveling through hexes, traveling through modules fast-forwards the process and allows the referee to describe the region in more broad terms while also bringing up landmarks of note as they are passed on the map. What I also like is that, like in OD&D, one turn equals one exhaustion of the resource; you don't have to worry about remembering to set time aside to eat meals etc., because having those meals set aside is the precondition of taking a travel action to begin with (or, if you lose more than expected by chance, you now need to spend some time recovering your resources).

Encounter rolls, rather than determining the likelihood of an encounter, can instead indicate the time at which an encounter certainly occurs each day. Again, if the day is in 4-hour chunks, that means there's 6 chunks per day. Something like (d6):

  1. 08 AM to 12 PM
  2. 12 PM to 04 PM
  3. 04 PM to 08 PM
  4. 08 PM to 12 AM
  5. 12 AM to 04 AM
  6. 04 AM to 08 AM

Between the hours of 8 PM and 8 AM (i.e. result of 4-6), at least some of the party members are likely to be asleep. Only those on watch will be awake and alert to any threat (this is where the word 'watch' originates, referring to shifts of keeping watch rather than necessarily to many-hour segments of time). Since, I think, any encounter at night time is much more likely to be hostile than one during day time--why would someone approach a bunch of sleeping people in the wilderness?--we can further abstract this roll as basically a 50-50 chance of a hostile encounter per day, with watch-shifts serving as a sort of marching order for who has to deal with it first. That is, if an encounter happens while I'm the one keeping watch, it becomes my job to do something about it. Daytime encounters can then be mostly ignored unless they pose interesting interactions, or if the area is especially dangerous.

Watch-keeping already basically serves as worker-placement, but abstract day movement also facilitates actions made throughout a day without the hassle of hour-by-hour time management. If your character is hunting while the party is traveling, they can do that; if they're foraging instead, that too; and so on. Everyone can roll a d6 or whatever to resolve their action, again as per OD&D.


We can treat any hex as having one unit of battle per tithing, barring any drafting or previous losses. Mass combat can be handled on the scale of 4-hour turns, during which a unit can move from one hex to another, or can participate in a battle. During a battle, simply roll hit dice for each unit involved in the exchange and match highest opposing pairs possible, such that the lower of the pair is the loser of the two. Units that have moved that turn cannot attack, and they defend at half capacity. For example, suppose elves roll to defend {4, 2, 5} against goblins who roll {3, 4, 2, 3}.

  • Elf 5 vs Goblin 4
  • Elf 4 vs Goblin 3
  • Elf 2 vs Goblin 3
  • Goblin 2 leftover

The goblins win out on one of the exchanges, but the elves win out on two. This means the elves take only one casualty, but the goblins take two.

These are straight up the rules from Risk, albeit without the restriction that attackers can only roll 1-3 dice and defenders 1-2, or that the attacker must have roll one less die than units on the source territory. These rules probably make sense to keep if you remember them, since it'd make sense (1) to limit the amount of total dice rolled and (2) to allow the attacker to move a free unit into the conquered space, respectively. I don't like remembering rules, though.

A battle between two module regions can be considered as taking a downtime turn (if it makes sense to 'plug in' the skirmish with the timescale you use for downtime).


I think that modular regions would go a long way in quickly putting together a campaign world with interconnected bits, and with a view to facilitating long-term play as players interact with regional and interregional factions and participate in events or conflicts larger than any individual character. This is all more just me spitballing than describing anything tried and tested, but I think it's a mindset I'd like to approach campaign setup from now on (especially since it would mean me having a folder of four-hex regions, the same way you might have a folder of one-page dungeons).


[2] Assuming hexes that are each six miles apart.






Popular posts from this blog