[Map Script] Tectonics

Thanks LDiCesare for clear instructions. That could fix it well.

I think the "problem" is that the normal tectonics map often creates very large areas of plains and desert without rivers or lakes. This creates a more demanding strategic situation (and I think it is realistic) but some players find these parts of the map dull - particularly if it cripples early development.

I like your "more rivers" solution, because it could make these areas more fun and usable, but does not risk the map simply becoming more like the maps propduced by the original Civ IV map script (which would defeat the purpose).

:cheers:
 
Thanks LDiCesare for clear instructions. That could fix it well.

I think the "problem" is that the normal tectonics map often creates very large areas of plains and desert without rivers or lakes. This creates a more demanding strategic situation (and I think it is realistic) but some players find these parts of the map dull - particularly if it cripples early development.

I like your "more rivers" solution, because it could make these areas more fun and usable, but does not risk the map simply becoming more like the maps propduced by the original Civ IV map script (which would defeat the purpose).

:cheers:


I like the big deserts etc.... unfortunately, the AI is clueless how to handle it.
 
By too arid, you mean too few rivers?
You can edit the script to get more. There are 2 rivers generators inside, one which is not used because it's really poor and the other one which is too complex...
Anyway just edit the seedRivers method of the riversFromSea class (lines 1387 and following):
Code:
	def seedRivers(self):
		climate = CyMap().getCustomMapOption(1)
		if (climate == 0):                 # Arid
			divider = 4
		elif (climate == 1):               # Normal
			divider = 2
		elif (climate == 2):               # Wet
			divider = 1
		elif (climate == 3):               # No ice
			divider = 2
		maxNumber = (self.width + self.height) / divider
You can lower the divider (Normal -> 1 means twice as many rivers) or change maxNumber to something like
Code:
		maxNumber = (self.width + self.height) * WHATEVER_YOU_LIKE / divider
If you want the rivers to be longer, you can change the minRiverLength variable (increase it) and the straightThreshold variable (lower it, at least 1) (around lines 1380-1385)


Cool thanks. This addresses the only gripe I have with tectonics.
 
There was an earth3.py file out there that removed the "only start in old world" feature and added tectonics to the earth2 script. Does anyone have that and could you post it here for download?

I tried doing it myself; removing the "old world only" part was easy, but I obviously didn't figure correctly which parts of tectonic have to be added to earth2. If anyone wants to give this a try I think it would be very good. Would give us a random seeded very earth like map with tectonics, which I think would be ideal.
 
There was an earth3.py file out there that removed the "only start in old world" feature and added tectonics to the earth2 script. Does anyone have that and could you post it here for download?

I tried doing it myself; removing the "old world only" part was easy, but I obviously didn't figure correctly which parts of tectonic have to be added to earth2. If anyone wants to give this a try I think it would be very good. Would give us a random seeded very earth like map with tectonics, which I think would be ideal.

Which part of tectonics? Initial civ placement? I suppose you're not talking about the Earth-like option of tectonics.
 
Yes, it was the civ placement script. I went back and checked the earth3 description. Otherwise, if you remove the restriction to old world starts only you get started on an island more often than not, often a one tile island.

I think I see exactly which part that is and will have a go at merging. It would be very cool to incorporate tectonics into the earth2 script to give a more realistic earth, but beyond my abilities at this point. Maybe it's not really compatible, anyway.

Thanks for the pointer.
 
I'm looking for a way to cut down the size of a Terra style map, so that the amount of available territory is more appropriately balanced against both the default number of players for the map's size, and the number of cities required for certain things (e.g. normal map requires 7 courthouses for Forbidden Palace).

I see a couple of calls to map.getGridWidth() and map.getGridHeight() which appear to be where this is determined, but no hard numbers anywhere. It must be somewhere... any pointers?
 
I'm looking for a way to cut down the size of a Terra style map, so that the amount of available territory is more appropriately balanced against both the default number of players for the map's size, and the number of cities required for certain things (e.g. normal map requires 7 courthouses for Forbidden Palace).

I see a couple of calls to map.getGridWidth() and map.getGridHeight() which appear to be where this is determined, but no hard numbers anywhere. It must be somewhere... any pointers?

