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

Civilizations selection, Historical Spawning Dates, Civil Wars & Revolutions

Discussion in 'Gedemon's Civilization, a total overhaul project' started by Gedemon, Nov 22, 2017.

  1. Gedemon

    Gedemon Modder Super Moderator

    Joined:
    Oct 4, 2004
    Messages:
    9,569
    Location:
    France
    It may change once I start coding and testing, but you can use 0-100 for Agressivity (as a percentage of barbarian spawn vs tribal village), and my initial thought is to use PeakStrength as a maximum percentage bonus (of the normal culture spawning/conversion rate)

    I'm still unsure about how I will apply Affinity value, but if I use the same base code as in my civ5 mod for relation values, my initial numbers in my example are too high, values should be between -30 (worst) to 15 (best) , representing a per turn variation of the relation (in the civ5 mod, -15 was the default for foreign culture groups IIRC, which mean that "15" give a culture groups the same affinity value that the own civilization culture group, ie a base variation of "0" before applying values from the other stability mechanisms)

    You can include potential concurrent tribal groups in the table, but I don't know if it will be used by some of the mechanism (still it would make sense to raise unstability in a city where two cultural groups are opposed, even if they are not opposed to the city owner culture group)

    I'm also thinking that then we should use the civilization type name directly in all the culture groups table, to prevent confusion, like
    Code:
    <Row CultureType1="CULTURE_BALTS" CultureType2="CULTURE_GERMANS" Affinity="15"/>
      <Row CultureType1="CULTURE_BALTS" CultureType2="CIVILIZATION_GERMANY" Affinity="15"/>
    I'll try to set the table definitions so we can use any civilizations type names, even if that civilization doesn't exist in the mod.
     
    Last edited: Mar 31, 2018
  2. Knasp

    Knasp Warlord

    Joined:
    Sep 10, 2011
    Messages:
    266
    I don't quite understand how the Civilization's starting culture group is supposed to work together with the predetermined geographic culture groups. Since the point is to make all tiles (of Earth maps) have assigned starting cultures, should Civ's starting culture groups be one of these or should the Civ's starting culture group reflect a national identity that is to be cultivated?
    If I start a game as "Britain", will I then have a Civ-tied culture group of "British" or will I get the culture group upon founding my first city, based on location? Is the point then that the map-assigned culture groups are just competing with eachother, but that they could be united into the Civ's national culture? To take the British isles as an example, is the point that during the game you could unite the map-assigned cultures of Celts, English, Scots, etc into a single "British" culture?
    Depending on how the Civ's starting culture group works, I'm curious about the function of pre-defining "affinity levels". Is the point of affinity levels to let Civ's aquire tiles easier in areas which that Civ historically was founded? For e.g. will the Romans have a harder time to conquer and bring the British isles under their control? Due to the Romans being more foreign, i.e. having lower affinity levels with the culture groups of the British isles? Or will the affinity values only affect the competition or merging between the map-assigned culture groups?

    If the Civ's starting culture group is supposed to function like any other culture group that is map-assigned. Then it would make sense to rename many of the Civilizations, or at least their starting culture groups, to better fit the other culture groups on the map(s). For e.g. names like "Americans", "Germans" or "Chinese", which describe nationalities, will have to be modified. Also the starting culture groups are quite dependent on the starting date of the Civilization.

    I've compiled a list of suggested starting dates for the standard Civilizations (and City-states, below), to which we could probably come up with culture-groups to fit the respective time periods. Or start with the culture-grouos and try to assign dates.
    https://docs.google.com/spreadsheets/d/1L4zFXJSb384xTXqyrAcBThkvScpK6wc3oEQYzGFLQ3c/edit?usp=sharing

    EDIT: Found this map and culture groups suggestion that the author made for the game Europa Universalis IV, which starts in 1444 I think:
    https://forum.paradoxplaza.com/forum/index.php?threads/more-accurate-cultures.853404/

    These Wikipedia world maps range from 2000 BC to the present, and they display some cultural groups (and Civ's) that could be used:
    https://commons.wikimedia.org/wiki/Category:Maps_of_the_world_showing_history
     
    Last edited: Apr 3, 2018
    Gedemon likes this.
  3. Gedemon

    Gedemon Modder Super Moderator

    Joined:
    Oct 4, 2004
    Messages:
    9,569
    Location:
    France
    In Civilization, we're the head of a "State": we have a government to which we assign policies, we have diplomatic relations with other leaders, we control cities and military units, and we use them to conquer and defend a territory.

    So yes, I think that a "Civilization" culture group is something we'd have to cultivate all game to finally form a "Nation-State", eventually merging multiple culture groups in the process.

    Affinity is a way to help a Civilization to expand in it's initial phase (as the way I see it ATM it's own culture group will not be the main group until mid/late game and "nationalism"), but affinity will be dynamic, and won't prevent expansion in the areas of "hostile" culture groups as long as a Civilization manage your keep it's empire stability high enough.

    Now, for clarity, maybe we should use "States" instead of "Civilizations" when we refer to the entity the player is controlling, but I think the serie has already acknowledge that when they've introduced "City-States" in opposition to "full" Civilizations...

    So I'd prefer to keep "Nations" name for "Civilizations" (and maybe use an interval period instead of a fixed date for spawning) and keep them independant from the other culture groups, the only relation between them being the affinity level.

    For reference, there is also the table I used for the Historical Spawn Date mod:
    https://github.com/Gedemon/Civ6-Historical-Spawn-Dates/blob/master/Data/HistoricalSpawnDates.sql
     
    Knasp likes this.
  4. MAHRana

    MAHRana Prince

    Joined:
    May 22, 2010
    Messages:
    317
    Gedemon likes this.
  5. Gedemon

    Gedemon Modder Super Moderator

    Joined:
    Oct 4, 2004
    Messages:
    9,569
    Location:
    France
    Up, is anyone interested in making a partial list based on a small region of the world (Europe or Middle East) to start testing ?
     
  6. Xefjord

    Xefjord Prince

    Joined:
    Jul 17, 2015
    Messages:
    310
    Gender:
    Male
    With this addition will we be able to eventually have civs that don't neccesarily exist in civ at the moment? For instance, if I choose to mostly settle and establish myself in Vietnam, could I eventually become a Vietnamese civ? Or settling in Hokkaido could let me become the Ainu? China itself is pretty big too, is it possible for China to split into multiple China's throughout the game like happened historically?
     
  7. Gedemon

    Gedemon Modder Super Moderator

    Joined:
    Oct 4, 2004
    Messages:
    9,569
    Location:
    France
    We can have "temporary" civilizations that will exists for a relatively short duration (small cities spawning in unsettled areas, maybe from camps/village positions or existing cities flipping after a civil war for example), based on a large list of culture groups, and your Civilization will be influenced by those culture groups which will give it some unique abilities (units, buildings, maybe policies, ...)

    So you won't start with a fixed set of uniques attribute, but you'll be able to gain some based on your interaction with the culture groups.
     
  8. Knasp

    Knasp Warlord

    Joined:
    Sep 10, 2011
    Messages:
    266
    I've just started looking into this, and to start with I have a suggestion.

    There are many ways to define a cultural group, i.e. ethnicity. But I would suggest using ethno-linguistic groups as the foundation. Religious and other aspects of culture are somewhat covered by other game mechanics. So I think language could be a convenient classification. Peoples that are speaking similar languages usually have higher affinity for one another (my wild speculation :p)

    I've compiled a google sheet with groups, copied from the wiki page below. It totals about 90 groups (languages) for Europe.
    https://docs.google.com/spreadsheets/d/1to7fjVKxn0xYE-1LyjNiJDx8_ZBeMqrku_G-KJldOQQ/edit?usp=sharing

    To start out, you could put a minor positive affinity for groups sharing the same language family (+1). Then you could have another (+1) for groups sharing the same subdivision, and so on. French and Spanish will then have +2 affinity, while French and English will only have +1. French and Georgian will have +0.

    Groups that are associated with in-game Civs could get a -1 modifier or simply 0 affinity towards eachother, to reflect the dominance of those cultures.

    Using the list above, it should be relatively easy to assign the groups to geographical areas (tiles) in the ynamp Europe map.

    This English wiki page, lists ethno-linguistic groups under the section "Linguistic classifications":
    https://en.m.wikipedia.org/wiki/Ethnic_groups_in_Europe
    //Of course it's based on present-day languages, but it's better than nothing.
     
    Last edited: Sep 12, 2018
    Ryansinbela and Gedemon like this.
  9. Gedemon

    Gedemon Modder Super Moderator

    Joined:
    Oct 4, 2004
    Messages:
    9,569
    Location:
    France
    Thanks, that will be useful for the relation between groups, but I'd like to use the Historical name of ethnic groups, especially as I'd like to pre-populate the map before the players Civilizations are spawned.

    I'd also like to have a pre-civilization culture groups, to populate the area around the TSL of that civilization, defined like this maybe:

    Code:
    <CultureGroups>
       <Row CultureType="CULTURE_MYCENAEAN" SpawnCivilization="CIVILIZATION_GREECE" CultureName="LOC_CULTURE_MYCENAEAN_NAME" PeakStrength="75" StartDate="-4000" PeakDate="-2000" EndDate="100" Agressivity="25" />
       <Row CultureType="CULTURE_ETRUSCAN" SpawnCivilization="CIVILIZATION_ROME" CultureName="LOC_CULTURE_ETRUSCAN_NAME" PeakStrength="75" StartDate="-3000" PeakDate="-1000" EndDate="100" Agressivity="25" />
    </CultureGroups>
     
  10. Knasp

    Knasp Warlord

    Joined:
    Sep 10, 2011
    Messages:
    266
    I've started with the list of cultures, but it's still a work in progress (WIP). I've included chronological divisions of languages, for e.g: Old, Middle and Late Egyptian. But ingame I would suggest combining and keeping them in the same group, i.e. "Egyptian".

    On another note. I think PeakStrength and Aggressivity are quite abstract and difficult to assess, so I haven't attempted that below. And I wonder if it isn't better to leave such values randomized, or dynamic (depending on player actions, proximity of cities, migrations etc).

    Completed thus far:
    Egypt
    Nubia

    https://docs.google.com/spreadsheets/d/1zDh83QcLmELleRmJD0902NUO27HhefxbTGrvX36u1hY/edit?usp=sharing
     
    Last edited: Sep 29, 2018
    Ryansinbela and Gedemon like this.
  11. Gedemon

    Gedemon Modder Super Moderator

    Joined:
    Oct 4, 2004
    Messages:
    9,569
    Location:
    France
    Thanks !

    You can ignore PeakStrength, PeakDate and Aggressivity when they are not necessary (for some groups we'll want to set it, at least Aggressivity), I can code them to be options (ie used when set, randomized or determined from other source when not set)

    I'm not sure we need so many groups per region, (and see the current "Region" list below), but nothing prevent you to set as many (groups and regions - we'll need a bit more regions anyway) as you want.

    Region on the Giant Earth:
    Code:
        <RegionPosition>
            <Replace MapName="GiantEarth" Region="GROENLAND"            X="157" Y="81" Width="22" Height="12" />
            <Replace MapName="GiantEarth" Region="NORTH_AMERICA"        X="127" Y="54" Width="43" Height="18" />
            <Replace MapName="GiantEarth" Region="ARCTIC_AMERICA"        X="113" Y="73" Width="55" Height="20" />
            <Replace MapName="GiantEarth" Region="CENTRAL_AMERICA"        X="129" Y="38" Width="37" Height="16" />
            <Replace MapName="GiantEarth" Region="SOUTH_AMERICA_WEST"    X="143" Y="12" Width="18" Height="26" />
            <Replace MapName="GiantEarth" Region="SOUTH_AMERICA_EAST"    X="162" Y="12" Width="14" Height="26" />
            <Replace MapName="GiantEarth" Region="ANTARCTIC_AMERICA"    X="151" Y="0" Width="22" Height="12" />
            <Replace MapName="GiantEarth" Region="AUSTRALIA"            X="83" Y="0" Width="33" Height="25" />
            <Replace MapName="GiantEarth" Region="OCEANIA"                X="77" Y="19" Width="52" Height="24" />
            <Replace MapName="GiantEarth" Region="SOUTH_ASIA"            X="57" Y="30" Width="25" Height="17" />
            <Replace MapName="GiantEarth" Region="CENTRAL_ASIA"            X="47" Y="48" Width="29" Height="20" />
            <Replace MapName="GiantEarth" Region="EAST_ASIA"            X="73" Y="48" Width="27" Height="19" />
            <Replace MapName="GiantEarth" Region="NORTH_ASIA"            X="51" Y="61" Width="60" Height="32" />
            <Replace MapName="GiantEarth" Region="MIDDLE_EAST"            X="30" Y="37" Width="25" Height="17" />
            <Replace MapName="GiantEarth" Region="TURKEY"                X="30" Y="55" Width="15" Height="5" />
            <Replace MapName="GiantEarth" Region="MEDITERRANEAN"        X="5" Y="48" Width="33" Height="13" />
            <Replace MapName="GiantEarth" Region="SOUTH_EUROPA"            X="4" Y="53" Width="26" Height="7" />
            <Replace MapName="GiantEarth" Region="WEST_EUROPA"            X="2" Y="61" Width="23" Height="12" />
            <Replace MapName="GiantEarth" Region="NORTH_EUROPA"            X="1" Y="68" Width="51" Height="25" />
            <Replace MapName="GiantEarth" Region="EAST_EUROPA"            X="26" Y="61" Width="26" Height="17" />
            <Replace MapName="GiantEarth" Region="NORTH_AFRICA"            X="1" Y="39" Width="34" Height="13" />
            <Replace MapName="GiantEarth" Region="CENTRAL_AFRICA"        X="2" Y="22" Width="41" Height="16" />
            <Replace MapName="GiantEarth" Region="SOUTH_AFRICA"            X="20" Y="5" Width="17" Height="16" />
            <Replace MapName="GiantEarth" Region="MADAGASCAR"            X="39" Y="9" Width="11" Height="17" />
        </RegionPosition>    
    And for reference how to link culture groups with region:
    Code:
    <CultureGroupsStartingRegions>
       <Row CultureType="CULTURE_CELTS" StartingRegion="WEST_EUROPA" Probability="65"/>
       <Row CultureType="CULTURE_CELTS" StartingRegion="SOUTH_EUROPA" Probability="45"/>
    </CultureGroupsStartingRegions>
     
  12. Knasp

    Knasp Warlord

    Joined:
    Sep 10, 2011
    Messages:
    266
    Sounds good!
    Hehe, I understand that it's a lot of detail. I guess I assumed that you were intending to place groups on a plot level, rather than region level. Is it possible to assign a culture to a plot (x, y) directly or would that conflict with regional assignment?

    Hmmm, I guess that I could write a list of the groups in that format, if you like. Will Giant Earth be the initial testing ground?
     
  13. Gedemon

    Gedemon Modder Super Moderator

    Joined:
    Oct 4, 2004
    Messages:
    9,569
    Location:
    France
    Yes, as the Giant Earth Database (ie TSL, Regions, NW positions, auto-city naming) is also used by the Terra Map script and the Custom Largest Earth Maps (and an even larger earth map to come at some point), and that we can play on selected portions of the Earth Maps for faster testing in an area.

    I can integrate TSL tables for culture groups and use Regions when TSL is not set. Region allows a larger area where random spawning of Village/Camps/Settlement/Stronghold or other "features" based on culture groups and other parameters (like population on the plot)

    TSL could be set with a "Range" option for the same effect, but you have to set TSL for each map (outside of the shared DB that is), while Regions are a type name that other maps could have already set at their level (granted it's not much, just those using the realistic resource placement <based on regions> option in YnAMP, ie ATM only the Greatest Earth Map in addition to the Giant Earth DB-based maps)
     
    Knasp likes this.
  14. Knasp

    Knasp Warlord

    Joined:
    Sep 10, 2011
    Messages:
    266
    Good!
    I've been looking at the Giant Earth map in debug mode, just to get an idea of the extent of the regions in your list. But hovering over each plot to see the coordinates is tedious. Do you know if there's a way to make the game visualize the coordinates over each plot in the map/strategic map? That would be a useful "lens" to have...
    Exporting the whole strategic map to an image file would also be quite useful :p

    Anyway, I guess I could estimate some coordinates for new regions and compile a list of the groups in the format you specified.
     
    Last edited: Sep 30, 2018
  15. Gedemon

    Gedemon Modder Super Moderator

    Joined:
    Oct 4, 2004
    Messages:
    9,569
    Location:
    France
    Do you know how to use the firetuner ?
     
  16. Knasp

    Knasp Warlord

    Joined:
    Sep 10, 2011
    Messages:
    266
    Not really. I think I've tried using it with Civ5 to access the worldbuilder. If you have any suggestion on what I can try, I'll give it a shot.
     
    Last edited: Sep 30, 2018
  17. Gedemon

    Gedemon Modder Super Moderator

    Joined:
    Oct 4, 2004
    Messages:
    9,569
    Location:
    France
    You can try to paste this in a new action button in a UI context:
    Code:
    local mapName = MapConfiguration.GetValue("ReferenceMap") or MapConfiguration.GetValue("MapName")
    for RegionRow in GameInfo.RegionPosition() do
        if RegionRow.MapName == mapName  then
            local regionX, regionY     = RegionRow.X, RegionRow.Y
            local regionWidth         = RegionRow.Width
            local regionHeight         = RegionRow.Height   
            local endX                = regionX + regionWidth
            local endY                = regionY + regionHeight
            local plots                = {}
            for x = regionX, endX do
                for y = regionY, endY do
                    if (x == regionX or x == endX) or (y == regionY or y == endY) then
                        local plot = Map.GetPlot(x,y)
                        if plot then table.insert(plots, plot:GetIndex()) end
                    end
                end
            end
            UI.HighlightPlots(PlotHighlightTypes.MOVEMENT, true, plots )
        end
    end
     
    Knasp likes this.
  18. Knasp

    Knasp Warlord

    Joined:
    Sep 10, 2011
    Messages:
    266
    Yes, it works! I had to join the code into 1 line, in order to enter it in the firetuner console. Looking at the Giant Earth map, it does highlight the borders of the regions. Though it also seems to shows several smaller regions(?) that you didn't list above.
     
  19. Gedemon

    Gedemon Modder Super Moderator

    Joined:
    Oct 4, 2004
    Messages:
    9,569
    Location:
    France
    Those are smaller regions used to force placement for some specific resources, listed below "<!-- Regions for Deposits -->" in that file:
    https://github.com/Gedemon/Civ6-YnAMP/blob/master/Maps/GiantEarth/Map.xml

    You can remove that section from your local copy for clarity.

    Technically you could use their name, if the position are fine as they are (but we can't change the positions as it would impact the resource placement that use them) but for consistency, even when the position match the use for culture groups, I'd prefer to add new small regions related to culture groups with specific names, like "[AREA]_GROUPS", for example "EGYPT_GROUPS", "LOWER_EGYPT_GROUPS" and "UPPER_EGYPT_GROUPS"

    For larger region we can add new ones with generic name like "SOUTH_EAST_ASIA" for example

    For testing you could add new regions there too.
     
    Knasp likes this.
  20. Knasp

    Knasp Warlord

    Joined:
    Sep 10, 2011
    Messages:
    266
    I've defined a bunch of regions for GiantEarth and Culture Groups for Egypt, Nubia, Arabia, Sumeria, Persia and Georgia. Covering West Asia, more or less. I hope it will suffice for testing purposes in any case.

    Used the formats below but I didn't know if it is alright to leave attributes blank, like: ""?
    Code:
    <Row CultureType="CULTURE_X" StartingRegion="Y"/>
    <Row CultureType="CULTURE_X" SpawnCivilization="" CultureName="LOC_CULTURE_X" StartDate="-4000" EndDate=""/>
    
    If you want, I could go on and define Groups/Regions for Scythia and Europe/Russia next.

    EDIT: Removed a duplicate of a CultureGroup, that I had missed in the code.
     

    Attached Files:

    Last edited: Oct 21, 2018
    Ryansinbela and Gedemon like this.

Share This Page