[MapScript] Erebus Continent

@Wodan: what Tholal said ;) for example, there's a high chance that a barbarian city will eventually spawn there. and it won't ever contribute to the game in any way, since the barbs will never build a ship and sail to the mainland.
 
I can do that easily enough. A creative mod author would play around in the DLL so I could define some extra settings on the plots so the event system would spawn volcanos on plate boundries over the course of the game... ooo, imagine how fun it would be if you had an earthquake event that only happened to cities that were built on fault lines

That sounds very cool!
 
[to_xp]Gekko;9031430 said:
@Wodan: what Tholal said ;) for example, there's a high chance that a barbarian city will eventually spawn there. and it won't ever contribute to the game in any way, since the barbs will never build a ship and sail to the mainland.

Got it, though it's a shame we can't simply get FFH's AI improved. That would be the better solution.

But I play RifE anyway....
 
I can do that easily enough. A creative mod author would play around in the DLL so I could define some extra settings on the plots so the event system would spawn volcanos on plate boundries over the course of the game... ooo, imagine how fun it would be if you had an earthquake event that only happened to cities that were built on fault lines.

..... That is genius. Since on my end it would just be a few variables for a plot, consider it done; Just make a list of what you need. :p

Got it, though it's a shame we can't simply get FFH's AI improved. That would be the better solution.

But I play RifE anyway....

I'm planning to merge (or at least emulate) Tholal's changes, to try and get a decent naval AI in RifE. ;)
 
I actually have code in like you're asking for, but I don't use it on all of the islands and it only fills in single tile gaps. I also have code that can break land (again, only one tile) to get an inland sea to connect to the ocean. I can add a 'minimum island size' option that simply deletes any islands smaller than that, but only if you'll give up y-wrap :D

I'm more worried about large islands than small ones, since large means civilizations can start on them.

Actually it looks like there's already some code for "old world" versus "new world" in the script, so it's a very simple change to ensure that the "old world" is always a single landmass. Problem then is things could become cramped if there's actually significant land area outside the old world.
 
..... That is genius. Since on my end it would just be a few variables for a plot, consider it done; Just make a list of what you need. :p
That depends on what you can find a use for. Here is what I have readily available, or can calculate very easily...

Altitude - float 0.0-1.0 - Can also be supplied as altitude above sea level with 0.0 as sea level and 1.0 as the highest point, that would probably be more useful.

Average Temperature - float 0.0-1.0 - This is an average of the annual temperature, the 'hot' sun band moves from 0 lat to +20 lat for 1/4th of the simulated year and form 0 lat to -20 lat for 1/4th. This value is, well, the average, and it is modified by wind and altitude data.

Average Rainfall - float 0.0-1.0 - This is an average of four seasons of simulated geostropic and monsoon rain seasons.

Plate Map - int 0 - n - This it the base plate map when n = the total number of plates -1. I can't imagine the raw plate map would be useful but I can generate a plate boundry map. Best guess would be a bool, true for plots on a plate bountry, false otherwise.

There are a couple of others but I don't think they'd be very usefull since you can get the same data working with existing plot information (rivers, etc).

I think some would be fun if used for weather/geological random events. Rainfall for flood events and plate boundries for volcanos and earthquakes. Those are the big ones, i coudl even convert the rainfall map from 0-1 to an int 0-100 and you could just querry it for an event chance based on rain. I think that would actually work pretty well in RiFE since it would be based on the 'natural' climate model and then you could adjust it based on the current state of the flexible climate, for example if an area that was jungles is now snow you could have a blizzard instead of a tropical storm.
 
I'm more worried about large islands than small ones, since large means civilizations can start on them.

Actually it looks like there's already some code for "old world" versus "new world" in the script, so it's a very simple change to ensure that the "old world" is always a single landmass. Problem then is things could become cramped if there's actually significant land area outside the old world.
That's all that is used for. Basically, old world is the largest continent and will only be a single continent unless it's really small, then it adds another continent to make sure you have enough room. It also tries to ensure you never get a lone player on an area by themselves.

The basic formula is that if the largets continent is less than 66% of the total available land it will add additional areas until the 'old world' is at least 66% of the total available land. There is an absolute hard coded minimun continent size of 11 tiles however it will initially only select areas that has at least 10% of the total available land, that 10% threshold decreases each time it has to re-iterate through the list of areas. Actually, I think I changed those percentages recently... but that's close to what they are.

