I spent a couple of weeks writing a 2D simulator in VB to generate world maps for fun.

- Generated continents
- Used a random number of random points to make voronoi cells
- Obscured the cell shapes by using randomized offsets along radial vectors between pairs of voronoi centroid to alter their outlines
- Split continents into ocean/land by generating densities for each in two different ranges
- Gave each continent random vectors and used those tectonic forces between colliding/translating/spreading continents to build mountain ranges and basins
- Generated an initial terrain altitude map with perlin noise
- Generated random points to make volcanoes/islands
- Calculated climate regions
- Created prevailing wind map by latitude (due to coriolis effect, these can be calculated by planet size and rotational speeds)
- Created average rainfall map using prevailing wind direction and evaporation when the air passed over oceans and rainfall when the air passed over land, accelerated by anabatic winds over high terrain.
- Created temperature map using latitude, moderated by proximity to winds coming off oceans and humidity
- Erosion
- Using the average rainfall maps, generated erosion and sedimentary deposition by randomly dropping water on each pixel of the map and tracing its path to the ocean. When the water moved fast due to decrease in altitude, increased how much sediment was scoured, when it slowed as the slope decreased, increased the sediment depositing.
- Display
- Wrote a mollweide map projection interface to display it.
- Colored the maps by combining the heat and humidity to generate mountain ice, vegetation color variation, and altitude for shadowing and ocean depth
I’ve wanted to revisit this project for years, but building it in 3D and using a fractal climate/erosion approach instead of a pre-generated maps to allow for zooming in to any scale anywhere on the planet’s surface.