[Map Script] Tectonics

Well thats what i read too.. And yeah i didn't even notice the indentation missing in my post until you pointed it out :p. The problem is though that there is still thundra in the map, is there some other function that causes this or something?
 
I used to love this script, then I moved to using XXL mod exclusively, and Tectonics produced crap on the Gigantic map sizes - basically, lots of large islands, very few of what I would call continents...

So I sought out other scripts, eventually coming back to this one because of I loved it's realism, geologicallly speaking. I eventually tweaked a couple of values to my liking, and based on my testing..

On huge or larger worlds, I find that changing these values:

if (userInputLandmass == 0): # "Earthlike (70% water)"
numContinents = 1 + numPlayers
numSeaPlates = numPlayers*3

to these values:

if (userInputLandmass == 0): # "Earthlike (70% water)"
numContinents = (1 + numPlayers)/2
numSeaPlates = (numPlayers*3)/3

produces a far better result than the standard set of values. With that said, if you try and use these values on anything smaller than standard, you'll almost always get a pangea-like continent, which is crap, IMHO. Hopefully, LDiCesare can use this info to improve this script for everyone, as I know from past experience that his computer cannot generate anything larger than duel maps... :lol: :D...
hehehe, no offense man ;)
I'd be happy to test Giga worlds for him in the future, using my personal supercomputer ;)
 
Does wet mean more jungle than normal for example? no ice is just like normal just without ice? Why are there no maps between 60% and 30%? For me 60% is way too crowded(for 18/huge) while 30% is overly spacious...

But when i generate maps with the no ice option there is still tons of thundra, why is that? Is it a bug?
Wet means more jungle.
No ice turns tundra into grass and ice into tundra, so it's normal to have tundra but not ice using 'no ice'.

There's no map size between 60% and 30% because I've not thought of creating one but you can tweak the sizes the way alms66 showed.
I thought of providing more flexible options like controlling the number of plates or using a slider but that wasn't straightforward, so I didn't do it. alms66 may remember that I don't really enjoy user interface coding ;).

One big problem of this script with regards to Fractal for instance is that the same settings don't produce the same results on various map sizes. So, although it's been tested a lot on small/med/large maps (and mostly duel/tiny/small at the beginning), it's not been tinkered a lot with on huge. I tend to use 60% settings most of the time when playing Vanilla, so I believe this one produces the best results (though I play Lakes/30% a lot too).
 
Well it should be mentioned somewhere that it should not be used for huge then...
 
It can be used for huge. Just won't produce exactly the same looks as on medium maps. I happen to like the way it looks on huge too btw, but I know many people don't like the vast amount of flatlands.
I've tried to increase the rivers lengths/amounts recently, since they tend to be too hsort on big landmasses, but nothing good enough to post a new version.
 
I spent a few hours last night, testing those settings I posted with the XXL mod's Gigantic maps. Most of the time, it works great, but every now and then you get some weird results. I'll probably do some more testing and tweaking over the next few weeks, but in the meantime, I highly recommend you make those changes above in the python file oyzar - and everyone else who plays Huge+ maps regularly.
 
I spent a few hours last night, testing those settings I posted with the XXL mod's Gigantic maps. Most of the time, it works great, but every now and then you get some weird results. I'll probably do some more testing and tweaking over the next few weeks, but in the meantime, I highly recommend you make those changes above in the python file oyzar - and everyone else who plays Huge+ maps regularly.

the main use of this map seems to have strategic points, similar to earth.

by shape, i can get a world similar to earth, which i would like to have. so if you select eartlike, it creates a map similar to terra, with some cut edges by mountains. this helps the player to defend narrower borders.
so, some mountain groups to seperate massive continents into lesser parts and some hills to build many mines are good. no problem with those. moreover, these are what makes this map type specific about.

but unfortunately, this map seems to create a huge amount of plains, much more than grassland. that really sucks for SE.
it seems selecting aridity as "wet" doesn't help with this.
or is there any other way?
 
Apart from "wet", no. You can revert to the default climate by eleting these lines in the script (must be around line 155) with any text editor:
def generateTerrainTypes():
NiTextOut("Generating Terrain ...")
terraingen = ClimateGenerator()
terrainTypes = terraingen.generateTerrain()
return terrainTypes
 
I rather liked the idea of this script, but it does produce some weird continent shapes on both Standard and Small sized maps (seemingly regardless of 70% or 60% of water option) - either strangely twisted thin megaislands spread out along the equator, or clumsy "mini-pangeas" with equally ludicrous tails, both of which seem too geometric in their outlines. I wish there was a way of making them have more realistic shorelines, with fewer weird twists and elongations.
 
Thin islands or land bridges happen a bit too often, when 2 plates collide (real life plate borders like this include Central America around Panama, and New Guinea). They have no reason to happen near the Equator, twas just randomness if they always appeared there when you ran it.
The too geometric shape is sometimes ugly, but doesn't happen all that often in my opinion.
 
