[Map Script] Tectonics

Just tried a game with this. Not much to say in terms of technical stuff, since I don't know anything about scripting, but I can say that your script produces much better landscapes than the standard stuff.
 
This is a wonderful map script. It produces the most realistic, Earth-like terrain I've seen so far. I like how it creates large mountain ranges that can separate civs.

I did notice, however, that on Pangea and the lakes maps the deserts tend to be produced in long ribbons that have very straight borders. Certainly in the real world deserts tend to ocurr on those latitudes. But they do not appear throughout the whole length of the latitude. For instance we have the Atacama desert in Chile but at the same latitude there is no desert in Brazil.

Further, I think that in a real pangea there would probably be a large desert at the center of a Pangea continent, much like how there are deserts in the center of Eurasia - from Kazakhstan to Mongolia.

But these are minor peeves since I rarely play Pangea or lakes. The deserts appear quite realistic on continents and archipelago maps.

As for the mountain ranges, perhaps there should be a pass (a hill tile) about once or twice per major mountain range. This might simulate the passes between India and Afghanistan.

I also agree with the suggestion that if a model for ocean currents were included the maps might be even more realistic and interesting.

But all in all, thanks for the great map script!
 
LDiCesare said:
I updated this to version3.0. This includes a menu to let you choose from earthlike, pangaea, lakes and islands.
Note Pangaea uses the default terrain generator for desert/grass/plains in order to avoid (realistic) huge deserts on such maps.

Interesting... That explains the ribbon-like deserts on Pangea. Do they use the default scheme on the lakes map also? I wonder what realistic deserts on Pangea would be like.

By the way, how could one go about making it use the tectonic generator for pangea, instead of the default? It may not be good for play but I am curious heh...
 
suspendinlight said:
I have been using this generator exclusively for a while. It works very well with my custom rules (pre-renaissance units cannot cross desert, jungle, ice) becuase it generates large masses of various types of terrain and I find it more realistic. Keep up the good work!

That's a great idea. I implemented it and did the same with ice. I also made it impossible to found cities on ice and increased the movement cost of deserts and ice to 2.
 
Actually, I went back to using the same climate generator for all land types (see change of version 3.3 in the .py file). I don't like the results for Pangaea a lot, but I am not sure this script is best suited for Pangaeas. I prefer Lakes when I want a land-dominated map (it usually produces a single landmass with a few big seas), where the climate results are better because of the few scattered water sources.
Changing the climate generator is done by editing the generateTerrainTypes method (tell it to use default implementation in case option Pangaea is picked).
As for Brazil/Chile deserts, I try to produce that by blowing winds from the sea and blocking them at mountain ranges, but that's more or less successful as I lower wind force gradually. Water currents could help make that better but I'm not up to modeling these I fear.
Passes in mountain ranges: I put a few random hills inside peak ranges (about one in ten), but they don't always create a pass, in particular if you have wide mountain ranges (two tiles wide or more at some points). if (self.dice.get(10,"Random pass") == 9): on line 347 - you can try to lower that (>=8 or 7 for instance) but that may not be fine enough. Maybe some postprocessing to create a range of hills along a given direction to ensure a pass would be more successful.
 
Thanks for the feedback. I do not know python well enough but if I ever got comfortable enough with it I might give the currents a try.

I see what you mean regarding the lakes producing better results than pangea. Along these lines, I was thinking that one could get better results with Pangea if one created a Pangea shortly after it started to break up. Thus, you should have one connected landmass but it might have many arms of the ocean cutting into it towards its center. This might improve the climatic results.

It might be sort of like the "triassic" map here:

http://geology.com/pangea-continental-drift.gif
 
Is it just me or am I not seeing much in the way of hills in the maps made with this generator. True, i get a lot clustered by the mountain ranges, but almost none anywhere else.
 
I was looking at the Python code and thinking about how to implement currents. I came to realize that it's not really necessary to implement the ocean currents themselves.

This map shows that the currents are clockwise in the northern hemisphere and counterclockwise in the southern hemisphere:

http://earth.usc.edu/~stott/Catalina/images/Oceanography/surface currents.jpg

But I figure the heat from the currents is transmitted by the winds as shown here:

http://www.atmosphere.mpg.de/media/archive/3352.gif

So it is transmitted by winds blowing from the southwest to the northeast in the northern hemisphere and from the northwest to the southeast in the southern hemisphere. This is for the latitudes between 30 and 60 where we see the effects of the gulf stream.

This results in the characteristic climate of northwestern Europe, the "pacific northwest" and southwestern Chile. But in the Pacific Northwest and Chile the effect is nerfed by the Rocky and Andes mountains respectively.

Thus we don't need to bother with currents. The effects of the currents can be implemented through the wind model. One just needs to make the winds blow from the southwest to the northeast between latitudes 45 and 65 north. But in reality, because of the distortions of the flat maps used by Civ we would need the winds blowing heat between around 55 and 75 north.

As I looked at the code of the tectonic map generator I noticed that this is already sort of included:

