World Map

From Wiki ko Ailhaotnůṙ
Jump to navigation Jump to search

This project is actually not even close enough to being finished for me to write much about it. Basically, I am attempting to create, through a computer program, a randomly-generated map for Corasur (There will be a set "official" seed but I suppose that I might as well make it possible to generate others). Below I will sketch out the basic design considerations. This is mostly to be used as internal documentation and specification, and as the project comes farther along I will rewrite this page to be more readable.

Status and Roadmap

Corasur's geography is dominated by an underlying spiral bias to the elevation. The normalized base elevation for a point (θ, r) is sin(θ+.1r)-0.58799. (the .1 is a "curliness" factor, and can be increased to tighten the spiral. It may be fine-tuned in the future.) Sea level is at 0, because the function is adjusted downwards so that 0 is the 70th percentile. Multiply the normalized elevation by 10,200 to get feet, or 3110 to get meters.

Interestingly, the ratio of average ocean depth to average land elevation on Corasur is roughly half of the Earth equivalent, which means that Corasurian oceans are much shallower, while still having the same surface area. This actually does not matter at all, however, because oceanic depth will not appear on the map.

The next step is to figure out how to create a completely deterministic smooth(ish) heightmap (depending on a seed and the coordinates) to add to the base elevation to produce an actual landscape, followed by an erosion pass (the mountains have to be pointy and surrounded by flat lands, not round and surrounded by steep slopes), after which point the sub-ocean elevations may be truncated. At this point, a topographic map is possible, although there will be no canyons or other significant erosion features.

Next, I'll need to generate a star-density map, which can be modelled as an infinitely wide rectangle with 12 vertical striations, each of which may be generated separately, and then blended together (non-linearly) with a radius of approximately one quarter of one band. (Therefore, the transition time between seasons is equal in length to the "pure" season.) Each season will also have a daily-brightness-variation factor which is held constant across the entire plane. The generator will depend only on the seed and the radial distance coordinate r, and the relevant section will be generated deterministically as needed.

The fourth step is to design a system for transportation of water vapor, to enable a more accurate model of climate. There are no trade winds on Corasur, because it does not rotate. As Corasur is a world dominated by broad oceanic valleys bordered by mountains, many things would be somewhat different than on Earth. This boils down to a basic simulation of wind and ocean currents, which produces as output a map of average precipitation, with some characteristics in common with the starmap. This step is quite likely to be reconsidered and replaced with something simpler, based on fewer variables and requiring less computation. I'll study a few open source map generators to see how they determine what climate to place where. Rain also means rivers, so there will be a second erosion pass modelled after water movements.

Producing biome information is relatively easy when temperature (starmap) and precipitation are known, and can be implemented with only a lookup table.

Lastly, cities and political regions will be placed.

Function

This program must take a set of coordinates defining a rectangle and produce a map that is consistent (any overlap should be identical). A biome/climate map should also be applied based on local geography and the light-intensity (Annual temperature profile) function (Takes only r).

Environment

PHP and GNU Octave (GNUPlot), possibly C++, and any Free (As in FLOSS) in-browser map viewer.