On a large map you typically have about 1800 land tiles, so the 'old world' needs 1200 tiles and wants areas that are 180+ tiles. So if the largest continent is 1100 tiles it will add a second to the old world list, if it can't find another that is at least 180 tiles it will drop both the total tiles needed and the minimum area sizes down to 75% of their previous value and then try again. It continues that process until satisfied or until the minimum old world area size hits the base (11 tiles) at which time I give up to prevent it from adding a ton of small islands to the list. What normally happens is you get one continent for everybody to start on unless it's too small then you will get a second and very rarely a third or fourth.

In fact, you can tell when something breacks based on the starting plots, if you get players spread out on a lot of landmasses there was a python exception but you have the exceptions off so you didn't get the pop-up :)
 
First off: I dislike using floats in the DLL (Mostly because Xienwolf has said before that it can cause issues with multiplayer), so what I'd say to do is store an int, 100 times larger than your float. Same way decimal xp works, actually.

Altitude - float 0.0-1.0 - Can also be supplied as altitude above sea level with 0.0 as sea level and 1.0 as the highest point, that would probably be more useful.

Again, 0 - 100 rather than 0-1, but will do.

Average Temperature - float 0.0-1.0 - This is an average of the annual temperature, the 'hot' sun band moves from 0 lat to +20 lat for 1/4th of the simulated year and form 0 lat to -20 lat for 1/4th. This value is, well, the average, and it is modified by wind and altitude data.

Average Rainfall - float 0.0-1.0 - This is an average of four seasons of simulated geostropic and monsoon rain seasons.

Will do; Will have to be named something other than Temperature or Humidity, as those are taken. :p

Plate Map - int 0 - n - This it the base plate map when n = the total number of plates -1. I can't imagine the raw plate map would be useful but I can generate a plate boundry map. Best guess would be a bool, true for plots on a plate bountry, false otherwise.

This one I think would be the best; And yes, a bool would work the best here. Might want a chance to flip a few in the center of plates as well; Simulated hotspots, like Hawaii or Yellowstone.

I think some would be fun if used for weather/geological random events. Rainfall for flood events and plate boundries for volcanos and earthquakes. Those are the big ones, i coudl even convert the rainfall map from 0-1 to an int 0-100 and you could just querry it for an event chance based on rain. I think that would actually work pretty well in RiFE since it would be based on the 'natural' climate model and then you could adjust it based on the current state of the flexible climate, for example if an area that was jungles is now snow you could have a blizzard instead of a tropical storm.

Agreed. Alot of it wouldn't be used immediately, but it would be eventually, particularly for terrain altering events. ;)
 
Hmm... I'll have to check his terrain types, may be the marsh/wetland like you mentioned. Do other FfH scripts like Erebus.py or MountainCoast.py work with Orbis

Erebus (1.06/1.07) and Erebus Continent 2.00 both work, but Erebus continent 2.56 did not ( I had the same problem as the other poster). I have not yet tried 2.58, and for some reason the mod did not list Mountain Coast, even though I had it in the proper folder.
 
First off: I dislike using floats in the DLL (Mostly because Xienwolf has said before that it can cause issues with multiplayer), so what I'd say to do is store an int, 100 times larger than your float. Same way decimal xp works, actually.
Easy enough, hell I can give you letters if you want :p

This one I think would be the best; And yes, a bool would work the best here. Might want a chance to flip a few in the center of plates as well; Simulated hotspots, like Hawaii or Yellowstone.

Agreed. Alot of it wouldn't be used immediately, but it would be eventually, particularly for terrain altering events. ;)
You and your quick hacks :)

I actualy have a second heightmap used for the plates themselves, this is what gets added to the base heightmap to create the mountains and basic landmass shapes. A 'hot spot' is a point where the surface plate is weak or thin (relatively anyway) so I can calculate accurate hotspots by picking the lowest points on the plate height map. Why fake it :p

The only thing you'd need to do is make sure it looks good in the game. For example if you found a hot spot in the ocean you'd wouldn't want to create a land tile without making its eight neighbors into coasts and making sure all of the neighbors of those new coasts were either land or ocean, but never deep ocean.

To keep things simple, I could check for that when generating the map and make sure all 'hot spots' were not in deep ocean tiles. Hell, we could even get a new feature or improvement sort of like the existing 'smoke' except white, and place it on any peaks or hills that were also hot spots so you could identify dormant volcanos. That way you could actually do some damage with them when they blew :)

Edit: Should we continue this in the RiFE forum?
 
Erebus (1.06/1.07) and Erebus Continent 2.00 both work, but Erebus continent 2.56 did not ( I had the same problem as the other poster). I have not yet tried 2.58, and for some reason the mod did not list Mountain Coast, even though I had it in the proper folder.
Interesting, and that is very helpful, thank you! Now I just need to figure out what Orbis has against progress! :) (ok, what I broke...)
 
Easy enough, hell I can give you letters if you want :p


You and your quick hacks :)

