PerfectWorld3

So far I have been unable to finish a game of Civ 6. I keep getting a bug that crashes the game when you conquer a city late game. When I have a few games under my belt, I'll see what I can do.
 
So far I have been unable to finish a game of Civ 6. I keep getting a bug that crashes the game when you conquer a city late game. When I have a few games under my belt, I'll see what I can do.

I haven't made it past the mid-game yet either. It's mostly due to trying to find mod solutions to bugs or questionable balance and design.

Looking at map generation, I think there's a genuine need for some climate zoning. This time around, they decided not to do separate continent art styles, which is probably a good idea given the limitations in map size... it was never really convincing in civ5. But neither have they taken the opportunity to introduce more variety according to climate... it's just that same, stippled pine forest and the same, dense jungle. These look really odd when they're in close proximity.

So, less available tile art with an even greater need for variety. Hopefully, introducing new terrain and feature models won't be out of reach this time.
 
Also, it's possible that Civ 6 will have a really good map generator and maybe I won't need to do anything.
You're not going to be that lucky :)
  • Actually, the base fractals do a good job and you can almost use them for your base heightmap as is.
  • Climate code is the same old latitude limitations on a fractal of it's own so it's functional but not exactly pretty.
  • Rivers...
  • Lots of hardcoded stuff like resources not working if you add more continents than they used in the base game.
  • We've lost the ability to customize map options within the map script alone and you need your map script plus updates to two different tables just to get a custom map script into the game.
  • Starting plot calculations are some of the worst in the series so far, and it's sensitive.
On the plus side we have some cool new toys like cliffs and from a gameplay perspective jungles aren't as brutal as they were in Civ 4 or 5 and marshes are actually not entirely a bad thing. The continent system has some interesting potential as well. The city changes make lonely small islands effectively useless, a few close islands can work well but stretched out island chains won't. On the flip side, there are more uses for mountains with district adjacency bonuses and as a source of fresh water with an aqueduct. In fact, terrain in general isn't as critical as it was in Civ 4 or 5 since smart district placement can overcome many shortages and they've gotten away from multiplier bonuses in favor of linear yields from buildings/districts. This should make it a little easier to generate usable maps without having to give up the massive deserts or other cool effects of your climates.
 
We've lost the ability to customize map options within the map script alone and you need your map script plus updates to two different tables just to get a custom map script into the game.

Hi Seven05! Lonnng time. Can you go in to more detail here? Does this mean that map scripts will collide with one another if each author has to change these tables?
 
Hi Seven05! Lonnng time. Can you go in to more detail here? Does this mean that map scripts will collide with one another if each author has to change these tables?
Yeah, I'm still hanging around. Things are different now though, you're a dad and I'm a grandpa... um, by coincidence before anybody thinks we're related :)

I hate to completely hijack your Civ 5 thread with talk about Civ 6 so I'll hide it:
Spoiler :
Yes, things will collide if not done correctly but you can make map specific options that will play nicely alongside other custom map options. You still have map specific settings and you can control which of the map settings (including the basic settings) show up per map but everything is defined in the database, not nicely encapsulated in a single DLL anymore. Here is what I needed to add my new small continents map:
Code:
<?xml version="1.0" encoding="utf-8"?>
<GameInfo>
    <Maps>
        <Row File="SmallContinents.lua" Name="Small Continents" Description="Small Continents" SortIndex="5"/>
    </Maps>

    <Parameters>
        <Row Key1="Map" Key2="SmallContinents.lua" ParameterId="WorldAge" Name="LOC_MAP_WORLD_AGE_NAME" Description="LOC_MAP_WORLD_AGE_DESCRIPTION" Domain="WorldAge" DefaultValue="2" ConfigurationGroup="Map" ConfigurationId="world_age" GroupId="MapOptions" Hash="0" SortIndex="230"/>
        <Row Key1="Map" Key2="SmallContinents.lua" ParameterId="Temperature" Name="LOC_MAP_TEMPERATURE_NAME" Description="LOC_MAP_TEMPERATURE_DESCRIPTION" Domain="Temperature" DefaultValue="2" ConfigurationGroup="Map" ConfigurationId="temperature" GroupId="MapOptions" Hash="0" SortIndex="240"/>
        <Row Key1="Map" Key2="SmallContinents.lua" ParameterId="Rainfall" Name="LOC_MAP_RAINFALL_NAME" Description="LOC_MAP_RAINFALL_DESCRIPTION" Domain="Rainfall" DefaultValue="2" ConfigurationGroup="Map" ConfigurationId="rainfall" GroupId="MapOptions" Hash="0" SortIndex="250"/>
        <Row Key1="Map" Key2="SmallContinents.lua" ParameterId="SeaLevel" Name="LOC_MAP_SEA_LEVEL_NAME" Description="LOC_MAP_SEA_LEVEL_LOW_DESCRIPTION" Domain="SeaLevel" DefaultValue="2" ConfigurationGroup="Map" ConfigurationId="sea_level" GroupId="MapOptions" Hash="0" SortIndex="260"/>
        <Row Key1="Map" Key2="SmallContinents.lua" ParameterId="Resources" Name="LOC_MAP_RESOURCES_NAME" Description="LOC_MAP_RESOURCES_DESCRIPTION" Domain="Resources" DefaultValue="2" ConfigurationGroup="Map" ConfigurationId="resources" GroupId="MapOptions" Hash="0" SortIndex="270"/>
        <Row Key1="Map" Key2="SmallContinents.lua" ParameterId="StartPosition" Name="LOC_MAP_START_POSITION_NAME" Description="LOC_MAP_START_POSITION_DESCRIPTION" Domain="StartPosition" DefaultValue="2" ConfigurationGroup="Map" ConfigurationId="start" GroupId="MapOptions" Hash="0" SortIndex="280"/>
    </Parameters>
