I am looking for a tool that can be used to create worlds with a realistic (= physically plausible) climate and surface given general terrain shape, or can at least assist in such a task.

My ideal workflow would be to provide the following data as input:

  • World terrain shape (perhaps something like a height field)
  • Sea level and perhaps other large bodies of water
  • General planet & atmosphere properties

The output would be a distribution of terrain types such as deserts (hot and icy) and rivers, with forests or plains being a bonus. Some general climate or weather maps would be welcome as well.

Of course, tools which follow the same idea but with a slightly different set of inputs/outputs are fine too.

It wouldn't have to be production quality; incomplete functionality or semi-automatic operation (i.e. user assistance required) is perfectly acceptable. It looks like something which would make a great bachelor/master thesis topic, so academic code is OK.

I am not really restricted to a specific operating system (that's what virtual machines and Live CDs are for). My primary system is Windows, so support for that is a bonus, but definitely not required.


2 Answers 2


Along your requirements we can generate a realistic planet starting from:

  • Height field
  • Water Table
  • Chemical Ratios and Other Coefficients

GIMP/Photoshop can actually pull off every necessary transformation of that data set using built-in filters, if your willing to give up accuracy a little bit. Just think out the connections you want to model. The one's it can't model, you could script in or use other software (one example being measuring insolation. I don't know of a way in standard GIMP to make a shadow map from a height map. QGIS can automatically do this for you though).

TimB's great series of questions on world-building will probably end up covering more than you care to model but:

  • Height Map: This give you pretty much everything you need. Especially if it's filled out with erosion channels for rivers, fault-lines, and a water table.
  • Heat Map: Necessary but difficult if you wan't it coupled with everything tightly.
  • Shadow Map: Your going to need it for the heat.
  • Water Table/Moisture Map: This is going to drive fertility, erosion, rain, a lot.
  • Wind Map: This is actually an output of the other maps mixed together.
  • Soil Map: type, thickness, etc. These are important for pollution and moisture and other things.

In general gaussian blur is from dispersion and bleed effects (its the solution to heat.)

Gradients are used to set up constants (insolation, etc.)

Averaging and blurring can mix multiple season and years into one overall climate despite periodic flux.

Smearing in a direction (NOT directional blur because that goes in front of the mountain as well) can give you rain shadow effects.

A Dijkstra Map/Distance Transform/Grassfire/Eikonal Solution/etc. can get odd things like distance around a mountain or distance to the nearest set of _____.

I'm assuming we already have a height map. If we don't then Voronoi Regions/Stained Glass/Mural/Cobblestone Effects give us segmented regions. Actual basins are simply Voronoi regions mapped to mountain ranges and fractally nested inside each other. To get the crinkly look from actual plate movement you'd need Distortion/Displacement/Glass Maps.

Primary rain erosion can be modeled by throwing random noise scaled by moisture intensity, etc.

River carving and a whole mess of other things can be modeled using the first derivatives of your maps (which is the gradient).


QGIS was mentioned and goes with GRASS GIS and a lot of other open-source GIS. It doesn't do a whole lot along these lines but it can be interfaced with R. So there's probably a program out there for everything you can think of and some you can't.

If you're not in the mood to code something from scratch but know how to run a compiler you can try doing searches for Fortran, Astrophysics, and Geo-etc. as most of the physics have remained the same, so all the good programs are old University code.

Blender and Rhino (and Houdini?) can be used in a similar way to GIMP/Photoshop but to greater effect. (We drop some error as we move from a flat representation to a globe. We can also actually just outright do some things like place the sun and model an elliptic orbit).

EdGCM was apparently developed as an educational but full functional climate-modelling tool by NASA (it supposedly also doesn't kill your computer like some other newer climate-modelling software).

Gocad looks amazing although I haven't tried it.

  • 1
    $\begingroup$ Short-story is: I've been down this road before and have never been satisfied with anything (by-hand/by-software/by-special-purpose-stuff), so I'm now in the roll-your-own camp. If you don't code that translates into a lot of tedious Photo-shopping. Let's see if someone has a good solution... $\endgroup$
    – Black
    Commented Oct 10, 2014 at 12:52

I found something similar to what you're looking for, here.

You have to input a grayscale heightmap, input height and width in pixels in the url variables and you get the biome map. Also, it lets you change three variables:

  • Water height relative to the grayscale (black = 0 = lowest point, white = 1 = highest point)
  • Equator speed (speed at which the planet rotates)
  • Solar irradiance (energy that you get from the Sun per square meter) at the top of the atmosphere.

For example, I generated this white noise grayscale heightmap png, 1024x1024px from https://heightmap-generator.com/ :

white noise grayscale heightmap png

You enter your heightmap into a modified URL specifying height and width of the image (in my example I added ?width=1024&height=1024) and the sim runs and calculates the biomes based on the three variables mentioned before:

biome map png

And I think it's pretty neat, huh?

  • $\begingroup$ That sounds interesting. However, I couldn't find a link to the site itself in your question, can you add that? $\endgroup$ Commented Jan 16 at 9:45
  • $\begingroup$ Whoops, I thought I added it. Let me edit the answer to include it. $\endgroup$ Commented Mar 7 at 12:06
  • $\begingroup$ Great, thank you. I will check it out as soon as I can. $\endgroup$ Commented Mar 7 at 13:31

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .