I experimented a little with generating world maps. A common approach it to use Perlin noise, which can result in astonishing landscapes. I wanted to see if it is possible to create a world map with a much simpler approach: slightly modified random walks.
My algorithm can be described in five trivial steps:
- Place N (e.g. 10) arbitrary start points with elevation 'height' (e.g. 500)
 - For each point P in the map, choose a random neighbor P'.
 - Calculate their difference in elevation minus one: diff = P.height - P'.height - 1
 - If diff > 0, move that amount of elevation to the neighbour P'. (i.e. P.height -= diff; P'.height += diff;).
 - Go back to step 2.
 
Doing this on a 640x480 map with 10 start points looks as follows.
![]()  | 
| Starting with 10 islands | 
![]()  | 
| Islands are growing | 
![]()  | 
| Some of the islands connected | 
![]()  | 
| First larger landmasses emerge | 
![]()  | 
| Final map | 
What are the advantages of the random walk approach?
- It is trivial to implement.
 - The two parameters (number of start locations and their height) allow to intuitively tune the number of islands as well as their size.
 - The algorithm can be applied to any graph or topology. Unlike with the Perlin approach, no coordinate system is required. All that's needed is a set of connected nodes.
 
The main disadvantage of this approach is that it is computationally expensive when generating large landmasses as the same nodes are revisited often.




