Making a Custom Weather System

For the tabletop RPG Forbidden Lands

The “Book of Beasts” has a weather system for The tabletop RPG “Forbidden Lands”. It didn’t fill my needs, so I made my own.

Photograph of a book titled Forbidden Lands, Book of Beasts
Forbidden Lands, Book of Beasts.

This post goes through my journey of creating this weather system. If you want to learn how it works and use it, download the system.

What do I want to change?

These are the things I want to change about the official weather system.

It feels too random

You roll a six sided dice for the sky at the beginning of every day. A 1 means clear skies, a 5 means light rain, and a 6 means heavy rain. Numbers 2 to 4 has “none”, which I guess means it’s partially cloudy or cloudy.

With a 1/3 chance of rainfall, the weather often changes between sunshine and rain and cloudy and rain, etc. It feels random.

It feels too predictable

In the official system you roll new weather every morning. This means the weather is the same for an entire day. It couldn’t start clear and end with rain for instance. It’s too predictable.

It rains too much

There is a 1/3 probability of rain, and half of that is probability of heavy rain. That means on average more than one day of heavy rain every week. I feel this makes the game too punishing, and less believable.

Unbelievable weather conditions

It is possible to get heavy rain + storm winds + hot weather. That doesn’t make sense to me because I have never experienced it, and I wouldn’t know how to describe it as a GM.

Gathering data

Before thinking about how the system should work, I set out to gather weather data to base it on. I felt like having the data would help me build the system.

A map of a part of Europe, with a pin in Växjö, Sweden
Växjö’s location. Copyright OpenStreetMap contributors.

I interpret the “Ravenland” setting as Scandinavian. So I used historical weather data for the city of Växjö, made available for download by the Swedish Meteorological and Hydrological Institute (SMHI).

I chose Växjö because it’s..

This is the data I used:

I downloaded these from SMHI as .csv files which I opened in LibreOffice Calc. There I made calculations to learn how often different kinds of weather happens.

Interpreting the data

I used the same three categories as the official system.

I looked up what words SMHI themselves use to describe different amounts of rainfall and wind. Coming up with my own threshold values would be an entire project on its own.


The sky represents what you see when looking up: How many clouds are there? How much is it raining? In the game this affects LEAD THE WAY rolls. These are the probabilities I found:

A bar chart titled Real cloud cover probabilities with these values: Clear 15%, partly cloudy 42%, cloudy 43%
Real cloud cover probabilities.

The rain data says that there is some rain 13% of the time. If I subtract that from the probability of “cloudy”, I can combine it to the previous probabilities, giving me this:

A bar chart titled Real sky probabilities with these values: Clear 15%, partly cloudy 42%, cloudy 30%, rain 13%, deluge less than 1%
Real sky probabilities.

The official system does not have “partly cloudy” and “cloudy”. Instead it’s simply “none”. I prefer having more information to go on when describing the weather, so I included these two states, even though they don’t have any gameplay impact.


This is how fast the wind blows. In the game this affects MAKE CAMP rolls.

This is the data I ended up with:

A chart titled Real wind probabilities in meters per second
Real wind probabilities.

It seems like very strong and very weak winds happen less than 5% of the time, and otherwise the wind is weak or moderate about half the time, depending on if you’re looking at the maximum or average wind.

I find this data pretty hard to use. Wind changes speed often, and I’m not sure if the maximum speed or the average speed matters more. In the final system I based my probabilities on the average wind speed because I liked that it made moderate winds less common.


I couldn’t come up with how to use the data for anything useful. So instead I made up a temperature distribution, and paired them with the combinations of sky and wind that makes sense.

So a clear day without wind has a high temperature, and a rainstorm has a low temperature.

In the game, a high or low temperature gives the COLD or THIRSTY status effects in certain situations.

How do I randomize it?

The official system uses one six-sided dice (D6) per weather aspect: wind, sky, and temperature. This is fast and easy.

I want my system to be fast and easy too, but I also want it to feel believable. These two requirements go against each other. If it’s too easy, there isn’t enough input into the system to create something believable, and if it’s too complex it becomes annoying to use.

First I tried tweaking the official system by adding another dice roll if you ended up on rain. My tweaks made it more believable, but it also added some complexity. I want a solution with the same or lower complexity, and more believability. I wanted a win-win, not a win-loss.

So I tried using a deck of cards instead. I think this would be a good solution if I had cards with the weather printed on each card. I didn’t like the idea of requiring making or ordering a deck of cards however, and I couldn’t make a weather table that was easy to read. So I abandoned this idea because it was too complex to use.

The solution I ended up with was rolling a “D66”. This means rolling two D6, but keeping track of which is which, for instance having one white and one red dice. This gives 36 different possible outcomes. 36 is enough outcomes to give a lot of variety, while keeping the table small.

So I make a table with 36 rows, and each row has a set of sky, wind, and temperature. This gives us:

I think this is at least as easy as the official system which goes like this:

Since each weather condition is predefined, I can avoid unbelievable weather such as a warm rainstorm. This makes it more believable than the official system. I found the win-win I was looking for!

The big drawback of this solution is that it has fewer possible combinations. For instance, since there’s a less than 1% chance of deluge in real life, I’ll map this to one of the outcomes, giving it a 1/36 chance, or 3%. However, this means the table can’t have a deluge with no wind, and a deluge with lots of wind, because I only have one deluge in the table.

I make this tradeoff to keep the system simple. I don’t think it’ll be noticeable by the players in the game, and the game master can always spice things up if they get repetitive.

Creating the table

This is a matter of mapping each aspect of the weather data to 36 possibilities.

Comparing real probabilities and dice probabilities for the sky.
Comparing real probabilities and dice probabilities for the sky.

Then I put the mappings into a table, and compress duplicate entries to make it easier to read.

The final table.
The final table.

That’s it, I now have an easy to use system that produces believable weather.

I wanted to take it further, so I added two more aspects to the system.

Removing the daily schedule

In the official system, weather changes each morning. I want it to be less predictable.

Forbidden Lands splits days up into Quarter Days. I found the sweet spot to be rolling a D6, and the result is the number of Quarter Days the weather stays.

I keep track of this by keeping the rolled dice, and each Quarter Day I reduce it by one. When it hits zero, I roll for new weather.

Believable temperature

I made a temperature scale going from one to five. When temperature is at 1 or 5, players risk getting COLD or THIRSTY according to the same rules as in the official system.

Left: What temperature each grade roughly feels like. Right: Temperature grade per season.
Left: What temperature each grade roughly feels like. Right: Temperature grade per season.

To give a better understanding of the temperature scale, each point in the scale is roughly mapped to a real world temperature.

This temperature scale doesn’t make sense on a technical level. For instance, a cold summer night won’t reach freezing temperatures. But my thought process is that if the weather is “cold”, that’s because it’s windy or rainy. And at night it can get quite cold, maybe so cold that it almost feels like zero degrees with enough rain and/or wind?

Maybe not, but I’m fine with this bit of weirdness, because the system only needs to make the time of year and time of day impact the temperatures in a believable way. I think it does.

This simple temperature system is the final puzzle piece that brings it all together.


Roll three dice to determine these aspects of the weather:

The temperature is decided by the weather table, the time of day, and time of year.

Download the system