Using a series of different cellular comparisons (none of them, on their own, particularly complex) I've thrown together a quick world simulator that models heat, wind, clouds, rain, and erosion, in roughly that order, in real time:

I have a "sun", a heat source that moves across the world map. It heats up the water and land, and the heat dissipates away otherwise (simulating night or winter). Water absorbs and dissipates heat slower, and keeps a generally cooler temperature than land. This creates a cyclical oscillation in temperature...

...which is how we create wind! Air moves from high pressure to low pressure (or from hot to cold, trying to achieve equilibrium). With the heat map we can create a wind map:

The wind in turn directs the heat, creating a little feedback loop. The terrain also effects the wind, slowing down or redirecting it. Differences in shading from the terrain also produce differences in heat throughout the day - A side of a mountain is cold in the shade, but can the warm up as the sun travels through the day (the grey band is "high noon", where I assume no shadow):

Heat + water = moisture. Moisture + lower pressure = rain. Very simplified, but it produces interesting, cloud-like motions and behavior, from rain shadows to foggy marine layers. Blue = moisture, green = rain. Cyan is a lot of each:

Rain or moisture on land will produce greenery in this simulation. The shots above or only from the start. Erosion (rain and wind) will smooth out the terrain eventually.
I'll have to make a little nod to the makers of Dwarf Fortress (read the dev blog, it's an awesome experiment in world building), it generates rainfall in a similar fashion as a matter of course. I had been thinking about this sort of dynamic for a long time before stumbling on DF, but reading the specs and playing the game made me sit down and give the simple algorithms an honest try myself.
This relates back to Here Be Dragons and how agent behaviors need motivation. With classical genetic programming you typically have a direct fitness function - how well does something do "x"? Another way is to model an ecosystem you need a dynamic, sustainable world. Even in the simple setup above, situations are chaotic and change enough to keep its inhabitants on their toes - needing food, water, and the right amount of heat.
After two days of work I intuitively understand weather better than I have after years of study (although it necessarily took years of study to learn the concepts). I find myself looking now at the Coriolis effect to get more earth-like weather patterns, and figuring out some form of plate tectonics in order to counteract the erosion. Otherwise all the dirt will sink into the water eventually.
Design for these systems is interesting, and really not too hard - you can mess with variables endlessly, just remember that idea of achieving some equilibrium - add and remove, and conserve.
Posted by todd at June 26, 2008 12:06 PMTre cool!
The screenshots go a long way to explaining your simulation. I hope to see it first hand, and *really* hope you can synergize the climate with Here Be Dragons.
Since I care about it from the perspective a designer that wants to play in a cool world:
Have you discovered parameters or techniques for inducing dramatic (explicitly less realistic) weather?
Or for inducing behavior in the inhabitants that is amusing when the user perturbs it?
Posted by: kennerly
at June 26, 2008 1:37 PM
Would it be possible for us to use something like this in Walden by seeding it with the info we know from Thoreau's journals to produce emergent weather within the parameters found in Concord/Walden area? So we would not have to script weather, but it would still develop within a proscribed range?
Posted by: Tracy Fullerton
at June 26, 2008 2:26 PM
Thanks for signing in, . Now you can comment. (sign out)
(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)