Decided to do some actual science instead of relying on a pre-4.0 formula or tooltips.
= Method
Start a game as UNE (200 star, elliptical galaxy, Ensign difficulty). Never expand, just note down the total population of Earth every month then plot on scatter graph.
- Make a save at game start to revert to (so leaders are the same)
- Finish the initial happiness agenda from the council, don't start another agenda
- Don't pick any tradition
Bonus: if on Windows, open Task Manager and look at the Memory usage of stellaris.exe while doing this long experiment.
== Control Group
Don't build any districts, don't clear any blockers.
== More Housing Group
Build 2 mining districts, 1 city district, clear 1 blocker (which won't give more pops), build 1 more city district. This creates a lot more housing.
= Results
== Diff per Month
== Total Population
= Analysis
The pop growth is random. Even loading the same save to go back a few months to watch makes the population numbers different.
From a performance perspective, it makes sense that 4.0 uses RNG to decide when pops grow. Remembering partial growth progress means storing more data, which in turn needs to be retrieved to do the calculation. To get into developer-speak, if that data is in the RAM, that's 100 times slower to fetch than if it was in the CPU's L1 cache. So making pop growth be "stateless" (nothing to remember, just calculate) is good for performance. This is probably why really tiny colonies don't seem to grow: you'd likely need great RNG rolls to get more pops.
The RNG means these graphs are too noisy to draw conclusions from. I still believe having more unused housing is better for growth. Not feeling up to doing full statistical rigour to calculate the correct error bars on these data points.
= Evaluation
I'd like someone to try replicating this experiment to see how RNG the real growth is. Maybe also play with `fast_forward` console command.
Edit: another experiment down below.
= Method
Start a game as UNE (200 star, elliptical galaxy, Ensign difficulty). Never expand, just note down the total population of Earth every month then plot on scatter graph.
- Make a save at game start to revert to (so leaders are the same)
- Finish the initial happiness agenda from the council, don't start another agenda
- Don't pick any tradition
Bonus: if on Windows, open Task Manager and look at the Memory usage of stellaris.exe while doing this long experiment.
== Control Group
Don't build any districts, don't clear any blockers.
== More Housing Group
Build 2 mining districts, 1 city district, clear 1 blocker (which won't give more pops), build 1 more city district. This creates a lot more housing.
= Results
== Diff per Month

== Total Population

= Analysis
The pop growth is random. Even loading the same save to go back a few months to watch makes the population numbers different.
From a performance perspective, it makes sense that 4.0 uses RNG to decide when pops grow. Remembering partial growth progress means storing more data, which in turn needs to be retrieved to do the calculation. To get into developer-speak, if that data is in the RAM, that's 100 times slower to fetch than if it was in the CPU's L1 cache. So making pop growth be "stateless" (nothing to remember, just calculate) is good for performance. This is probably why really tiny colonies don't seem to grow: you'd likely need great RNG rolls to get more pops.
The RNG means these graphs are too noisy to draw conclusions from. I still believe having more unused housing is better for growth. Not feeling up to doing full statistical rigour to calculate the correct error bars on these data points.
= Evaluation
I'd like someone to try replicating this experiment to see how RNG the real growth is. Maybe also play with `fast_forward` console command.
Edit: another experiment down below.
Last edited:
- 16
- 4
- 1