There are no hard numbers on map size in the script. The sizes are just the default ones which must be defined in some xml file somewhere for the various map sizes. So you would want to modify that, pick a smaller map size or rewrite the map size rules inside the script (I think Tera increases map sizes in the script for example, but I never looked at how it's done)
 
For those curious as to what Tectonics layouts might look like (this is with BtS 3.19 along with BUG 4.2.0 so I'm not 100% sure that this is exactly the latest of the script). These are standard sized maps (as defined by the Tectonics script, which pulls from the base XML files) with the default option for Aridity Level.

Earthlike (70% Water)
Spoiler :


60% Water
Spoiler :


As you can see, there's a huge variation in the # of continents, with the Earthlike generally resulting in smaller continents then the 60% water. These maps are amazing with the highly varied terrain and lots of choke points.
 
^^ :D There's no doubt in my mind that Tectonics consistently produces the most varied maps and the most interesting gameplay results.

The only "downside" is that starting positions can vary a lot in quality - but to me that just adds to the interest and the need for flexible play and strategies.
 
Randomness was indeed one of the goals of the map script.
Much as I sometimes like to know how many continents there will be on a map, most of the time, I prefer not to know as it gives a huge advantage against the ai's in terms of strategy.
 
This is a great script! How would I go about randomly selecting moisture level but not include the No Ice option. Right now, when you select random, it seems that No Ice is one of the possibilities.

Also, is there a way to randomly set the world size and also make the possible world sizes closer in size. For instance, the script would randomly make the world size either Normal, Slightly smaller than Normal, or slightly larger than Normal.
 
This is a great script! How would I go about randomly selecting moisture level but not include the No Ice option. Right now, when you select random, it seems that No Ice is one of the possibilities.
I don't think it can be done without removing the No Ice option altogether, which can be done by replacing the 4 by a 3 in
Code:
getNumCustomMapOptionValues(argsList):
Also, is there a way to randomly set the world size and also make the possible world sizes closer in size. For instance, the script would randomly make the world size either Normal, Slightly smaller than Normal, or slightly larger than Normal.
I never toyed with map sizes. I believe it can be made something like what's done is smartmap for instance:
You must define a getFridSize function like that:
Code:
def getGridSize(argsList):
and do the computation inside. I suggest jsut downloading smartmap and ripping this function from the smartmap script. I think it should work fine. I believe it keeps the world area inferior or equal to the defautl value, though, so you may want to tweak it a bit (increase default surfaces and provide more randomness).
 
For those curious as to what Tectonics layouts might look like (this is with BtS 3.19 along with BUG 4.2.0 so I'm not 100% sure that this is exactly the latest of the script). These are standard sized maps (as defined by the Tectonics script, which pulls from the base XML files) with the default option for Aridity Level.

Earthlike (70% Water)
Spoiler :


60% Water
Spoiler :


As you can see, there's a huge variation in the # of continents, with the Earthlike generally resulting in smaller continents then the 60% water. These maps are amazing with the highly varied terrain and lots of choke points.

How would I take snapshots of the entire world in the editor like that?

I'm trying to modify this script to be more mountainous and to produce less randomness in plate sizes also. I see the following:

Code:
	def sowSeeds(self):
		self.mostLands = self.dice.get(2,"mostland hemisphere")
		for i in range(self.numSeaPlates):
			self.plate[i] = self.dice.get(3,"Sea altitude")
		for i in range(self.numContinents):
			self.plate[self.numSeaPlates + i] = self.landAltitude + self.dice.get(3,"Land altitude")
		for i in range(self.numContinents + self.numSeaPlates):
			x, y = self.getCoord(i)
			while self.plateMap[y*self.mapWidth + x] != 0:
				x, y = self.getCoord(i)
			self.plateMap[y*self.mapWidth + x] = i
			self.plateSize[i] = 2 + self.dice.get(6,"Some randomness in plate sizes")

That last line sees to give randomness to plate size, how can I change that to produce less randomness? Do I just lower the 6? Delete the 2?
 
*bump*

Can anyone answer those questions?
 
Ooops; sorry I missed your post for so long.
I'm not sure what you mean by taking snapshots.
As for mountains and sizes randomness:

Randomness:
If you set Platesize to 10. You'll have absolutely zero randomness in plate growth, so the plates will be a Voronoi diagram. If you want some randomness but not too much, make the value bigger, but less than 10. Something like 4 + self.dice.get(5,"Some randomness in plate sizes") for instance.
In fact, there are 2 factors in the randomness:
1) all plates don't have the same value. This means plates with a bigger value will be bigger than those with a lower valu, on average.
2) the smaller the values, the more likely plates won't grow, so the more random and chaotic the plates will be. If you set the value to 1, the plates would likely have strange shapes (and the generation would also take more time).
If you want the plates to have similar sizes, you may also want to sow the seeds more or less regularly, or at a minimum distance from each other.

More mountainous:
Lots of options to do that, but you'll have to fine tune a lot too, as the figures don't allow a lot of fine tuning.
You can add hotspots. That's rather poor imo, as you won't get many ranges.
You can add plates. The more plates, the more mountains.
You can change peak and hill altitudes. Lowering peakAltitude means more peaks. Be careful, though, as there's little range to play with. 12 is the norm. On Mediterranean maps, this would make a lot of mountains, so the value is set to 13. On Pangaea, it's only 11. If you set it to 11 or even 10, you're likely to get peaks about everywhere.
 
Thank you. I wasn't in too huge of a rush for the answer to be honest cause I haven't touched it since I posted that - over a month - but I hope to get back to it real soon. That's why I bumped it. And again, thanks for answering it so quickly, no big deal about missing it the first time.

Anybody else know how to take those screenshots? No matter how far I zoom out I can't take a snapshot of the entire map at once - is it just because I'm using a larger than standard map size maybe? That seems like the answer, but I was hoping there was some magic button I could press that would jpg the entire map and minimap regardless of the world size.
 
Thank you. I wasn't in too huge of a rush for the answer to be honest cause I haven't touched it since I posted that - over a month - but I hope to get back to it real soon. That's why I bumped it. And again, thanks for answering it so quickly, no big deal about missing it the first time.

Anybody else know how to take those screenshots? No matter how far I zoom out I can't take a snapshot of the entire map at once - is it just because I'm using a larger than standard map size maybe? That seems like the answer, but I was hoping there was some magic button I could press that would jpg the entire map and minimap regardless of the world size.

In BtS, you can get a nice screenshot of the map from the replay screens after you retire the game.
 
Ooops; sorry I missed your post for so long.
I'm not sure what you mean by taking snapshots.
As for mountains and sizes randomness:

Randomness:
If you set Platesize to 10. You'll have absolutely zero randomness in plate growth, so the plates will be a Voronoi diagram. If you want some randomness but not too much, make the value bigger, but less than 10. Something like 4 + self.dice.get(5,"Some randomness in plate sizes") for instance.
In fact, there are 2 factors in the randomness:
1) all plates don't have the same value. This means plates with a bigger value will be bigger than those with a lower valu, on average.
2) the smaller the values, the more likely plates won't grow, so the more random and chaotic the plates will be. If you set the value to 1, the plates would likely have strange shapes (and the generation would also take more time).
If you want the plates to have similar sizes, you may also want to sow the seeds more or less regularly, or at a minimum distance from each other.

