A gameplay mechanics I would like to see is.
1. Exponentially decaying function of POP growth rate with respect to population.
2. Exponentially increasing emigration rate with respect to population.
point 1 and 2 combined you should see a saturation point for the population, where emigration rate would balance the growth rate and resulting in no population growth in that city. I think this is the most elegant solution to this problem.
for 1, we could have medical techs/agricultural advances tied to it, that the function would drop slower for higher med. tech/higher life rating, and the saturation point would be raised.
When I mean exponentially decaying, I think it is something like this:
pop_growth_rate = A*exp[ -*Population^B/(life rating^C)]
where A is the pop growth rate determined by medical tech, B and C are constants,
a demonstration would be setting A to be 0.15, B to 1, C to 2, and Population be measured in thousands (k)
i. a 20k population, life rating 40 would grow at
pop_growth_rate = 0.15*exp[-20/40^2] = 0.148 #14%
ii. a 20k population, life rating 30 would grow at
pop_growth_rate = 0.15*exp[-20/30^2] = 0.146 #14%
iii.a 200k population, life rating 40 would grow at
pop_growth_rate = 0.15*exp[-200/40^2] = 0.132 #13%
iv.a 200k population, life rating 30 would grow at
pop_growth_rate = 0.15*exp[-200/30^2] = 0.120 #12%
v. a 2 million population (2000k), life rating 40 would grow at
pop_growth_rate = 0.15*exp[-2000/40^2] = 0.0429 #4%
vi. a 2 million population (2000k), life rating 30 would grow at
pop_growth_rate = 0.15*exp[-2000/30^2] = 0.0162 #1%
definitely not a very good model(the curve fall off too quick), but never the less it seemed to work. If we replace B with 0.75
i. a 20k population, life rating 40 would grow at
pop_growth_rate = 0.15*exp[-20^0.85/40^2] = 0.148 #~15%
ii. a 20k population, life rating 30 would grow at
pop_growth_rate = 0.15*exp[-20^0.85/30^2] = 0.147 #~15%
(better! a low life rating is less significant at low population)
iii.a 200k population, life rating 40 would grow at
pop_growth_rate = 0.15*exp[-200^0.85/40^2] = 0.141 #14%
iv.a 200k population, life rating 30 would grow at
pop_growth_rate = 0.15*exp[-200^0.85/30^2] = 0.135 #13%
(the life rating is beginning to show significance)
v. a 2 million population (2000k), life rating 40 would grow at
pop_growth_rate = 0.15*exp[-2000^0.85/40^2] = 0.100 #10%
vi. a 2 million population (2000k), life rating 30 would grow at
pop_growth_rate = 0.15*exp[-2000^0.85/30^2] = 0.073 #7%
(this is becoming clear that a low life rating would support much less population)
vii. a 20 million population, (20000k), life rating 40 would grow at
pop_growth_rate = 0.15*exp[-20000^0.85/40^2] = 0.008 #0.8%
(good, this is what we want, at least roughly)
vii. a 20 million population, (20000k), life rating 60 would grow at
pop_growth_rate = 0.15*exp[-20000^0.85/60^2] = 0.042 #4%
(New York would still be growing with 4.2 %, not bad)
I have plot 3 graphs using an online graph plotter for the above formula, A=0.15, B=0.85, C=2
life rating 30
life rating 40
life rating 60
Another constant setting is B=1 (That is more convenient, stupid term actually), and C=2.2
life rating 40
still, I am not quite satisfied with the shape of the curve.
If adding one more term of emigration, let's say emigration_rate = 0.00005*exp(A^0.1), we'd get
life rating 40 (saturation point around 16000k, a bit high IMO...but it should take very long to reach such a high number)
life rating 60 (saturation point around 40000k, well, fine, this model is very simple though, increasing C would shift up the saturation point.)
This is all the math I could muster, someone good at differential equation should help out.