Thin islands or land bridges happen a bit too often, when 2 plates collide (real life plate borders like this include Central America around Panama, and New Guinea). They have no reason to happen near the Equator, twas just randomness if they always appeared there when you ran it.
The too geometric shape is sometimes ugly, but doesn't happen all that often in my opinion.
Allright, let me try to be a bit more specific. Sorry for producing so much criticizm of your script, but I'm trying to formulate the essential points of disagreement with its logic. Here are just 4 out of 5 consecutive maps generated at Small/60%/Normal setting. See the minimap for a general idea (they are also specifically zoomed to show particularly throublesome formations).

#1: While this may look like an island bridge, it is nowhere like the ones you mentioned because of its horisontal orientation. Were it vertical, it might have looked far more natural. But this one looks like it's a Panama stuck to Virginia instead of Mexica (while the continent itself has a neat southern horn which would most certainly suit this "bridge" better. If only the two continents were aligned vertically, not horisontally.

Which is what seems to happen all to often with this script. See #3 and #4 - there are continents which are pronouncedly horizontal themselves, especially the lower one at #3 and the upper one at #4. The latter is even more strangely located at 90 degreed to its neighbour (with a rather queer intersection - two bridges forming an inner sea). Can this script be made to prefer more earthlike vertical continents?

And both horizontal continents are pushed to the extreme sides. Which to me seems like another frequent displeasing feature of this script. Can it be made to simulate a more earthlike pangaea division with continents occupying the more or less central parts of the globe?

And also the same two continents are far too narrow for their size, to my taste. It doesn't look natural either. Same is true for the smaller continent in #1 - it does not seem to be a full continent connected to the larger one via an island bridge either - instead, it is more like a loose outgrowth of it (which in turn raises the question of why it is there if it is not bridged continents, after all).

I suppose I could have just summed it all up as: can you please make your script produce not only earthlike terrain but also more earthlike continent placement and outline, too? Fatter continents (vertically-oriented if elongated and/or linked via an island bridge) closer to the equator and with less "outgrowths" (i.e. big offshoots which suddenly grow fatter than it would suit a continental "tail").
 

Attachments

  • Civ4ScreenShot0000.JPG
    Civ4ScreenShot0000.JPG
    164 KB · Views: 431
  • Civ4ScreenShot0001.JPG
    Civ4ScreenShot0001.JPG
    169.2 KB · Views: 440
  • Civ4ScreenShot0002.JPG
    Civ4ScreenShot0002.JPG
    161 KB · Views: 424
  • Civ4ScreenShot0003.JPG
    Civ4ScreenShot0003.JPG
    163.3 KB · Views: 369
#1: While this may look like an island bridge, it is nowhere like the ones you mentioned because of its horisontal orientation. Were it vertical, it might have looked far more natural. But this one looks like it's a Panama stuck to Virginia instead of Mexica (while the continent itself has a neat southern horn which would most certainly suit this "bridge" better. If only the two continents were aligned vertically, not horisontally.
I see your point, but to me there's no reason why the orientation of such a land bridge should be north south. I see nothing in tectonics plate theory that would explain why such bridges should be NS. In a few hundreds of millenia, New Guinea will probably be an EW bridge for instance.

Which is what seems to happen all to often with this script. See #3 and #4 - there are continents which are pronouncedly horizontal themselves, especially the lower one at #3 and the upper one at #4. The latter is even more strangely located at 90 degreed to its neighbour (with a rather queer intersection - two bridges forming an inner sea).
I don't see this as a problem but
Can this script be made to prefer more earthlike vertical continents?
Yes. Though I wouldn't do it in general (Asia is kind of EW).
Modifying the neighbour() function around line 500 could help with that.
Untested, you could replace this bit (and the same for right):
Code:
		left = self.plateMap[leftX + y*self.mapWidth]
		if (left != 0):
			if (roll <= self.plateSize[left]):
				return left
with:
Code:
		left = self.plateMap[leftX + y*self.mapWidth]
		if (left != 0):
			if (roll <= self.plateSize[left]):
				if (i >= self.numSeaPlates and self.dice.get(10,"less horizontal continents") > 5)
					return left
			else:
				return left
You'd probably have to play with the 5 value in order to get something between horizontal blobs and vertical one line strips.

And both horizontal continents are pushed to the extreme sides. Which to me seems like another frequent displeasing feature of this script. Can it be made to simulate a more earthlike pangaea division with continents occupying the more or less central parts of the globe?
The continents are currently slanted to appear mostly in one hemisphere (can be N or S, real Earth is North if you forget the unpleasant Antarctica which is not in the central part). This can be turned off by removing stuff around line 225 in get Coord function : Remove all this:
Code:
		if (i >= self.numSeaPlates + (self.numContinents/3)):
			y = 2 + self.dice.get(2*self.mapHeight/3,"y seed for plate")
			if (i >= self.numSeaPlates + 1 + (self.numContinents/3)):
				if (self.mostLands == 0):
					y = self.mapHeight - y - 1
			elif (self.mostLands == 1):
				y = self.mapHeight - y - 1
		else:
