= Customizable Objects, Classes and Populations
TODO: Diagram of how this works at user level
---
= Population Class
This is a new type of asset added to Unreal Engine. It defines which and how often the parameters of a single customizable object will be found when creating random instances of it using this class. It allows defining how common it is to find certain parameters, as well as allowing to blacklist and whitelist certain integer parameters via tags, both globally and on a per parameter basis.
You can create CustomizablePopulationClasses from the Content Browser Add New menu:
{F238259}
= Population
This is a new type of asset added to Unreal Engine. It produces random instances, and defines which and how often the population classes are created when generating random instances of the population. It allows a single population to create instances from multiple different customizable objects and or from the same customizable objects but from different classes.
You can create CustomizablePopulations from the Content Browser Add New menu:
{F238259}
Its customizable object instance generation algorithm is updated each time the population or the population class are saved, using the parameters from the customizable objects of each population class at that time.
It's also updated when the project is packaged, so it's ensured to be up to date.
---
= Population Class Editor
Each population class defines constraints. At most it can have one constraint per parameter that the base customizable object has. Different types of constraints can be used, depending on the customizable object parameter type.
Any parameter that is not specified with a constraint, will be randomized, with each of its options having equal chance of being on an instance generated from this particular class.
Any parameter that is ill-defined will also be randomized in the same manner.
---
= Tags
The tags are stored in the customizable object, so different population classes of the same customizable objects have access to the same tags, on the same parameters and parameter options.
---
An example of the population class usage can be found in the village demo infinite level.