New(ish) map script: Big island

vktj

Warlord
Joined
May 6, 2012
Messages
237
I have created yet another fork of Totestra/Perfect world for 2021: Big island.

(Updated 2021-10-11: Fix bug with long horizontal coast; add version w/o bug fix as well a version using different random number generator)

This puts all of the players on a large single island. It’s possible to change the climate of the map; the island is near the equator, so even on a cold world there is little tundra on the map. The island has a feel of a realistic island, because the map is generated with plate tectonics, simulated rainfall, and so on.

There will usually be a few small islands to explore in the mid game and end game, but most of the game will be on the main island.

The normal maximum map size is 96x96 (just under 10,000 tiles), but there’s a “bigger maps” option hidden near the bottom of the option list which allows maps up to 160x160 in size (this slows down map creation quite a bit, hence hiding the option a little).

To install this map script, take the BigIsland.zip file, extract BigIsland.py, and install that .py file to one’s PublicMaps folder, which is a path which looks like C:\Program Files (x86)\2K Games\Civ4\Beyond the Sword\PublicMaps. The exact location will depend on how Civ4 was installed on your system.

This mapscript is also hosted on GitHub: https://github.com/samboy/misc-civ4-mapscripts

This file was updated on October 11, 2021.

The BigIsland.py script is the main one to install.

BigIslandV1.py is an older version of the script. While there is a bug where islands often times have long horizontal stretches of beach, it is more likely that there will be islands to explore in the midgame.

BigIslandRG32.py is identical to BigIsland, except it uses a different random number generator with more possible map seeds. All three height map sizes, with a huge map and a fixed seed, will have islands to explore in the midgame.
 

Attachments

  • BigIsland.zip
    157.4 KB · Views: 90
Last edited:
I think it's great work !
I like your mapscripts, I meant to comment on the Sandypelago one when I finally saw the updated version !

I'm always on the lookout for new mapscript, and my focus is to check if/what we can use to play relatively competitive multiplayer games on (you may have seen my post on this, which I just updated https://forums.civfanatics.com/threads/competitive-multiplayer-mapscript-pack.669336/#post-16074909)

Few things I noticed on yours :
- Toroïdal wrap would be good option I think, I don't see the negative of it here
- I noticed a couple of start when two players are 2 tiles away, albeit separated by water
- Starting start FOOD seems a bit inbalanced. At default there are many many starts that don't have ANY food resources. There seems to be a consideration of "patchy" ressource of the same type.
But 4x elephant, 4x marble or 4x stones (worse, 4x salt in a desert in my mod with that resource) are never going to be workable if capital has 0 food.
Turning on "Full of resources" improves it of course, and player bonus "Lots" does too of course, there just seems to be 4-6 food starts vs 1 food start with 4 "production" resource.
I would think for a competitive MP game you need to put "Full of Resources" + "Some" for everyone but I saw some abysmal starts in that configuration too

Generally I think 1 "real food" is compulsory, 2 food is considered strong start, 3 food extremely strong, more is unecessary/bit broken


Anyway, love your scripts. Meant to take it/them and enrich with few/my options, I don't know if you like the BTG style maps, perhaps you do or don't, but might make sense to discuss how we can converge work if you like my spirit and would support me adding few options to adapt in my MOD.
 

Attachments

  • Screenshot 2021-11-08 22.54.25.png
    Screenshot 2021-11-08 22.54.25.png
    406.9 KB · Views: 95
  • Screenshot 2021-11-08 23.01.01.png
    Screenshot 2021-11-08 23.01.01.png
    672.3 KB · Views: 89
  • Screenshot 2021-11-08 22.59.26.png
    Screenshot 2021-11-08 22.59.26.png
    681.2 KB · Views: 88
Adding a toric or cylindrical wrap option (this script supports neither: It’s supposed to simulate playing on a single island which is only part of a larger world) would be feasible, but I think such an option makes more sense with Totestra. If needed, it can be changed by editing the script by hand here:

Code:
        wrapString = "Flat"
        self.WrapX = False # Changed elsewhere, careful
        self.WrapY = False

(Make wrapString “Cylindrical”, “Toric”, or even “vktj is awesome”; it’s a string shown in error messages, nothing more)

(The WrapX value is changed elsewhere in the version of Totestra this code was based on, but isn’t changed in BigIsland).