I actualy have a second heightmap used for the plates themselves, this is what gets added to the base heightmap to create the mountains and basic landmass shapes. A 'hot spot' is a point where the surface plate is weak or thin (relatively anyway) so I can calculate accurate hotspots by picking the lowest points on the plate height map. Why fake it :p

The only thing you'd need to do is make sure it looks good in the game. For example if you found a hot spot in the ocean you'd wouldn't want to create a land tile without making its eight neighbors into coasts and making sure all of the neighbors of those new coasts were either land or ocean, but never deep ocean.

To keep things simple, I could check for that when generating the map and make sure all 'hot spots' were not in deep ocean tiles. Hell, we could even get a new feature or improvement sort of like the existing 'smoke' except white, and place it on any peaks or hills that were also hot spots so you could identify dormant volcanos. That way you could actually do some damage with them when they blew :)

Edit: Should we continue this in the RiFE forum?

I didn't realize you could get true hotspots easily; In that case, we should do that. :lol:

And yes, I'd say continue in the RifE team forum. No need to clutter your thread. ;)
 
[to_xp]Gekko;9033660 said:
to come back on topic, I'll bump this post : http://forums.civfanatics.com/showpost.php?p=9031106&postcount=355 ;)

so is it intended that modify selection means no jungle?
It can, but I actually made a little change to the way that works for tundra and jungle last night so it's less likely. Works fine with deserts but with both tundra and jungles if you had no civ that prefered them they usually end up not getting placed at all except on low sea level, low cohesion maps.

Oh, and the clan aren't set up to prefer jungle. My 'flavor' preferences are set up mostly around game mechanics, once the clan actually has an advantage to starting in the jungle I'll add that, until then they just try to start close to other civs.

[to_xp]Gekko;9033660 said:
btw, I just got another python exception, too bad I haven't enabled logging yet :(
You broke it!

I think I fixed that one last night too :)
 
nice, can't wait to try out this last fix. modify selection works great, it's just that you don't expect it to completely disable terrains, only "override selection" should do that. :goodjob:

what about that screenshot btw, would it be worthwhile to add some code that would merge large islands like that one with the mainland? it seems that people are avoiding medium and low cohesion like plague due exactly to not wanting separate continents :lol:
 
It can, but I actually made a little change to the way that works for tundra and jungle last night so it's less likely. Works fine with deserts but with both tundra and jungles if you had no civ that prefered them they usually end up not getting placed at all except on low sea level, low cohesion maps.

Oh, and the clan aren't set up to prefer jungle. My 'flavor' preferences are set up mostly around game mechanics, once the clan actually has an advantage to starting in the jungle I'll add that, until then they just try to start close to other civs.


You broke it!

I think I fixed that one last night too :)

The Clan has large benefits for it in RifE (though mostly in the form of burning it down. :p) so should start near it at least in that mod.
 
still on the topic of a hypothetic "merge island with mainland" routine: something like that would definitely make medium/low cohesion maps usable. mapscript generates snaky continents divided by thin bodies of water. routine links the islands together, creating a single landmass with an interesting shape. would make navies useful without making them actually needed, that might be great :)
 
[to_xp]Gekko;9034462 said:
I think all major modmods have bonuses for jungle for the clan, WM will in 7.5 and Orbis as well I guess.
Except the root of all modmods still has nothing for them in jungles. Believe it or not I'm trying to maintain support for Fall From Heaven :)

[to_xp]Gekko;9034474 said:
still on the topic of a hypothetic "merge island with mainland" routine: something like that would definitely make medium/low cohesion maps usable. mapscript generates snaky continents divided by thin bodies of water. routine links the islands together, creating a single landmass with an interesting shape. would make navies useful without making them actually needed, that might be great :)
Interesting, excep that the whole idea of medium and low cohesion maps is to make the maps less cohesive which should result in multiple landmasses more often than snakey continents. If you want a high likelyhood of a single continent you should be using high cohesion maps and then using the sea level to control the size of the land.

And I started on part 2 of the island changes (high cohesion maps ONLY) last night but it's not ready for testing so I'm not entirely sure how well it will work. Basically, before shrinking the heightmap down to the final map size I search for small islands and sink them down below sealevel, I also sink them an extra little random amount and then recalculate the sea level. I have also removed the final pass that removed small islands that survived, I miss having them scattered around.

You'll probably never convince me that having islands connect with the mainland is a good idea but you can keep trying. What I can do (can, not will :p) is wait until after all of the players have been placed and then if no path exists between any two player starts I can trace between them and create a valid path. This would forcibly connect continents with each other and well as flatten any peaks that create impassable ranges. That's all assuming I decide to do that though...
 
Top Bottom