I hate fractal terrain built via continuous noise functions. I mean, I like it, but at the same time I hate it. The fact that fractal noise somewhat resembles real-world terrain is merely a coincidence, and this fact become obvious the larger scale you want to go. I recently constructed a planet. A chain of hundreds of noise modules combined together to form intricate terrain variations across the scale of entire continents. Pretty cool, and while on a small enough scale it looks pretty good, on large scales it is totally unrealistic.
1) Erosion
I have played with erosion enough to know that for my purposes it is too much. Large scale noise fractals of hundreds of modules and over a dozen octaves per each generator are too much. Try to mix them together into the allowable time needed to build a level, and the result is an extremely bored player shutting down your game from the loading screen to go play something else.
However, without realistic water (and thermal, and wind) driven erosion, terrain looks false and artificial, especially on larger scales. There are just so many cool terrain features in the real world that require erosion to construct.
2) Glaciation
A subset of erosion, it is easy to underestimate the tremendous impact glaciation has on the formation of terrain. Yet, modelling it is difficult. Hydro erosion is easy, and can be somewhat realistically simulated on a grid model, but I haven't seen many resources on modelling glacial erosion. Ice can push huge amounts of earth around, fracture rock, grind down mountains, and build up terrain features, all within a fairly limited scope (ie, the ground covered by the glacier).
3) Tectonics and Volcanism
The greatest force in terrain construction, and again I have seen no models that can come even close to realistic. A mountain range in a fractal-based heightmap is in no way similar to a mountain range constructed by two tectonic plates smashing together and buckling upward. And while I can construct a fairly decent model of a volcano using some special basis functions in the fractal generator, doing lava flows is completely different. And, of course, a good lave flow is impossible for a heightmap to depict, since they are so full of bubbles and overhangs. Although, I think it would be fairly trivial to massage a noise fractal to create something like a lava flow as a triangle soup mesh.
A lot of real world terrain features are formed as intricate combinations of different forces. Such as this photograph of a canyon. (I was almost hit by a train once in this very canyon. But I digress.)
Here we have a range of hills cut in half by a river. I don't see this sort of formation crop up in erosion models very often, mostly because it is formed by tectonic action. The hills are pushed up slowly, beneath an existing river. As they rise, the river cuts down into them, so that millions of years later you have a canyon through a range of hills. If the hills came first, then the river, the river would flow around the hills instead.
It's difficult to model this sort of behavior.
I need an extremely exhaustive, scientific model of landscape formation processes that includes erosion, tectonic, glacial, and other geological factors, and I need it to run in close to real time so that I can use it to page terrain chunks in and out of a game in progress. Anyone know of such a library? [grin]
I love reading journals like this because it reminds me how game programmers have to learn about so many things just to make one correctly. In this case, a little geology. Good stuff.