More mountainous:
Lots of options to do that, but you'll have to fine tune a lot too, as the figures don't allow a lot of fine tuning.
You can add hotspots. That's rather poor imo, as you won't get many ranges.
You can add plates. The more plates, the more mountains.
You can change peak and hill altitudes. Lowering peakAltitude means more peaks. Be careful, though, as there's little range to play with. 12 is the norm. On Mediterranean maps, this would make a lot of mountains, so the value is set to 13. On Pangaea, it's only 11. If you set it to 11 or even 10, you're likely to get peaks about everywhere.

When we could expect a new version of your mapscript ? Tectonics runs perfectly with Macs, especially when Xyth's "History Rewritten" is enabled ,so i hope your next version will be nice too ;)

If we could have more options for ensuring a lot of choices...

Would like to have glacial world like Würm in 10000 BC, or tropical world or desertic world or more mountainous or a world where strategic ressources are common but food ressources very rare, or other extrem type of world...

Could you make that without keeping the macs from using this "Tectonics" mapscript ?

Thanks if you could...
 
When we could expect a new version of your mapscript ?
I'm unlikely to update it since I lost my almost broken BtS CD and therefore couldn't reinstall on my computer. And I don't feel like running Warlords so for the moment I'm not touching it.
Tectonics runs perfectly with Macs
There's no reason why it shouldn't indeed.

If we could have more options for ensuring a lot of choices...

Would like to have glacial world like Würm in 10000 BC, or tropical world or desertic world or more mountainous or a world where strategic ressources are common but food ressources very rare, or other extrem type of world...
The script doesn't touch the resources at all, only climate and landscape. Increasing or decreasing the thresholds for desert/ice etc. is feasible by tuning the values in the script but as I said I'm not going to make a new version anytime soon (maybe when civ V comes out if I think I won't like that game, then I'll get back to Civ IV).
 
Top Bottom