Ethnically Correct Population Growth - Improving Immersion [IMPLEMENTED]

Do you like the idea?


  • Total voters
    37
Sounds very interesting, especially if Civic/Tech/Social Progress choices could influence rates of certain units being born, and influence productivity/education/LbD opportunities of various social classes of units.
As one gameplay consideration, I'd have some concerns about letting unit creation rely on an RNG mechanic (even one weighted by other units) for several reasons:
  • If "birth" depends only on an RNG chance weighted by other units present at the instant a unit is "born", it could become a gamey exploitation for certain evil players (such as me) who could plot to move/change units at the instant they saw a "birth" was going to occur based on the Food meter and thus control the outcome.
  • As a Civ player I also suffer from a congenital disease that flares up whenever encountering an RNG-based situation having high gameplay impact on a single turn, causing me to save/reload until getting the outcome I like. Sadly I've been unable to recover :yuck: but find that gameplay mechanics showing progression of strategic factors I can influence and monitor feels much better gameplay-wise for me than encountering a binary event that's partly/largely random. :health:
As one idea for interesting demographic growth of units while circumventing RNG-based frustrations, perhaps a nice mechanic that would fit well with Civ4Col would be a short queue of units that are about to develop (similar to a mini version of units "on the dock" in Europe). Once per turn, counters for each of the few "birthable" UnitClasses increment/decrement based on considerations you mentioned (presence of other unit types/classes, Civic/SP choices, etc) representing progression of demographic growth. When a unit is "born", this is taken from the highest one in the queue (with its counter then reset to 0 enabling growth of other demographics next in line to continue on).
This is used very successfully in strategy games like Endless Space 2 where citizens of different kinds can be born over time, and because of their strategic importance it feels best for players to see and understand this as it develops without being too random. Could be a cool way to track demographic growth and development visually in a way that's familiar for Col players while also not being gamey/exploitable.
 
Last edited:
I had thought that there needed to be a secondary growth mechanism that also caused growth based on something like population size & health level & gross food production thresholds & maybe happiness & maybe domestic demands fulfilled. I don't like how you can have a small town with a big farm spit out new units left and right, but a large city bear no new units because everyone has already eaten all the food.

I also had to make the Africans and natives much more attractive for reasons mentioned by orlanth.
 
As a Civ player I also suffer from a congenital disease that flares up whenever encountering an RNG-based situation having high gameplay impact on a single turn, causing me to save/reload until getting the outcome I like.

First:

Yes, it is "RNG-based".
But as you said, it is weighted.
So it is not "fully random".

----

Second:

I hate to implement fully deterministic event based features - in this case the event is "Growth".
(I consider deterministic features boring, too predictable, unimmersive, exploitable, ...)

None of my event based features are fully deterministic.
They all use "weighted random algorithms" (like e.g. LbD, DLL-Diplo-Events, Happiness, ...)

"Determinism" simply does not match my game design philosophie.
This feature will thus also be using a "weighted random algorithm".

----

Third:

"The high impact" on gameplay is again completely overexagerating.
It will not ruin your game if you sometimes get a "Converted Native" or a "Mestizo" instead of a "Free Colonist".
Nobody would relaod for e.g. "Happiness Events", "Native Slave Revolts" ... either and they all have much bigger gameplay impact.

----

Fourth:

This event does not happen in an isolated action like e.g. UnitCombat.
If you load again you might e.g. trigger 100 other RNGs already in midgame that may cause bad / good results themselves.
You would be "RNG"ing yourself to death in WTP - becasue the complete mod - almost all my features - use "weighted random algorithm".

----

Summary:


I will not implement an "articial" / "boring" / "unimmersive" feature that suggest there was some kind of "birth control system"
in the Colonies of the 16th century. :eek:
 
Last edited:
... health level ...

Health is already in there. :)
(It affects the "Growth Threshold".)

But actually I should also put Happiness as modifier in there. :thumbsup:
(Maybe I already have ... need to double check it. :think: )

.... based on something like population size ...
Trust me, you would not like to play the game if "Growth" worked like that.
(Your big Cities would become very very annoying and small Cities would never grow.)

----

And "Growth" also does not work like that in reality either.

Do not mix "Growth" with "Birth Rate" !!!!
(I simplify a bit below.)
  • Growth != Births
  • Growth == (Births + Immigration) - (Deaths + Emmigration)
----

In reality the 5 main factors for Growth are in fact those:
  • Abundance of Food (or Wealth) ---> Well reflected in WTP by Food / Growth Treshold with Food (check)
  • Health of the Population ---> Well reflected in WTP by Health influence on Growth Treshold with Food (check)
  • Social Factors (Freedom / Peace / Equalness / ...) ---> Will be reflected in WTP by Happiness influence on Growth Treshold with Food (check)
  • Cultural Factors (Traditions) ---> Well reflected by Traits affecting Growth Treshold with Food that Civs / Leaders may have (check)
  • Social Progress (Techological Aspects) ---> Will be reflected in WTP by Social Progress System once implemmented (no check yet)
