![sim settlements upgrading plots sim settlements upgrading plots](https://i.imgur.com/ywrefkV.png)
This direction of greatest slope is where water flowing out of this pixel will travel. Simply put, each pixel examines its eight neighbours, to determine which direction has the greatest decrease in elevation (adjusted for the fact that the diagonal neighbours are further away). Barnes (2018) proposes a simple model which achieves just this. Therefore, the model will have to be able to simulate rivers which are no more than a single pixel wide. A variety of water flow simulations are readily available for this task, but a difficulty here is that the resolution of the terrain map is quite low for an entire planet. The rugged appearance of natural terrain is largely driven by the formation of river basins, which erode landscapes in a familiar branching pattern. Although this only occurs at the pixels along the boundary of a plate, the impact is gradually spread to neighbouring pixels through a simple thermal erosion model, which pushes the elevation of a pixel in the direction of the average of its neighbours.Īltogether this provides a decent simulation of the formation of continents with mountain ranges (which will be further improved with the introduction of hydraulic erosion in the next section): This causes subduction, which is modelled by simply slightly increasing the elevation of the terrain at the locations of the collision. Plate collisions occur when some boundary pixels of one plate move onto a location previously occupied by pixels belonging to another plate. These times are randomised for each plate such that the average velocity is maintained at the set speed and direction, and also so that it is unlikely that neighbouring plates will move simultaneously. To avoid this, the plates are instead moved at discrete time-steps, by a whole pixel either horizontally or vertically. The aggregation model is similar to that of a diffusion-limited aggregation (but without the diffusion):Ĭontinuous movement of the plates is difficult, as it would require plate boundaries to account for movements measured in fractions of a pixel. All of the pixels within a plate store the velocity of the plate's movement. These plates grow in size over time with a simple aggregation model, which randomly selects neighbouring points and adds them to a plate if they have not already been assigned to another plate. The simulation randomly generates seed locations for plates, with an initial velocity. The formation of mountains, ocean trenches, and familiar continental landforms requires a model of tectonic movement. The flow of liquid water across the surface carved valleys in the terrain, leaving an accumulation of sediment in its wake. As time progressed and the rock cooled, the water vapour began to condense into oceans. Water contained within was vaporised by the heat, which escaped and began circulating through the early atmosphere forming around the planet. The final procedurally generated heightmap looks like this:Īlthough relatively simple, after filling the low-lying regions with water, this procedural terrain resembles what scientists believe the early earth actually looked like:Īrtistic impression of the early earth, by NASA.
![sim settlements upgrading plots sim settlements upgrading plots](https://staticdelivery.nexusmods.com/mods/1151/images/thumbnails/31972/31972-1557863158-1563741283.jpeg)
The crater rims are generated by a simple sine curve. To calculate influence of a crater at a given location, take a weighted average of the craters belonging to the nearby grid points, with weights exponentially decreasing with distance from the centre. To avoid visible regularity, the crater centres are given a pseudo-random offset from the grid points, using a hash function. The craters themselves are generated on a 3D grid, from which a sphere is carved out for the surface terrain. To make the craters have a realistic rugged appearance, this is mixed with some fractional Brownian motion noise, and scaled so that the largest craters have the most impact on the terrain.įloat c = craters(0.4 * pow(2.2, i) * p) įloat noise = 0.4 * exp(-3. To accommodate this, the shader iterates over five levels of detail, layering craters of decreasing size over each other. Now, as asteroids come in a variety of sizes, so do the resulting craters. To calculate the height of the terrain at a given latitude and longitude, first translate to 3D cartesian coordinates: As my earth simulation is entirely procedurally generated, with no pre-rendered textures, the first task is to generate a map of this terrain.
![sim settlements upgrading plots sim settlements upgrading plots](http://aoseoseotw.weebly.com/uploads/1/3/4/0/134000495/905158009_orig.jpg)
The early earth was a protoplanet, red hot and heavily cratered by asteroid impacts.