Fantasy Map Generator: Random World Maps With Towns
Pick a continent, an archipelago or a single island, set the climate and how much of the map is land, and get a fantasy map with coastlines, biomes, rivers and 6 to 12 named towns. Download it as a parchment, colored biome or game minimap PNG at 1024 or 2048 pixels wide, plus a grayscale heightmap you can load into a game engine as terrain.
How to use it
- Choose Continent, Archipelago or Single island and a size of Region, Kingdom or World, then press Next.
- Choose a climate, drag the Land slider to set how much of the map is land, keep or untick Rivers, and press Next.
- Choose Parchment, Colored biomes or Game minimap and press Generate map.
- Press Reroll seed for a new map with the same settings, or switch the style under the map without changing it.
- Pick 1024 or 2048, then press Download PNG, Download heightmap PNG or Download heightmap .r16, or press Copy Ziva prompt to turn the map into an overworld scene.
How the map is generated
The land starts as fractal noise: seven layers of seeded Perlin noise, each twice as detailed and half as strong as the one before, with a slow noise field bending the coordinates so coastlines do not look like stretched blobs. A falloff then decides where land may rise: a wide square for a continent, a circle for a single island, and almost none for an archipelago, whose noise runs at nearly twice the frequency so it breaks into many islands.
Sea level is not a fixed height. The generator sorts every height sample and puts the coast exactly where your land percentage says, so 40% land always means 40% land. Biomes come from height above the sea, a separate moisture noise and a temperature that drops toward the top of the map (toward both poles on a World map) and with altitude, much like a Whittaker biome chart: dry and hot becomes desert, wet and warm becomes jungle, cold becomes tundra and pine forest.
Rivers come from a drainage pass on a 256-wide grid. A priority flood from the sea gives every land cell a path downhill to the coast, rain is added up along those paths, and every cell that collects enough water becomes river, drawn wider the more it carries. Towns go where a settlement makes sense: near the coast or a river, below the mountains, away from deserts and marshes, and spread out. The largest is the city; the names come from the same word lists as the fantasy town name generator, matched to the climate.
Using the heightmap in Godot and Terrain3D
The heightmap is black at the deepest sea floor and white at the highest peak, with the coast always at 20% of the range (gray 51), so you can put a water plane at the same height for every map. Land heights follow the same curve as the map colors, so lowlands, hills and peaks line up with what you see.
In Godot 4.3 or newer you can load the PNG as collision terrain: Image.load_from_file() reads it, image.convert(Image.FORMAT_R8) makes it a single channel, and HeightMapShape3D.update_map_data_from_image(image, height_min, height_max) fills the shape, resizing it to the image. The PNG has 8 bits per pixel, and the Godot docs warn that 8-bit heightmaps give stepped, terraced terrain, so keep the height range modest or smooth it.
For the Terrain3D add-on, download the .r16 file instead. Its documentation recommends exr or r16 for heightmaps because Godot only reads 8-bit PNGs. The .r16 is raw 16-bit little-endian heights with no header, so the importer needs the height range and, for non-square maps, the dimensions, which are in the file name (for example 1024x512).
Frequently asked questions
Is this fantasy map generator free?
How is this different from Azgaar's Fantasy Map Generator?
Can I use the map as a heightmap for 3D terrain?
Why are some town names repeated across maps?
What sizes can I download?
More free game dev tools
- Dungeon Generator: Seeded roguelike dungeon maps with a Godot TileMapLayer script export.
- Fantasy Town Name Generator: Fantasy villages, towns and cities, each with a story hook.
- Lore Generator: A creation myth, factions, timeline and quest-hook legends for your game world.