1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

PerfectWorld3

Discussion in 'Civ5 - Map Scripts' started by cephalo, Nov 25, 2010.

  1. cephalo

    cephalo Deity

    Joined:
    Jul 26, 2007
    Messages:
    2,058
    Location:
    Missouri, USA
    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.
     
  2. heinous_hat

    heinous_hat Prince

    Joined:
    Sep 28, 2010
    Messages:
    592
    Location:
    under the weather
    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.
     
  3. Seven05

    Seven05 Warmonger

    Joined:
    Dec 5, 2005
    Messages:
    2,056
    Gender:
    Male
    Location:
    USA
    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.
     
  4. cephalo

    cephalo Deity

    Joined:
    Jul 26, 2007
    Messages:
    2,058
    Location:
    Missouri, USA
    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?
     
  5. Seven05

    Seven05 Warmonger

    Joined:
    Dec 5, 2005
    Messages:
    2,056
    Gender:
    Male
    Location:
    USA
    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.
     
  6. Tomahawk.nsk

    Tomahawk.nsk Chieftain

    Joined:
    Nov 25, 2015
    Messages:
    83
    Location:
    Novosibirsk, Siberia
    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: Nov 25, 2016
  7. cephalo

    cephalo Deity

    Joined:
    Jul 26, 2007
    Messages:
    2,058
    Location:
    Missouri, USA
    Yeah, this error happens sometimes. I was never able to get it to fully go away.
     
  8. Bobert13

    Bobert13 Prince

    Joined:
    Feb 25, 2013
    Messages:
    345
    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.
     
  9. tu_79

    tu_79 Deity

    Joined:
    Feb 11, 2016
    Messages:
    6,916
    Location:
    Malaga (Spain)
    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?
     
  10. ryanmusante

    ryanmusante Regular Supporter

    Joined:
    Jan 4, 2018
    Messages:
    1,078
    An update would be nice, any news?
     
  11. cephalo

    cephalo Deity

    Joined:
    Jul 26, 2007
    Messages:
    2,058
    Location:
    Missouri, USA
    Hi guys, I don't think PerfectWorld3 makes lakes at all. It may rely on the default lake making code if there are any.
     
  12. ryanmusante

    ryanmusante Regular Supporter

    Joined:
    Jan 4, 2018
    Messages:
    1,078
    Planet Simulator, PW3 and Tectonic are based on same code?
     
  13. tu_79

    tu_79 Deity

    Joined:
    Feb 11, 2016
    Messages:
    6,916
    Location:
    Malaga (Spain)
    I had some luck making wider rifts with planet simulator, but yet no luck with lakes.
     
  14. ryanmusante

    ryanmusante Regular Supporter

    Joined:
    Jan 4, 2018
    Messages:
    1,078
    I have been playing Frostpunk lately and inspired to use "ice age" map script in Civ5, but it's vanilla. I want a perfectworld3 version of futuristic ice age.
     
    Yaviel likes this.
  15. tu_79

    tu_79 Deity

    Joined:
    Feb 11, 2016
    Messages:
    6,916
    Location:
    Malaga (Spain)
    This should be easy. Look for temperatures in the code and raise them for tundra.
     
  16. AndreLMS

    AndreLMS Chieftain

    Joined:
    Mar 5, 2019
    Messages:
    2
    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: Mar 10, 2019
  17. cephalo

    cephalo Deity

    Joined:
    Jul 26, 2007
    Messages:
    2,058
    Location:
    Missouri, USA
    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:
     
  18. Matthew Colston

    Matthew Colston Chieftain

    Joined:
    Apr 28, 2019
    Messages:
    1
    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?
     

Share This Page