Around The World, Part 3: Hotspots and erosion

In the last post, we added the effects caused by tectonic plates:

Boundary effects

But there are more forces that shape our land.


What exactly a hotspot is, is still hotly debated. But we know what a hotspot does: it punches its way from the mantle through the crust, pouring out lava and creating a volcano. What’s more, the hotspot is not connected to the plate above it, so as the plate moves across the hotspot, it creates an entire chain of volcanoes. This is how e.g. the Canary Islands and Hawaiian Islands came to be.

To create these volcanic chains, we simply pick some random hotspots, and moving backwards along the motion of the plate, drop some volcanoes (of course with some noise):


You can see that a small island chain has been created near the middle of the image, and some more off the top right. (On continental crust, hotspots have different effects, which I’m not tackling here because this game will take place at sea.) Such islands in the middle of a vast, inhospitable ocean have historically been very important to seafarers, and they will be important in the game too.


Erosion, the wearing away of land over time, has had a huge impact on the surface that we live on. There are several types of erosion, such as:

  • Thermal erosion: heating and cooling breaks off pieces of rock, which fall down. This tends to make steep slopes shallower.
  • Hydraulic erosion: the downhill flow of water grinds down even mountains eventually, and deposits sediments in lower regions. This forms rivers, deltas and lakes.
  • Glacial erosion: similar to hydraulic erosion, but with masses of ice. Causes fjords.

Having rivers and fjords in my game would be neat, but hydrolic and glacial erosion are notoriously difficult subjects, so I’m saving them for another rainy day. Thermal erosion is much easier to mimic, and can be implemented with a simple algorithm: if the slope between two adjacent grid squares is more than some threshold, then adjust the height in both squares to make the slope equal to that threshold. This might cause the slope in other squares to exceed the threshold, so you need to repeat this process, but hopefully not too often. I’m calling it quits after three iterations, resulting in this map:

Thermal erosion

The change is just a few pixels, but this gets rid of extreme, implausible cliffs that may arise in some situations.

Water level

71% of the Earth is covered by water, yet only 59% is covered by oceanic crust. Those other 12% are the continental shelves: continents that are partly flooded by seawater. The North Sea is one example. These areas are relatively shallow: about 100 meters, whereas true oceans are on average 4 kilometers deep. As a result, the waves on continental shelves don’t reach the height of ocanic waves, making these relatively safe areas in the game.

At some point in the past, the sea level was lower: continental shelves were actually just continents, and Great Britain was connected to mainland Europe. We are at that stage in our world generation now. So let’s raise the sea level until 71% is covered with water:

Sea level raised

A large bay has appeared in the bottom right continent, which would be a great spot for civilization and trade to flourish. Some islands have become disconnected from the mainland, making for an overall more interesting geography.

And that’s it for generating the height map! Next up might be either creating of smaller-scale terrain, or creation of wind and weather patterns. We’ll see.

To wrap up, here’s an animation of the entire process over the last three posts:

Height map animation