Ethnically Correct Population Growth - Improving Immersion [IMPLEMENTED]

Do you like the idea?


  • Total voters
    37
I have started working on this feature. :)

Mostly because I want to make proper use of "Mestizzo" and "Mulatto" for gameplay.
It should also make "Growth" a little bit more diverse and interesting as a feature

But also because of giving Units an Ethnicity and a CitizenStatus may allow to build further features in the future
(e.g. If we would have had CitizenStatus right from the start it would have made coding "Slaves Running away" easier.)

-----

It should be relatively simple to implement.
(I hope I can finish it the next couple of days.)

-----

However, since not everybody seems to like this idea, I will implement it as an "optional feature".
(Meaning there is going to be a setting in GlobalDefines.xml where you can deactivate it and play with current "Growth" mechanic.)
 
Last edited:
Ok, here are first Screenshots. :)
(They basically just display the 2 new Unit settings in XML.)

This was intended as a first test that the new EnumTypes EthnicityType and CitizenStatusType set up in XML with the help of @Nightinggale actually worked as expected.
(Actually I had never done anything like this before and thus needed technical support and a first implementation examples. So thanks to @Nightinggale for this. :thumbsup: )

It was the first time I can remember that we actually created something like this to have a new dynamically configurable Enum added to XML by ourselves.
So from this feature we actually also learned something new that could be very useful in the future for other additions.

But ok, here are the Screenshots:
(New: "Ethnicity" and "Citizen Status")
Spoiler :

Civ4ScreenShot0000.JPG
Civ4ScreenShot0001.JPG
Civ4ScreenShot0002.JPG
Civ4ScreenShot0003.JPG
Civ4ScreenShot0004.JPG
Civ4ScreenShot0005.JPG
Civ4ScreenShot0006.JPG
Civ4ScreenShot0007.JPG
Civ4ScreenShot0008.JPG



When "Growth" happens, these attributes of the Units within the City and on the City Plot will be checked to determine wich new Unit should be generated.
So the decomposition of your society in the Cities will actually influence which new Units will be born.
 
Last edited:
The feature is now fully implemented and also tested. :)

Here is an example of a City with 2 Mestizzos giving birth to another Mestizzo.
Spoiler :

Civ4ScreenShot0000.JPG
Civ4ScreenShot0001.JPG



Basically Ethnicities and CitizenStatus of the Population now define which Citizens can be grown.
(There are about 20 combinations for Growth configured - since there are 5 EthnicityTypes and 4 CitizenStatusTypes --> 5 x 4 = 20)

e.g.
  • In a City with Whites and Natives: Mestizzos can be born
  • in a City with Whites and Africans: Mulattos can be born
  • In a City with Freed Slaves: Freed Slaves can be born
  • In a City with Converted Natives: Converted Natives can be born
  • In a City with African Slaves: African Slaves can be born
  • In a City with Indentured Servants: Indentured Servants can be born
  • In a City with "Free Europeans": Free Colonists can be born
  • In a City with "Priviliged Europeans": "Prvilieged" (Emigrants) can be born
  • ...

It of course also matters how many of each you have. (The composition of society really matters - this is not purely random.)
There is a pretty good randomized weighting algorithm in place that counts and weights all EthnicityTypes and CitizenStatusTypes with a bit of randomness.

So if in the City live 10 "Free Europeans" and just 1 "African Slave", the chances are 10:1 that a Free Colonist will be born vs. an African Slave being born.
And if in a City only "Free Europeans" live, it is of course impossible that anything else than Free Colonists will be born.

By the way:
It will also consider Units on the City Plot, not just inside the City.

------------

If you really feel you do not want to give this a try
You can deactivate by setting this here to 0
<Define> <DefineName>ENABLE_ETHICALLY_CORRECT_GROWTH</DefineName> <iDefineIntVal>1</iDefineIntVal> </Define>
 
Last edited:
Looks like an interesting feature! Forgive me for nitpicking, but you’ve written “mestizzo” where it should be “mestizo”. Unless they’re Italian of course.
 
I was thinking about having a Founding Father for Indentureds. :think:
(Indentured Servants, Mestizos, Mulatos.)

He could e.g.
  • Have Indentureds require 25% less time to become an Expert
  • Give Indentureds +10% Combat Strength
  • Bring 2 Mulatos and 2 Mestizos
e.g. Juan de Pareja (image see below)

More information also here:

Images:
Spoiler :

File_Retrato_de_Juan_Pareja_by_Diego_Velazquez.jpg


900_Portrait of Juan de Pareja.jpg

 
Last edited:
Now that ethnicity become a thing, would ethnic problem also be dragged into this? Because, it might cause more frequent turmoil in the colony
 
... would ethnic problem also be dragged into this?
Most likely not as a "core mechanic" that is somehow regularly triggering because it would probably get tedious soon. :dunno:
But as "unique Python Events" there could e.g. be events involving Europeans having problems with Indios, Mulattos or Mestizos - it just requires a good story. :)

But just like the "Ethnicity" the "CitizenStatus" could also be used now for such Python Events.
E.g. somehow the "Indentured" in a City getting in conflict with the "Privileged" class.

------

Well, it is all up to the creativity of the Event makers. :thumbsup:

In short:
As "flavour events": would be cool
As "core mechanic": unlikely
 
Last edited:
It was the first time I can remember that we actually created something like this to have a new dynamically configurable Enum added to XML by ourselves.
So from this feature we actually also learned something new that could be very useful in the future for other additions.
Actually I added this ability on the 13th of December and tweaked it on the 20th when I used it to fix FontSymbols on city billboards. In other words it's a brand new ability. I decided to go all out when using it on FontSymbols and create a generic approach, which can be reused as much as we need. Given how new it is, I'm not surprised you haven't used it before.

What makes it really useful is not that it autogenerates the enum. We could have just written the enum in the header file and that would be the same effort into getting it working. What really makes a difference with the new system is that the game autogenerates a string to enum conversion, which makes it possible to read the enum from xml. In other words the enum itself isn't easier to get, but it will get the xml interface with xml config error checking "for free".
 
Founding Father Juan de Pareja is now also implemented. :)

He is kind of the FF of the "small man", the indentured and underprivileged. (+10 combat strength to those.)
He thus also brings 2 Mestizzos and 2 Mulattos.

His most useful trait is probably the +10% chance of a colonist becoming an expert by hard work.
But he also comes with another quite useful trait that he increases the Units waiting on the dock to 5 (4+1).

Civ4ScreenShot0005.JPG
Civ4ScreenShot0006.JPG
 
Top Bottom