Generated Maps:Erosion

A response from one of the Relic developers on how the erosion system works.

Erosion and droplets are a connected system, and terrain smoothing is a bit of a separate pass.

You can imagine the erosion and droplet system like a rain cloud that covers the whole map - based on the droplets_per_cell attribute, you will get a droplet that falls on potentially every map cell and then travels down the terrain based on slope and angle. When a droplet is on a steep slope, it picks up velocity and carves more out of the terrain, and when it is on a shallow slope, it slows down corresponding to the friction attribute and eventually stops when it gets below the "end_droplets_below_velocity" threshold. The velocity_erosion_strength attribute controls how aggressively terrain is eaten away, and the max_erosion_depth controls how much of the base terrain can be eaten away by the erosion system. We do a number of these droplet paths, which you control with the max_droplet_iterations attribute. This is what can get you mountains that have nice looking shearing, as well as the rivulets that you can see going down hills on some of the maps. Whenever you see a patch note talking about "reducing erosion multipliers", it's typically been because I've seen instances of erosion digging the terrain too strongly and creating impasse on a hill when it's dug too much of the terrain up.

The terrain smoothing is a whole different thing - it's essentially a smoothing kernal pass that's done on the height map during the magnification process going from the coarse grid of terrain types that the Lua script passes in that results in the final height map you see in game. Playing with the height_over_width, for example, controls how much neighboring terrain types blend their heights together - it's why placing a few mountains together ends up with larger mountains. All of the fractal shift variables control how erratic the terrain can generate away from the set height values.