Geo Realism: Discussion on a new SDK based map generator

primem0ver

Emperor
Joined
Jun 16, 2006
Messages
1,158
Location
Peoria, AZ
You can call me picky if you want to... but this is actually very much related to one of the two options I have come up with for my Masters project in CS. In a sense, this could be a simplified version. I want to make a truly realistic planet/map generator, complete with simulated plate tectonics and climate zones (biomes) that are based on the way geography really works. No more fractal map generation (except to randomize areas to use in initializing the engine) which generally produce inaccurate maps.

This post will be used to describe its basic features, the approach that will be used in the SDK to create those features, and to post updates on new features.
The second post will be used to explain the geographic models on which it is based. The rest of the posts will be open to your for discussion, teamwork, and contributions (ideas).

Engine Parts
There are seven basic parts to the engine:

  1. The tectonic plate motion simulator
  2. The geomorphology calculator (the full version of this will be developed last because of its complexity)
  3. The air mass calculator/creator
  4. The air mass motion simulator
  5. The climate calculator (takes results of the air mass simulator and calculates the resulting climates).
  6. The drainage calculator
  7. The resource calculator (determines placement of resources semi-randomly based on the geologic and climatic conditions that exist).

Prerequisite Testing
I will need to do some initial testing to formulate this first part unless someone already knows the answers to the questions I need to find out: do areas correspond to separate oceans and continents, continents only or what exactly?

Basic Algorithm
The engine will perform the following tasks in this order:

  1. Import the heightmap AND the final map from the original Civ Map generator using any basic script as selected by the user as its base (with some limits).
  2. Convert "CvAreas" on the map into plates for the tectonic engine.
  3. Assign height/moisture values to each plot based on a normalized/corrected versions of the imported height/moisture maps.
  4. Move the plates using the tectonic motion simulator
  5. Calculate the resulting morphology...new plot heights based on uplift and approximated denudation (drainage) rates (originally derived from imported moisture values, later calculated based on new moisture values).
  6. Calculate and form where air masses form on the current geography.
  7. Simulate air mass motion over the continents to calculate new moisture values. This motion will be largely based on global wind patters which can be reversed by a user option to "reverse" the direction of planet rotation. This will flip east coast climates to the west coast and vise versa.
  8. Calculate the location of each type of climate based on temperature, global winds, and moisture.
  9. Calculate drainage (final round only) based on plot heights.
  10. Calculate resource placement based on geographic (both geologic and climatic) conditions.
  11. Calculate river placement based on drainage and moisture locations and resources that require a river.
  12. Finally, create the map plots based on climate
  13. Place features that can appear anywhere, or depend on things other than climate.

Comments:
Eventually I would like to have the simulator repeat steps 4-10 a few times. This will help with calculating where to place oil, natural gas, fossils, and other things that result from biomass.

Note: This post will be updated as ideas surface and the model changes.
 
The Köppen Climate Classification System

The Koppen Climate Classification system is the most widely used climate classification system to date. It will serve as the basic system that is used to classify climates in the Geo Realism mod component.

Here is a picture of world climates as classified by this system (A larger version can be found on the right side of this wiki article:

mapa_mundi_clima_koppen_2.jpg


As it can be seen above there are now 29 "separate" climates that have been identified as being distinct. However, several of these can and for the purposes of this mod will be lumped together. I will use somewhere between 17 and 21 of those 29 and produce variations as defined in the excel sheet attached to this post.

The attachment below is a list and a description of the climates that I plan on using for this mod (a zip containing a file in Excel pre-2007 format). I have also listed the C2C terrains and vegetation features that will be associated with each climate. Keep in mind that this is currently a very rough draft. Changes and additions are bound to occur. I want to add both all features and relevant bonuses to this chart eventually as well as include specific quantitative data that will be used to create the plots in the map.

View attachment Koppen-C2C.zip
 
I was thinking earlier... with height variations from one tile to the next, could we have ridges and cliffs at tile edges? That would a truly wicked upgrade to the method. Also... I'm wondering if you'd be willing to work in the rivers in the middle of tiles mod as you design this?
 
oceancirculation.jpg


One thing that might be helpful to use is also sea currents. In making maps by hand for Sagan 4 I have looked to sea currents to not only shape the oceans but the land.

In general the cold waters hit the west coasts of contents and the east coasts get warmer waters. However there are some exceptions such as the the warm water that hits Europe, specially the British isles, which keeps them warmer than they should be.

Other interesting features is the South Pole current going from West to East and the North Pole Current going East to West. Likewise at the Equator the currents go the same way for the warm water, creating cross currents. Landmasses of course can alter the paths of these currents.

This also reminds me of the old topic for RoM/AND where we wished there were sea currents on the map that would make boats go faster or slower in the water. The same would go for air currents and sailing ships / aircraft.
 
One thing that might be helpful to use is also sea currents. In making maps by hand for Sagan 4 I have looked to sea currents to not only shape the oceans but the land.

LOL. I am impressed with your research. I'm already with you on this. Gyres (what these systems of currents are officially called) are part of the curriculum I taught when I was an Earth Science teacher. The existence of these currents is what will be the biggest factor in the generation of ocean based air masses in the air mass generator. These air/current systems are why east coast climates are different than west coast climates. If the Earth were to spin the other direction, these gyres would spin in the opposite direction, reversing east/west climates to the opposite sides of the continents.
 
Would this mess up the current mapscript system or would it be another option? I ask because currently Mapscripts export several of their functions to the SDK, including some feature and bonus placement.
 
Some events would benefit from more information about the map and climate eg the Volcano and Hurricane ones. We could even call the latter by there real names - they are Cyclones here and Typhoons north of here ;)
 
