Expansion penalty would max out at 24 regardless of whether iPeripheryExcess was capped at 200; my guess would be that this is either old or reduces the power needed to calculate the penalty.
Here is a graph of the function currently used to calculate expansion instability, where the x-axis is iPeripheryExcess (100 *(periphery score/core score) - 100) and the y-axis is the instability penalty. The horizontal green line is at 25 while the vertical pink line is at 200, the set maximum of iPeripheryExcess.
The equation is 25 * tanh ((5/2)*(x/100))
Now, there are three problems with this curve:
1. It has an upper limit so crap like the game posted in this thread can happen
2. It isn't very attractive
3. It is wrong, here's the real thing:
It is floored, so the real maximum is 24, not 25, and it starts being 24 around when when the periphery-core ratio is 1.78, much lower than the imposed maximum of 3.
Now, you can't come out of obscurity to present a problem without a solution, so now you get my solution.
1. No more limit on iPeripheryExcess. As I've shown, it doesn't do anything with the current formula anyways and it defeats the purpose of the one I will be proposing.
2. New formula for the penalty (logistic function capped at a cube root rather than a constant): (5 * x^(1/3))/(1 + e^(-10 * (x/100))), which looks like this (in black, seen over the old graphs):
And floored (necessary to make it integer):
Anybody who plays even semi-historically will not notice, but if you go excessively ahistorical and keep pressing you will notice.
If you want to test it yourself, I have included an edited Stability.py that conforms with this suggestion (replace the one in Assets\Python).
Even with this change, there are still a few problems which were brought up and should be addressed, including:
1. Ability to do early rushes on European civilizations
2. Ability to create and maintain that large of an army
3. Ability to stay stable by stagnating technologically (both as seen in this thread and in order to avoid stability checks).