To address the rest, the map script isn’t designed to make balanced multiplayer games. I know that Rich Marinaccio went to a lot of effort improving the starts back in the Perfect World days when Civ4 was a widely played multiplayer game; I also know he was never really able to make the kinds of “balanced” starts ideal for human-vs-human multiplayer games.

The Perfect World series is for making “alternate Earth” maps, and, as such, emulate human history. In real human history, multiplayer was not balanced, as described in great detail in Jared Diamond’s classic book “Guns, Germs, and Steel”. Likewise, this map script, while making a reasonable effort, won’t generate balanced starts, nor is it guaranteed to make unbalanced starts allowing one to win at deity difficulty level. It should give the player a good start allowing a win at noble or prince difficulty in single player (especially if the player is given bonus resources).

Since I only play single player — my only buddy who I used to play Civ4 with now lives 3,000 miles away and it’s not feasible to have a 2008 era game with an open port on today’s internet for obvious security reasons — this isn’t an itch I have a need to scratch. Considering this only has had four downloads in the last month, I just don’t think there’s enough interest in Civ4 here in late 2021 to try and make a Perfect World variant suitable for multiplayer. While I still love playing single player, Civ4 has gone the way of MySpace and people seeking the perfect balanced multiplayer map generator should probably bite the bullet, download Steam, get a new computer as needed, and start playing Civ6.

Rich tried to make it balanced, but the truth is, short of making a mirror map (even here there’s a first player advantage), trying to make a game balanced is an endless rabbit hole and endless non-productive discussion: Every player has a different idea of what “balanced” is, and people will frequently make claims that a given game is unbalanced without productive suggestions to make things more balanced. It got so bad with the Battle of Wesnoth community, experienced devs who were strong players finally made a rule: If you want to claim a given faction is unbalanced against another faction, you have to beat a dev multiple times in a row playing the faction you think is “strongest” while the dev will play the faction you think is “weakest” before we’ll take your claim seriously; even here some knob on the Internet would say “OK, you would kick my butt, but I still say it’s unbalanced”, and they would say “OK, then, that’s nice but we won’t tweak the game until you can consistently beat one of our strong players with the supposedly unbalanced faction”. (You have seen some of this in the discussion for your excellent “Beyond the play” mod where one of the first replies was a typical “It’s unbalanced” reply)

That said, you may want to look at this part of the code and tweak it to meet your needs:

Code:
        #Minimum number of hills in fat cross
        self.MinHillsInFC = 2

        #Max number of peaks in fat cross
        self.MaxPeaksInFC = 3

        #Max number of bad features(jungle) in fat cross
        self.MaxBadFeaturesInFC = 4

        #The following values are used for assigning starting locations. For now,
        #they have the same ratio that is found in CvPlot::getFoundValue
        self.CommerceValue = 20
        self.ProductionValue = 40
        self.FoodValue = 10

        #Coastal cities are important, how important is determined by this
        #value.
        self.CoastalCityValueBonus = 1.3
        #River side cities are also important, how important is determined by this
        #value.
        self.RiverCityValueBonus = 1.2

My suggestion would be to play Heroes of Might and Magic III instead, which still has a vibrant multiplayer community. With the Horn of the Abyss fan-made expansion, a lot of effort has been done with its random map generator to make it balanced for multiplayer.

(As an aside, “Play HOMM3” or “Play Civ6” is the only real answer to memory allocation failures. The way to fix memory allocation failures is for Firaxis or whoever has the original source code to re-compile it as a 64-bit binary, and have .dll files be new 64-bit files. That’s not going to happen, so my solution is to play smaller maps and fewer players; the absolute largest map I’ll have a map generator make is 192x128 or 160x160; personally, I won’t play anything larger than 144x96 and never more than 18 players. I usually play 76x60 with 9 players. Even with 76x60/9 players, it takes about a week of heavy duty playing to finish a game.)
 
Last edited:
Thanks for the thorough answer (and thanks for your compliment on Beyond the Game), I totally understand and ultimately agree with you, there can be several vision or let's say goals on how to play Civilization.
If the goal of this mapscript (like PerfectWorld) is to reflect the most organic alternative "earth" they can be, and you're happy with the starting positions as they are, by all means I can only support that. I was merely providing feedback and truth be told it was just also to just give (any) answer because I think you work deserves it.

I think I / we'll play this as is anyways, but most likely we'll do it more on Sandypelago, perhaps I'll adjust few things on it to make it more "ready to go", I hope that's fine with you :thumbsup:
 
Top Bottom