Would this mess up the current mapscript system or would it be another option? I ask because currently Mapscripts export several of their functions to the SDK, including some feature and bonus placement.

No. I am not sure exactly how we will work options into the UI but if you read step 1 of the basic algorithm above it says:

Import the heightmap AND the final map from the original Civ Map generator using any basic script as selected by the user as its base (with some limits).

This means the native map generator will run before the simulation based generator.
 
Some events would benefit from more information about the map and climate eg the Volcano and Hurricane ones. We could even call the latter by there real names - they are Cyclones here and Typhoons north of here ;)

Well one could have different levels of severity such as ...

- Hurricane
- Waterspout
- Typhoon
- Monsoon
- Cyclone
- Dust Devil
- Tornado

Note that say a Hurricane would start in the water while say a Tornado starts on land. Likewise a Waterspout would be less powerful than say a Hurricane

In fact there is all sorts of types of weather we could have.
 
Monsoon is not a special weather event. It happens every year. Well almost, it looks like the Australian Monsoon may have restarted after a 40,000 year break.

Hurricane (Atlantic Ocean mostly) = Typhoon (North Pacific Ocean mostly) = Cyclone (South Pacific Ocean and is backwards).

Dust Devil (Whirly is one Australian name) - the biggest I have witnessed was 17 miles across! We had not converted to the metric system back then. ;)
 
Here are some C2C terrain images that might help you sort out things. I think PerfectWorld2f already has climate zones built in.

Spoiler :

attachment.php


Spoiler :

attachment.php

Note that some of the Terrain Features are not resources anymore while other like Kelp changed its look and the old graphic is now "sea grass".

The GEM map doesn't have coconut palms or cacti or kelp or any of those things. Is it outdated?
 
The GEM map doesn't have coconut palms or cacti or kelp or any of those things. Is it outdated?

Coconut Palm is now a resource. Cacti should be both a resource (prickly pear and peyote) and a terrain feature (saguaro cactus). Kelp should be a terrain feature (with new graphics) and sea grass (old graphic).

So yes that image is outdated.
 
Hydromancerx said:
Coconut Palm is now a resource.

Cool! Now would that be usable for prehistoric warfare? My neanderthal warrior can hit your neanderthal warrior on the head with a coconut? Fired from a sling?
 
Cool! Now would that be usable for prehistoric warfare? My neanderthal warrior can hit your neanderthal warrior on the head with a coconut? Fired from a sling?

Now that's an interesting equipment idea for stone throwers and slingers... hmm...
 
One other thing to consider is that now we have a starting time of 50000 BC (and we might even move it back some more) so while there are no really important tectonic changes in that time, there have been quite a lot of climate changes so if the algorithms you implement are able to calculate the changes to terrain and ocean from glacial to interglacial that would be great.
 
One other thing to consider is that now we have a starting time of 50000 BC (and we might even move it back some more) so while there are no really important tectonic changes in that time, there have been quite a lot of climate changes so if the algorithms you implement are able to calculate the changes to terrain and ocean from glacial to interglacial that would be great.

I believe his plan is to simulate during the map generation the tectonics that occur over geologic timespans before the game even starts.
 
Back
Top Bottom