This is a companion piece to my previous article, A “Realistic Enough for Fantasy” Calendar, but it also stands on its own. If you want to combine a fantasy calendar with randomly generated weather, you may enjoy them both.

For my Bleakstone hex crawl, weather and the calendar became connected when I ran across the idea of pre-generating a year’s worth of random weather in advance. That post, which is fantastic, included enough Excel code in the comments to get me rolling.

This sounded like a slick way to handle weather and a fun way to spend a few hours, so I ordered a copy of Dragon Magazine #137, grabbed my GameScience dice for that old-school feel, made some weather. (Dragon 137 isn’t expensive — I paid $7 for my copy on Amazon, including shipping. It was worth it.)

Download my Excel calendar

If you just want the payoff, here it is: Download the Bleakstone calendar with a year of random weather (Excel). In Dragon 137 terms, Bleakstone is a warm and rainy coastal climate (like much of Western Europe), and I treated the whole 27,000 square mile starting map as one zone rather than making weather for the hills, the forests, etc. Unless that’s a perfect fit for your game, you’ll probably want the naked calendar instead: Download the Bleakstone calendar without weather (Excel). I hope it’s useful to you!

Why a year?

I wanted a year of semi-realistic weather so that I wouldn’t ignore weather but also wouldn’t be tempted to exert agency through it. I wanted it to be like random encounters: My creativity goes into the process up front, and what happens in play depends on the dice. But there are a few too many die rolls involved to do it day-by-day during play, and having a year of weather means the PCs can start play in any month; those factors clinched it for me.

It took me about 20 minutes per month at first, and I was down to 10 minutes a month by the end — call it three hours overall.

Calendar elements

There are lots of options out there for generating weather for fantasy games, many of which I quite liked. But a lot of them — like the one in the excellent AD&D 1e Wilderness Survival Guide, or this excellent Greyhawk calendar with weather for the Pale — went into too much detail for my tastes. If I ever need to know or care how many inches of snow were dropped by a storm, I’ll assess the situation and roll a die. Ditto with wind direction and a host of other stuff that didn’t seem too likely to come up, or which, should it come up, would be easy enough to sort out on the fly.

What I did care about, though, was making the weather “realistic enough for fantasy,” like my calendar, and having enough details that I could accurately assess how it would impact the PCs and be able to describe it in an evocative way to enhance immersion.

The Dragon 137 article is perfect for that level of detail. It succinctly explains how to figure out the climate in your selected region, what that climate is like, and how to generate weather for it. I pretty much followed the article and everything went well. I did select some elements to worry about and ignore others, though, and that process might be useful to hear about.

I chose to generate the following:

  • Average daily temperature
  • Precipitation
  • Wind strength
  • Cloud cover

Knowing the average temperature, I can add or subtract 10 degrees and get a “good enough” number for the hottest part of the day and the coldest part of the night, if it matters. Precipitation will matter a lot for a hex crawl, so that was an obvious element to include. Wind strength is mostly for flavor unless it’s extreme, and cloud cover is almost entirely flavor. But that flavor is important because, I hope, it will help Bleakstone feel more real.

I also elected to treat all of the Bleakstone starting map — 27,000 square miles, about 10% larger than West Virginia — as a single zone for climate purposes. By the book (well, magazine), I should have created separate weather charts for different types of terrain. That’s way too much work when I can just say that the weather on the calendar is the weather wherever the PCs are, and ad lib as needed.

Rolling the bones

I won’t go into what the article covers here; it’s too long and well worth a few bucks to buy your own copy. Instead I’ll go into the shortcuts I took and things I added to the process. (This part won’t make much sense without referencing the article and my Excel calendar.) The code below either came straight from or started with code in the comments on the post I linked to earlier.

The biggest shortcut I took was using Excel’s RANDBETWEEN function to generate random number from 1-100 to determine whether there was precipitation on a given day. Like so:


Put that in a cell next to the calendar, copy and paste it next to the other 29 days of the month, and you know if there’s rain/snow. For a warm and rainy climate, it’s a flat 40% chance per day year-round. Some of the other climates are a bit more hinky, with seasonal variations.

I’m not an Excel expert, and I couldn’t figure out how to use it to accurately randomize daily temperature for this climate. For warm and rainy, there’s a seasonal high, a seasonal low, and a 50/50 chance it will fall into one of two broad middle bands. That seemed to be one too many for Excel’s IF function, so I squished the middle bands into one result and used nested IF functions to generate temperatures.

Here’s an example using winter in Bleakstone, which per the article should include four temperature options based on a d100 roll: 1-5 = 10 F, 6-50 = 25-32 F, 51-95 = 33-45 F, 96-100 = 50 F. I couldn’t make that fourth element work, so I narrowed it down to three options: 1-5 = 10 F, 6-95 = 25-45 F, 96-100 = 50 F. That worked for me, and looked like this in Excel:


For everything else, I couldn’t be arsed to try and figure out the Excel code to make the rolls for me — and I wanted to roll my dice. So I did, and it was fun.

Per the Dragon article, wind and clouds are both contingent on precipitation. I wanted a few windy and/or cloudy days without rain/snow, so I added two small steps to my rolling process for each month:

  • Roll d3 for the number of windy days without precipitation, d8 for wind speed on those days, and d30 to determine the day(s)
  • Roll d3 for the number of cloudy days without precipitation, d3 for cloud type, and d30 to determine the day(s)

That fit how I envisioned Bleakstone in my head: kind of like Britain, often grey and overcast, with a foggy, haunted moor at its heart.

Massage as necessary

Once I had a full year of weather, I went through my calendar and looked for obvious problems and things that needed a bit of alteration to make sense:

  • Winter days above freezing with snowfall. That’s not impossible, but it shouldn’t be too common.
  • Days with incredibly bad weather alternating with clear, cloudless days. I usually just clumped the bad weather.
  • Bad weather not preceded by a cloudy day. I added random cloud cover to the day before most storms.
  • Weird patterns like 30/40/30/50/30/50 for temperature. I changed the numbers that didn’t make sense.
  • Transitions between seasons. Because seasons use different random tables for their weather in this climate, sometimes there would be jarring temperature changes from day 30 of one month to day 1 of the next.
  • Anything else that looked off. I didn’t “fix” things like horribly inconvenient week-long storms, but if something looked patently unrealistic I tweaked it.

And that’s it! This was a surprisngly relaxing way to spend three hours, and I like how it turned out. Rolling dice was fun, I got to enjoy using a print issue of Dragon (man, do I miss Dragon being in print!), and I wound up with a nifty tool that should prove useful in my hex crawl.

If you’re inspired to try this, or if you tweak the system (or use a completely different system), I’d love to hear about it in the comments.