Carrying Capacity

If you liked this item, please rate it up on Steam Workshop page.

Author: starchitec

Last revision: 14 Mar, 2023 at 17:45 UTC (16)

File size: 13.23 MB

On Steam Workshop

Description:
Realistic Growth

UPDATE: This mod predates the Pdx population growth rework. It is slightly different- mostly in that there is not an arbitrary logistic growth limit, and this also has a system for robots. Personally, I am happy with the new pdx system (it is much more cleanly implemented). However I keep this mod updated for those who still enjoy it. Recommend setting vanilla Logistic Growth Cap to 1 with this mod. Pop scaling is up to your preference.

Populations grow exponentially, up to the point where pressures from their environment begin to make that unsustainable. The constant, linear population growth in Stellaris has always irked me, so after spending far too much of my free time doing math I present: Carrying Capacity, modeled after how real biological populations work. Population growth speed will no longer be the most powerful modifier in the game, as the population you have is more directly tied to what you can actually support. The goal is to dramatically increase population growth on worlds with room to expand, and rapidly curtail growth as a world fills up so that pops will reach a natural equilibrium and stop growing entirely once a planet is full. This has the nice side benefit of decreasing micro in the late game, as once your planets are at capacity they will stop growing pops naturally, and you wont have to constantly keep adding new buildings for all eternity. No need for that population controls edict, pops will simply stop procreating when they come to the cruel realization that high rents and low job prospects mean their offspring would have little to hope for.

Exponential Growth

Every non-robot pop will increase planet growth speed by 5%. On a newly colonized world, the effect is small, but as you build up a sizeable population the effect will compound. The higher the population, the faster it will grow. Machine and Robot empires have a similar mechanic, but since robots do not reproduce by traditional biological means they do not receive an assembly modifier based on pop size. Instead, they will get additional Replicator or Roboticist jobs based on the size of their population.

Carrying Capacity

Every planet has a Carrying Capacity and a Robot Capacity (displayed as planetary features) that is the ideal population size the planet can support. Capacity is determined by combining the total number of pops and free housing on the planet. Free district slots count as 10 potential housing (2 more than you could get from a max tech city district), meaning that as you develop a planet its capacity will decrease, especially if you build non-city districts. Capacity applies a negative growth modifier that is scaled by the ratio of free capacity left. When your population reaches capacity, the total growth from pops will equal the negative growth from the capacity modifier, and the population will reach equilibrium. Other growth modifiers from medical workers and species traits are multiplied by the effects of capaicity. Exceeding capacity will create scaling emigration push, in addition to stopping growth.

Machines and Robots

Mechanical pops are also limited by the capacity of a planet to support them. Assembly speed is not directly altered by capacity, however a scaling percentage of Replicator and Roboticist jobs will be converted into Master Replicators and Master Roboticists. These jobs increase the output of all robots, but do not assemble any new robots. This means machines will see a simplified version of the organic growth curve, with each inflection point occurring as they gain enough pops to support another Roboticist or Master Roboticist.

Math

I am using the standard mathematical model for biological population growth:
dN/dt = r((k-N)/k)N
N = number of pops
k = Carrying Capacity
r = growth rate constant (an arbitrary constant, but I am using .05 in this case)

Rearrange that to be useful as an additive paradox modifier, and you get:
N – N²/k-N/K

Where the first term, N, is the growth you get per pop. The second term, N²/k is the negative growth from used capacity. This means that as N approaches k, N²/k will approach N, and the whole equation approaches -1, which in paradox math, is -100% growth speed.

Robots get 1 extra assembly job per 25 jobs (or 20 for Machine Intelligences), until they reach 50% of capacity. Then, at every 10th percentile after, 1/5th of their regular assembly jobs will be converted into the Master Replicator variant, creating overall a simplified version of the same biological curve.

Base pop growth has been reduced from 3 to 2, and required machine assembly increased from 100 to 200 to offset how this mod generally increases growth speeds. The colony development speed penalty has been removed.


Note this is just a quick sketch of the new growth curves. Notice there are no actual values, it just shows the overall behavior. Still balancing how this works relative to vanilla, new growth, and new robot growth

This all can be balanced by altering the growth constant r, which right now is 5% per pop for non-robots, and 1 replicator per 20 pops for machines. That will make the curve steeper or shallower. I may also try to make it start slower than in vanilla, then quickly catch up. In my testing so far this number seems right, but I am happy to receive feedback if overall growth seems too much or too little. Mid game, pops should grow much faster, but it will even out as the capacity reductions kick in as your planets fill up.

Compatibility

Save game compatible, can take a year or two for all the capacity modifiers to get applied. Currently supports capacities up to 400 (that is a 5 city district ringworld). Any modded planet type or size that goes beyond this will be treated as a capacity 400 world. Birch Worlds from Gigastructures get a special infinite capacity modifier. Any modded source of pop assembly will also not be offset by carrying capacity, which will allow you to build pops beyond capacity. Ill do my best to account for these as well as they are reported. You can check to see if housing for carrying capacity is being counted correctly by with debugtooltip.

Japanese Localisation
Russian Localisation
Chinese Localisation
Korean Localisation

Try out some of my other Mods

[discordapp.com]