</GameInfo>
You can see the options defined by the map script and it's not too complicated unless you want to add more the the default options in which case you need another set of database updates to add the selections for each option. To use the map options within the map script is not completely unlike what we've had before:
Code:
local sea_level = MapConfiguration.GetValue("sea_level");
That key, "sea_level" in this case, comes from a different set of tables (this is from Gedmon's mod):
Code:
    <DomainValues>
        <Row Domain="ResourcesPlacement" Value="PLACEMENT_DEFAULT"     Name="LOC_MAP_RESOURCES_PLACEMENT_DEFAULT_NAME" Description="LOC_MAP_RESOURCES_PLACEMENT_DEFAULT_DESCRIPTION"     SortIndex="10"/>
        <Row Domain="ResourcesPlacement" Value="PLACEMENT_IMPORT"     Name="LOC_MAP_RESOURCES_PLACEMENT_IMPORT_NAME"     Description="LOC_MAP_RESOURCES_PLACEMENT_IMPORT_DESCRIPTION"     SortIndex="20"/>       
       
        <Row Domain="FeaturesPlacement" Value="PLACEMENT_DEFAULT"     Name="LOC_MAP_FEATURES_PLACEMENT_DEFAULT_NAME"     Description="LOC_MAP_FEATURES_PLACEMENT_DEFAULT_DESCRIPTION"     SortIndex="10"/>
        <Row Domain="FeaturesPlacement" Value="PLACEMENT_IMPORT"     Name="LOC_MAP_FEATURES_PLACEMENT_IMPORT_NAME"     Description="LOC_MAP_FEATURES_PLACEMENT_IMPORT_DESCRIPTION"     SortIndex="20"/>       
       
        <Row Domain="CivilizationPlacement" Value="PLACEMENT_DEFAULT"     Name="LOC_MAP_CIVILIZATIONS_PLACEMENT_DEFAULT_NAME" Description="LOC_MAP_CIVILIZATIONS_PLACEMENT_DEFAULT_DESCRIPTION"     SortIndex="10"/>
        <Row Domain="CivilizationPlacement" Value="PLACEMENT_TSL"         Name="LOC_MAP_CIVILIZATIONS_PLACEMENT_TSL_NAME"     Description="LOC_MAP_CIVILIZATIONS_PLACEMENT_TSL_DESCRIPTION"     SortIndex="20"/>
       
        <Row Domain="CulturallyLinkedStart" Value="PLACEMENT_DEFAULT"     Name="LOC_MAP_LINKED_PLACEMENT_DEFAULT_NAME" Description="LOC_MAP_LINKED_PLACEMENT_DEFAULT_DESCRIPTION"     SortIndex="10"/>
        <Row Domain="CulturallyLinkedStart" Value="PLACEMENT_ETHNIC"    Name="LOC_MAP_LINKED_PLACEMENT_ETHNIC_NAME" Description="LOC_MAP_LINKED_PLACEMENT_ETHNIC_DESCRIPTION"     SortIndex="20"/>
    </DomainValues>
   
    <ParameterDependencies>
   
        <Row ParameterId="Resources" ConfigurationGroup="Map" ConfigurationId="ResourcesPlacement" Operator="NotEquals" ConfigurationValue="PLACEMENT_IMPORT"/>
        <Row ParameterId="Rainfall" ConfigurationGroup="Map" ConfigurationId="FeaturesPlacement" Operator="NotEquals" ConfigurationValue="PLACEMENT_IMPORT"/>
        <!--
        <Row ParameterId="CulturallyLinkedStart" ConfigurationGroup="Map" ConfigurationId="CivilizationPlacement" Operator="Equals" ConfigurationValue="PLACEMENT_DEFAULT"/>
        -->
        <Row ParameterId="CulturallyLinkedStart" ConfigurationGroup="Map" ConfigurationId="CivilizationPlacement" Operator="NotEquals" ConfigurationValue="PLACEMENT_TSL"/>
        <Row ParameterId="MapSize" ConfigurationGroup="Map" ConfigurationId="HideSize" Operator="NotEquals" ConfigurationValue="1"/>
        <Row ParameterId="ResourcesExclusion" ConfigurationGroup="Map" ConfigurationId="ResourcesPlacement" Operator="Equals" ConfigurationValue="PLACEMENT_DEFAULT"/>
        <Row ParameterId="RealDeposits" ConfigurationGroup="Map" ConfigurationId="ResourcesPlacement" Operator="Equals" ConfigurationValue="PLACEMENT_DEFAULT"/>

    </ParameterDependencies>
It's just extra steps now to define it in the database before you can use it in the mapscript. Even more extra steps if you want to use localized text but thankfully you can still cheat past that.
 
Spoiler I noticed this error :

[19090.187] Runtime Error: C:\Users\Tomahawk\Documents\My Games\Sid Meier's Civilization 5\Maps\PerfectWorld3.lua:1589: Failed to siltify lakes. check logs
stack traceback:
=[C]: in function 'error'
C:\Users\Tomahawk\Documents\My Games\Sid Meier's Civilization 5\Maps\PerfectWorld3.lua:1589: in function 'SiltifyLakes'
C:\Users\Tomahawk\Documents\My Games\Sid Meier's Civilization 5\Maps\PerfectWorld3.lua:2473: in function 'GeneratePlotTypes'
Assets\DLC\Expansion2\Gameplay\Lua\MapGenerator.lua:787: in function <Assets\DLC\Expansion2\Gameplay\Lua\MapGenerator.lua:779>
=[C]: ?

line 1589: error("Failed to siltify lakes. check logs")
(the similar lines in file a few)
Instead of an "error" it is necessary to write "print"
 
Last edited:
I did manage to fix that error and I'm like 99% sure that the fix is in my most recent version of PW3. There's a link somewhere in this thread and It's also on Steam.

Also, @cephalo if you do decide to work on porting Perfect World into Civ VI feel free to use or utilize my updated version as you see fit. I'm not currently planning on purchasing or playing Civ VI for the foreseeable future so no ports from me.
 
Hi, I'm trying to tweak the settings so I can play more interesting games with Vox Populi.
So far, I've achieved longer rivers, fewer hills, deserts and grassland.

What I'm finding too difficult is to have some nice lakes (6-8 tiles), and some ocean rifts (2-3 tiles wide in standard). Any help?
An update would be nice, any news?
 
Does anyone have a hint of the value I should put in here to have 3 - 4 large and thick continents, with a large Atlantic like oceans between the landmasses and a couple of still big islands?

mconst.landPercent = 0.35

mconst.twistMinFreq = 0.02
mconst.twistMaxFreq = 0.12
mconst.twistVar = 0.042
mconst.mountainFreq = 0.078

GameInfo.Worlds.WORLDSIZE_HUGE.ID = {156, 109}

I'm playing with Vox Populi and I want all civilizations to have a thick slab of land to expand into, where they can surround their cities with more cities, and not just have a row of cities in a thin snaky continent.

I'm planning to have each civilization to have 30%, on average, more land to settle into, when compared to the standard HUGE map.

The problem I'm encountering is that twistMinFreq, twistMaxFreq and twistVar tend to affect everything on the map at the same time, so it's a tri-dimensional problem and I'm a bit lost to what I need to do...
 
Last edited:
Generally, high frequency leads to smaller continents, and low frequency will make larger continents. I don't remember what twisVar does. Try raising twistMinFreq to 0.1 and twistMaxFreq to 0.15

EDIT: I'm sorry, I mean do the opposite of what I suggested. Maybe min = 0.01 and max = 0.07. It's all so complicated, I can't even manage it myself...:hammer2:
 
Generally, high frequency leads to smaller continents, and low frequency will make larger continents. I don't remember what twisVar does. Try raising twistMinFreq to 0.1 and twistMaxFreq to 0.15

EDIT: I'm sorry, I mean do the opposite of what I suggested. Maybe min = 0.01 and max = 0.07. It's all so complicated, I can't even manage it myself...:hammer2:
Cephalo... Im a big fan of your mod PW3. I am trying to use it to for random maps in sdk... is it possible to do that?
 
Top Bottom