----

Summary:

The current System is not that bad. :)
All important aspects for "Growth" have been considered in design. :thumbsup:
 
Last edited:
  • Cultural Factors ---> Well reflected by Traits affecting Growth Treshold with Food that Civs / Leaders may have (check)
  • Social Progress (Techological Aspects) ---> Will be reflected in WTP by Social Progress System once implemmented (no check yet)
For coding simplicity I would prefer to drop the trait part and then make use of the CivEffect tag in traits. It means less code to check at runtime while we can still configure the same gameplay in xml. Less code to check means better performance and less risk of bugs. This is why I would recommend moving tags from traits to CivEffects whenever we need it elsewhere rather than creating a new one.
 
Food birth concept always seemed incorrect in Col since 1994. It was perfectly fine for Civ: when every "worker" represents tens of thousands uniform people it is just a statistic: well-fed population tend to grow, not as well-fed shrink because of starving, some middle point balances it as starving people are covered exactly by new birhtes. But for col with all that experts, natives and wtp with slaves food concept is obviously not working in the same way. Your concept spices it a little, but doesn't fix it completely for the reasons already mentioned: if birth of new colonist represents slow growing of population, it can't be affected by 1-turn decision like unloading food (not only from other colonies, don't forget about fishing boats!). What I think is some sort of point accumulation system like this: each colonist add 1 point to some colony pool every turn. When it is time to increase population, this pool is taken to determine the chances for what type of unit is created. It can for example be used to determine a pair of parents to use in your scenario with weighted random.
 
Food birth concept always seemed incorrect in Col since 1994.
Guys again, it is not a "Food Birth" concept. It is a "Food Growth" concept.
Does nobody understant that those are completely different things ... :dunno:

it can't be affected by 1-turn decision like unloading food (not only from other colonies, don't forget about fishing boats!).
Why not? Turns in this game are months and years? :confused:

Please check this here:
Growth == (Births + Immigration) - (Deaths + Emmigration)

Why should Citizens (in small amounts) not move to a City that has abundance of Food?
Simply because some of you guys wrongly misinterpret "Growth == Birth" ...

-----

The problem you guys seem to have is that you confuse "Growth" with "Births" ... :(
You completely ignore e.g. Immigration / Movement of People.

That is why immersion does not work out for you ... :dunno:
For me, because I view "Growth" as it is realistically calculated, immersion works out perfectly ... :dunno:

Also a game needs to simplify a little bit to work out for gameplay.
The basic idea of Food for Growth - then also influenced by other factors is really not bad for gameplay.

-----

This is what we have or will have:
(But I will definitely not remove the basic "Food Growh" logic.)

In reality the 5 main factors for Growth are in fact those:
  • Abundance of Food (or Wealth) ---> Well reflected in WTP by Food / Growth Treshold with Food (check)
  • Health of the Population ---> Well reflected in WTP by Health influence on Growth Treshold with Food (check)
  • Social Factors (Freedom / Peace / Equalness / ...) ---> Will be reflected in WTP by Happiness influence on Growth Treshold with Food (check)
  • Cultural Factors (Traditions) ---> Well reflected by Traits affecting Growth Treshold with Food that Civs / Leaders may have (check)
  • Social Progress (Techological Aspects) ---> Will be reflected in WTP by Social Progress System once implemmented (no check yet)
 
Last edited:
Maybe it is easiest you suggest a simple prototype XML structure to discuss it. :thumbsup:
(Discussing with examples is always easier.)
Say we have the experts blacksmith and miner (realistic to have those in the same colony). Each of those have free colonist as growth unit, which will result in a free colonist. No randomness when it's the same unit.

Now it's blacksmith+converted native. They have the growth units free colonist and converted native. Since it's two different units, the game will pick one at a 50-50 random chance.

Since we want to create Mestizo units in this case, we add an xml entry for free colonist and converted native. Since it's that specific combo, we have an InfoArray of the outcome. It could be 100% chance of Mestizo, or 50% chance, 25% free colonist and 25% converted native. What precisely it will provide doesn't matter as the point is that it's an xml list of resulting unitclasses together with an int. The int is the chance, but it doesn't have to sum up to 100%. Instead if one unit has 3 and another unit has 1, then it's 75% chance for the first because 3/(3+1) is 75% chance.

The end result is kind of like what you proposed except rather than using each expert, we only have to define based on growth units and since all experts have the same growth units, the number of xml entries needed would be way shorter. The auto 50-50 chance when it's two different units also lowers the number of needed xml entries.

Sounds very interesting, especially if Civic/Tech/Social Progress choices could influence rates of certain units being born, and influence productivity/education/LbD opportunities of various social classes of units.
I like the idea of letting CivEffects affect which units are used for growth, but that brings up the question: how to implement it in xml. Multiplier for the chance for each unit? I suppose you could say add a chance for master blacksmith and then by default set a multiplier of -100 (assuming default is 100) to disable the unit. A CivEffect can then have +5 (or +100 or whatever), resulting in a chance to get it from each case where it's specified as a possible outcome.

I can't think of a good outcome from this, but -50% chance of getting criminals as growth units sounds like something a FF could provide.
 
@Nightinggale

Ok I think I understand your concept now. :think:

1. Civ4UnitInfos.xml will get an XML tag: "GrowthUnitClass" (as UnitClassType)
2. If nothing else is defined: 50 / 50 chances for Parent Pairs. (To select their "GrowthUnitClass".)
3. All other combinations we are going to define in the XML of the Units which we reference as "GrowthUnitClasses".

I can hardly wait to implement this after we published Release 3.0 :thumbsup:
 
@Ramstormp

Did you start working on this already?
If not, I will do it myself. :thumbsup:
I started it, as in I did the quick work in the CIV4UnitSchema; but my brain is still malfunctioning, and I could not wrap it around the infoArrays. I have started taking a medicine that improves cognitive function, which should kick double-in a couple of weeks.
 
I was under the impression that the free colonist unit was European only in appearance, but could represent a free colonist of any ethnicity.

If a child is born to two formerly enslaved people, that child would not be a freed slave as they were never enslaved in the first place. The same would be true for the children of two converted natives.
 
I was under the impression that the free colonist unit was European only in appearance, but could represent a free colonist of any ethnicity.

If a child is born to two formerly enslaved people, that child would not be a freed slave as they were never enslaved in the first place. The same would be true for the children of two converted natives.

Virginias 1662 slave law established that a children born to an enslaved mother would be born a slave, too.
https://www.battlefields.org/learn/articles/slavery-colonial-america
 
Guys, is this feature really that important?
No, it is not that important. :)
It is just on the long list of stuff that we may do one day.

