[Request] Earth-like Mapscript

alms66

Warlord
Joined
Jan 3, 2005
Messages
273
Location
Louisiana
I said before civ4 was released that the map generator looked horrible in the screenshots I'd seen, and it turned out to be true. IMO, all the default scripts produce horrible results. None are earth-like, none are realistic and none look good (the three qualities I look for and want most out of my maps, in the order of preference).

Then came the SmartMap and Tectonics scripts from the mod community. SmartMap, while loaded with options, still doesn't produce good looking or realistic maps, IMO - it is great for balanced maps though, not a feature I'm looking for. Tectonics produces good-looking and realistic maps, but they are far from earth-like. It's fairly common to have 5 distinct landmasses using that script, verses the two (the Americas and Eurasia/Africa/Austrailia) in the real world. There are islands too, but those don't count as landmasses (i.e. massive pieces of land). ;) But it would be nice to have little islands like the Tectonics script has.

Firaxis then released the Fractal script, which produced the most earth-like and best looking (I've tried custom_continents with 2, but it looks totally ridiculous) results of any script to date, so that's what I've been using mostly. For the most part, the terrain is completely unrealistic looking with single mountains here and there, patchwork lakes, forests and jungles, etc. But there's an even bigger problem with this script, and it is the reason I'm writing this post now. I just wasted 4 hours on a game, only to discover it's practically a pangea map. I hate those, and they are rather common with this script. The two landmasses were so close that they may as well have been one landmass.

I've been giving some thought to how to create the perfect mapscript (for me at least, though I'm sure many others would like it as well). Here's what I've come up with:

Earth-like
To ensure an Earth-like map, one must ensure there will be two landmasses and that they are seperated by at least one tile of ocean, though for gameplay purposes, I'd make that three tiles. So, it makes sense then to generate each landmass in it's own seperate 2d array, or it's own hemisphere if you will, right? Limit the landmass to within 3 tiles of the edge of that 2d array, and make sure it obeys the 70% water rule. It would be nice if the script randomly determined if the hemispheres would be a 50/50 split, a 60/40 split or a 70/30 split, and maybe even allow the user to choose it during setup or leave it random. Once each hemisphere is generated, you then merge them into a single map.

Realistic
As I said before, the Tectonics script produces the most realistic looking maps, so I'd suggest, with the permission of the creator of course, borrowing the climate generation and the feature generation code from this script. I'd also try to create the islands like that script produces, as they give a more Earth-like and realistic feel.

Good-Looking
Well, if you can do the first two, this third one should automatically follow. But, as I said before, the fractal script generates some fairly good-looking landmass shapes, so I'd borrow the code to generate the landmasses from this script and just modify it to fit the Earth-like requirements above.

I'd like to sit down and create this script for the community, however, I just don't have the time anymore to undertake such projects. My only real day off is Sunday, and that's my civ day - nothing messes with my civ day... nothing...:goodjob:
So, anyway, if someone could create this script, I and many others would be greatly appreciative.
 
Gunner said:
Well this certainly would be an admirable goal, but it also seems like it would be quite difficult (I know nothing about map scripts.)
To be honest, I know very little about the way map scripts operate myself - well, I have a good guess, but I've never even opened one up to take a look...hehe. Why bother, when I know I don't have the time to do anything with it?:cool:
Though, I do suspect implementing this would be rather easy if map generation is as I suspect, first generate landmass, then generate features, then climate, finalize -> start game (something close to that)
 
What your looking for is called Terra, it is one of the best mapscripts imo. It has the closed to real life and tends to have around 7 contonents pushed together in 2 main land masses.
 
Jeckel said:
What your looking for is called Terra, it is one of the best mapscripts imo. It has the closed to real life and tends to have around 7 contonents pushed together in 2 main land masses.
On your suggestion I tried it out for the first time just now. You're right, it's fairly close to what I want in terms of the layout of the map, though it still has issues...

1. IIRC, it doesn't use standard map sizes (the script overrides them) therefore it would be incompatible with the XXL Mod.
2. I don't want civs all on one side of the world, that's not the gameplay I'm looking for.
3. Patchwork... all the default scripts have it, whether it be islands, lakes, or even terrain, it's horrible to look at and it's not realistic at all. It's kind of like looking at a wall after someone shoots it with a paintball gun... except in this case it's an island gun (or lake, or terrain/feature type).
 
Before you see it and get your hopes up, I've made a mapscript which imitates Terra with even more Earthy parameters.

http://forums.civfanatics.com/showthread.php?t=184377

But it still has most of the flaws and 'features' of terra, just, slightly mitigated in some places. I double-layered the fractals in a lot of places and played with some values (including lowering the grain for most continents), and it usually produces larger swaths of similar terrain.

**Note: Features include non-standard map sizes and players starting on different hemispheres. HOWEVER, those are two of the easiest things to remove from the mapscript, both are right at the top, and you should be able to safely delete them (the definitions to remove are: def getGridSize and def findStartingPlot). Of course, smaller maps means less earth-accuracy, but I don't think that's what you're looking for.

**Doublenote: I was already tinkering with this, so it isn't in reply to your request; just a potentially pleasant coincidence.

**Triplenoteedit: I forgot to mention, I DID try to make this compatible with the tectonics climate and rivers placement, and it did work. However, it didn't turn out as well as the normal climate setup did. That may change in the future.
 
What you've done there is very interesting GRM, unfortunately, it's a little too familiar for my tastes.
 
Pretty much what I thought; however, you can still apply the advice in the previous post regarding the lines near the top of the file for my map; the same lines appear in the terra file (getgridsize and findstartingplot). If you open up Terra.py in the publicmaps folder of your civ directory and delete those definitions (and the text immediately under them), it should create the same kind of map with full random starting positions and standardized map sizes.

And, if you want to mitigate the "patchwork" effect, you can find the Matrix for Grainsizes (it will be a 4x6 set of low numeric values immediately preceded by map sizes) you can lower all the values to increase terrain and plot type clumping (no lower than 1, though).

Edit: I got curious and tried it to see if it works, since the changes were easy enough. It does, but I don't notice a huge reduction in "patching", as it were. You'll at least get starts on seperate continents, and normalized map sizes, with this.
 

Attachments

Thanks GRM, I appreciate the work, and will give it a try in a minute. I'll post when I have something to say about it, if anything.
 
Well, I've tried it out a bit now. It's not perfect by any means, but at least I don't get the pangea's I get with fractal. One thing that really bothers me about it though, is that I see way more civs starting in the arctic than on any other scripts. I really dislike that. :mad: Someone really needs to rewrite that crappy civ placement that was provided with the game. I suppose switching up between fractal, terratight and tectonics will keep me going on the map front until civ5 or someone fulfills my request though. Now let's just hope someone makes a mod that will keep me civving until civ5.

Here's hoping they get that one right.:beer:
 
I'm working on another mapscript based on terra, this one a lot more like terra but with more latitude/longitude randomization, and the maps occasionally come out very well; but half the time they come out looking awful, or game-breakingly awful. Once I get the kinks out, I am going to play with the civ placement; I am pretty sure I can use existing tags to force civ placement in between latitudes of 75 and -75, since I hate those "tundra oasis" starts, too.
 
Yes, I saw that you were working on that in another thread, GRM. If you need help with testing it or anything like that, let me know. I'd be happy to try and spot & report problems for you.
 
Back
Top Bottom