if (latitude > 65):
if (moisture < 15):
if (latitude <70):
if (self.dice.get(10,"Jagged tundra") > 7):
return self.terrainGrass
return self.terrainTundra
else:
return self.terrainGrass

This chunk is for latitudes 65-74. This is just what we need to move the effect to these latitudes because the maps in Civ are distorted due to the fact that they are flat. Anyhow, I figure this code uses the moisture placed by the winds. The moisture turns the tundra into grasslands, which is just what we are looking for at these latitudes.

The only matter is to ensure that the wind blows in the right direction and that the effect is weakened the farther inland the wind blows. The wind blowing from West to East may be a good enough approximation. From what I've been able to read, the wind in the tectonic generator alternates direction every 20 degrees of latitude. But I'm not sure which way its blowing between 50 and 70 degrees, nor between 70 and 90.

I'm also not sure if the winds add less and less moisture the farther inland that they go, as they should to simulate the correct effect. For instance, we want the effect in Southern Sweden but not in Moscow.

In any case, I just wanted to point out that it appears to me that the map generator is already very close to being able to generate the effect of the gulf stream and other such currents. It may only need very minor tweaking, unless I am missing something.
 
I love this generator. I'm still using it exclusively. I have a couple of comments though: First, the deserts still tend to be in large bands across an entire continent. How can this be tweaked to allow a little more variation in latitude and longitude. Second, I've noticed that large continents tend to have massive interiors filled with Plains tiles. Is this realistic? It makes the game quite difficult if you happen to end up on one of these areas.
 
I think your on a good track their NP300, as simple wind and rain system would give you what you want.

I sugjest something like this, Over every Water plot generate a "cloud" with X amount of rain in it, X being determined by latitude (more at Equator less at poles taking desert belts into account). Move each cloud east or west depending on its hemisphere once step at a time and drop some percent of the rain based on the terrain your over. Peaks cause a lot of rain to fall 30%, hills less 20% and flatland still less 10% (rough guess) note that rain falls on the tile imediatly preceding the terrain being evaluated.. When clouds hit Peaks they have a chance to be bumped north or south if theirs no Peak their as well then they continue going east/west untill they run out of Rain, they also might randomly wander north/south on occasion. Lastly generate a few "Monsoon" clouds that move in the opposite direction (west in the northern hemisphere, east in the southern)

Add up all the Rain that fell on each plot of land (ignore what falls in the Ocean). If the plot is a Peak move the water is shed and a virtual river forms , move the river around much like a cloud but just go downhill as best it can untill it reaches the sea, drop water along the way. Other tiles with very high rainfall could also get rivers. Once the rivers have run their course check all the plots against a table, thouse with less then X rain are deserts, less then Y plains ect ect. If their very high they grow forest/jungles depending on lattitude.
 
About water genreating a cloud: That's about the way it works: Wind blows from water tiles and moisture diminishes as it goes inland. In a previous version, the wind blew, and the 'cloud' rained on a single tile, which didn't give good results.
Using that in order to form rivers is a nice idea, however. Since I'm not satisfied with the river genrating code, I wonder what results this would give.
I confess I do'nt know if my wonds blow in the right direction at the various latitudes, though they do alternate.
As for vast bunches of the same terrain: Deserts, and vast plains. Well, vast plains and deserts are realistic, but indeed for the game make things hard. Vast plains can be avoided by increasing the number of tiles. Lone hills can be added by increasing the number of hot spots (lowering hotspotsFrequency around line 600 or changing in the method line 336).
Vast plains I tried to cut out a bit by splitting plates with "rift valleys" (alternances of hills and lakes) but there may not be enough?
Deserts have too straight borders indeed. I tried to jag them a bit but that's still too straight. If someone has ideas of a means to decide whether a desert should form, or should not, at a latitude where we get the Sahara, I'd like to hear it.
 
Very nice. I generated a few maps and checked how they look like in worldbuilder. I like how the hills and mountains get clustered, although they do that maybe a tad too much. Maybe you could add a configuration option for this? Like Civ 1 and 3 (haven't seen 2) had the "age" option that controlled the amount of hills and mountains. Playing a totally eroded world with very little hills might prove interesting.

Also the latitudes stand out a bit too well - with pangaea setting there are two desert stripes which look rather funny.
 
I haven't checkd FFH 2 but I don't think there should be much problem. I don't change the resources, so the only things that matter are the terrain types. If they don't work, then removing or replacing the climateGenerator to just keep the landmass/sea/mountain (and rivers) would still work.
 
This is a very nice script. I like the shape of continents it creates. I have problems with polar regions, though. I don't mind continents going all the way to the pole, but I don't like when it's tundra all the way to the edge of map, especially forested tundra. That should be ice instead. Other thing is the small and tiny islands that sometimes appear at polar regions. AI likes to settle those and hunting down these polar strongholds is tedious.
 
This script crashes Warlords right after the generation screen says it is placing the player start locations. Can you update this for Warlords please? (Or is it just me?)
 
It works on Warlords for me. Could be that we use different settings for it, though.
 
I found the source of the problem and fixed it. It was unrelated to this map script. Sorry.
 
Top Bottom