Since @Ramstormp had once said he already started working on, we thought we could add it.
Otherwise it will probably take a year or longer until another team member may find for this.

I once thought I could implement this myself if nobody else would.
But other tasks with much higher priority currently keep me busy.
 
Last edited:
I was under the impression that the free colonist unit was European only in appearance, but could represent a free colonist of any ethnicity.

If a child is born to two formerly enslaved people, that child would not be a freed slave as they were never enslaved in the first place. The same would be true for the children of two converted natives.
You make some reasonable points, I suppose; but even a freed slave or converted native unit should realistically die after a generation has passed in the game, and at that point it is represented by a proportional slice of the children they have (unless it is represented by a steady influx of new freed slaves or new converted natives, which makes less sense to my imagination). The names of 'freed slave' and 'converted native' are mostly useful as an explanatory description right as the unit comes into being, and after they have joined a colony they perhaps more realistically could be called something else.

@raystuttgart, I kind of doubt I will ever succeed to implement this; but I still have a lingering desire to give it another shot. It just takes some kind of pumped up, lets do this, soldier mentality for me to once again go in and try to understand it in order to get it done.
 
@Ramstormp :

Don't worry. :thumbsup:
If you feel like this is too much effort or too difficult simply leave it.

-----

But if you want to give it a try, let us know.
@Nightinggale or myself could set up a good XML structure for you.
I could also support to create e.g. graphics you need.

-----
Do whatever you are motivated. :)
There is no pressure and no need to hurry.
 
Last edited:
If a child is born to two formerly enslaved people, that child would not be a freed slave as they were never enslaved in the first place. The same would be true for the children of two converted natives.
I'm not sure about America, but a governor in Sidney wrote how it worked in Australia. He was appalled by the fact that children of (in some cases former) convicts behaved like carefree teens going to the beach and doing other stuff for fun. They had to know their place. Apparently a conviction for stealing bread while starving would cause people to be sinful for generations, hence being worth less. I'm not sure but I think it was that governor who was so awful and corrupt that he triggered a rebellion. Things like banning booze, tearing down houses without compensation if they were built prior to his arrival in places not fitting for his new city plan, arresting a guy for owning the meadow the governor wanted to own himself etc. Before he was governor he was captain on a ship named Bounty. That didn't go well either.

So the question is how was this issue viewed in America prior to the woi? Forever convict? Forever convert? Forever slave? Just the person in question or would it last for generations? I honestly don't know.

Don't worry if you feel like this is too much effort or too difficult simply leave it.
That's my thinking. This might become too much work compared to the gain. I won't stop anybody from trying though.

@Nightinggale or myself could set up a good XML structure for you.
Yeah I'm always open to discuss or do xml structure changes.I have added plenty of new code in that area and we can do stuff vanilla could only dream of.
 
Back
Top Bottom