Also remove one tab on the next line. The result will be more spread out. If it's still too near the poles to your taste, you must replace the aforementioned block with something like:
Code:
		if (i >= self.numSeaPlates + (self.numContinents/3)):
			y = self.dice.get(self.mapHeight,"y seed for plate")/2 + self.mapHeight/2
		else:

And also the same two continents are far too narrow for their size, to my taste. It doesn't look natural either. Same is true for the smaller continent in #1 - it does not seem to be a full continent connected to the larger one via an island bridge either - instead, it is more like a loose outgrowth of it (which in turn raises the question of why it is there if it is not bridged continents, after all).
It is there because of plate boundaries. I tried to minimize these occurences but got too much water. It's not that easy to tweak unfortunately.
One way to achieve it might be to change the generate() function around line 200 by changing the self.movePlates(false) to self.movePlates(true), or, if that's not enough, by removing the self.erode() and self.movePlates(false) altogether. Both solutions, particularly the latter, would also create less hills and peaks however.

I suppose I could have just summed it all up as: can you please make your script produce not only earthlike terrain but also more earthlike continent placement and outline, too? Fatter continents (vertically-oriented if elongated and/or linked via an island bridge) closer to the equator and with less "outgrowths" (i.e. big offshoots which suddenly grow fatter than it would suit a continental "tail").
Did you try the Terra option? This one may be too Earthlike since it's predictably the same number of continents.

I'm not committing these changes to the script because I personnally prefer the script the way it is. I may add options if that seem to workn but options mean more clicking around or I should devise a better UI than the one provided by default.
 
Version 3.16

I added more rivers. I actually tried to use a different algorithm, but it's crap, so just increased the numbers.
Terra option now has a nice looking Arabia instead of some landbridges and islands.
 
For some reason the terrain mode seems stuck on "No Ice." I haven't seen a single ice square on land yet through about two dozen maps on several landmass settings, including one where the land actually extended all the way to the northern edge of the map. I don't really know Python, much less the Civ4 API, but it seems the only way this could happen is if self.climate is being explicitly set to 3 somehow?
 
It's weird, I get some ice when I run it. Pangaea is unlikely to have any ice since its landmass is more or less centered, and Mediterranean shouldn't have any. Even Terra is likely to have little or no ice on normal settings, but the 70%, 60% and 30% water settings should all have some ice. Which settings and map sizes did you try?
 
I've tried 70%, 60%, and both Earth options. It just occurred to me that I don't think I've seen the southern arctic region yet, but in all cases the far north is surrounded by ocean ice but has plains eventually yielding to tundra. These are Huge maps, which I gather might make a difference sometimes.

On a completely unrelated note, would it be possible to have a non-Earthlike "Old World Start" map? I like having guaranteed contact between most civs, to promote both cultural advancement and warfare, but a start in Denmark followed by one in Norway really turned me off to the regularity of Randomized Earth mode. I'm not even married to the Earthly east/west continental model; something like a fractured Pangaea would be neat, with one large mass and a variable number of smaller ones with intervening ocean space. Everyone starts on the big one, but there will be uncharted lands to explore mid-game. I would count seas that can be crossed without Astronomy as a single landmass for this purpose... early contact can still be made. (e.g., Japan and Britain are legitimately Old World.)
 
I've tried 70%, 60%, and both Earth options. It just occurred to me that I don't think I've seen the southern arctic region yet, but in all cases the far north is surrounded by ocean ice but has plains eventually yielding to tundra. These are Huge maps, which I gather might make a difference sometimes.
On huge maps, you're more likely to have some ice. Even without the No Ice option, ice lands are usually reduced to a few squares from the top and bottom edges of the map, and require contiguous lands. On 60% you should get some of them on most maps.
On a completely unrelated note, would it be possible to have a non-Earthlike "Old World Start" map? I like having guaranteed contact between most civs, to promote both cultural advancement and warfare, but a start in Denmark followed by one in Norway really turned me off to the regularity of Randomized Earth mode.
There is an issue with this, namely I can't guarantee that there is enough room on the biggest landmass for all the players. Anyway, you can change this by setting the allOnBest variable to true in findStartingPlot: Replace line 1711 allOnBest = false by allOnBest = true.
 
Do you (or anyone else for that matter) get hard lines on their grasslands with sections of it "greener" than the others? I have that issue with the tectonics map. Dicesare, this issue is consistant even when I run your tectonics map vanilla... I noticed it a while back when I first tried it out, but thought nothing of it at the time.
 
Nope. This even occurs when I run the game vanilla. Also, we tried to fix this already, remember? I was more asking Tejon if the same thing was happening to him. Although, if you think of anything else, that would be awesome. lol.
 
Back
Top Bottom