World Map Generator Part 0 - Introduction
![]() |
|---|
| A world map generated in Godot using the FastNoiseLite library and a bunch of other things. |
|| Next
The Inspiration
One of my favorite parts about Rimworld is the very beginning. You generate a few colonists, plug in some settings, push a button, and whoosh, the game generates an entire world (or part of a world, depending on the settings you choose) for you. That's great on its own, but the thing that really pulls me in is what happens afterward: you can spin the globe and hover your mouse over specific spots to get detailed information about that part of the world. You can see the biome, the growing season, the annual rainfall, the general climate, what factions and creatures patrol the area, and more. When I start a new game of Rimworld, I generally spend at least an hour globetrotting, looking at all the land formations and making up an entire mythos around the new planet that I've birthed from the ether.
![]() |
|---|
| The Rimworld globe, complete with place names and settlement icons. |
Rimworld is, of course, not the first game to do this. Its inspiration, Dwarf Fortress, goes way deeper in a lot of ways and is built entirely around the idea of pseudo-random world, lore, and geography building. Survival games and roguelikes/lites are also fertile ground for procedurally-generated worlds, though those tend to be a bit less organic-feeling. What sets Rimworld apart for me is the detail. Not only are the landmasses and biomes procedurally generated, but so too are the place names, the factions, and the stats on each little square of the map you care to explore. The generated globe feels less like the result of an algorithm, and more like the result of eons of geological and anthropological history.
The Idea
I had a conversation with my partner recently where we pondered the concept of generating a set of biomes using only two variables. We were both frustrated by systems like Minecraft's, where biomes just kind of appear in semi-random places and don't have much to do with each other. In Minecraft, you could be fully in a Sahara-esque desert on one block, and then a lush forest in the very next block. That's not how it works in the real world.
Real landscapes blur the lines between one another: temperature and humidity gradually go up or down between points, plants and animals can appear in more than one location, and weather systems in one area greatly affect the conditions in its neighbor. If you were on a long road trip, staring out the window of your car, you might not notice when you cross the border between, say, Idaho and Washington. But if you fall asleep in Idaho and wake up in Washington, you'll absolutely be able to tell that something has changed.
My partner's idea for implementing this sort of gradual biome merging was much more technical and math-y than mine because they're way better at that kind of thinking than I am. They proposed that you could infer pretty much everything about a biome—including its elevation, climate, denizens, and general vibe—using a continuous function of humidity and temperature. This would also result in the kind of smooth blending between regions that you see in real life. While they went on to prove in Blender that you could, in fact, generate realistic-looking elevation from temperature and humidity, I started thinking about that Rimworld globe and how I could recreate it using my own set of tools.
That was the genesis of this project: a small map generation program using Godot, C#, and lots and lots of random noise. I did end up using temperature and humidity to control a large swath of the generation process, but we'll get to that later.
In the next post in this series, I'll show you how I set up the project, its general goals, and the basic setup for the tool in Godot.
|| Next
The References
Much like Rimworld was not the first game to do this kind of in-depth procedural world generation, I am far from the first person to generate maps using noise. I'm probably not even the first person to do it using Godot. I used the following blog posts and articles as references and learning materials for this project, so I'd be remiss if I didn't list them here. I'll also be sure to give specific ones a shout-out when we encounter them in future posts. Check these links out if you want to learn more about any of the topics covered in this series.
Terrain Generation with Noise
- Playing with Perlin Noise: Generating Realistic Archipelagos by Yvan Scher
- Mountains, Cliffs, and Caves: A Comprehensive Guide to Using Perlin Noise for Procedural Generation by James Wilkins
- The Mountains of Madness - Interactive Terrain Generation by Aman Priyanshu
- Volcanic Map Generation Step by Step by Alex at TimeToCode
Biome Classification Criteria
- Wikipedia article on Holdridge Life Zones
- Wikipedia article on Biomes, including the Whittaker plot I initially used as my basis.
- Biome plot I found from this Reddit post in r/worldbuilding
Algorithms and Programming
- (single point Breadth-First Search algorithm) Flow Field Pathfinding for Tower Defense by Amit Patel / Red Blob Games
- Breadth First Search: Multiple Start Points by Amit Patel / Red Blob Games

