------------------------------------------------------------------
------------------------------------------------------------------
Increasing the size of star systems has been the goal of many a mod, but there happens to be a reason why it doesn't work as well as it "should":
When creating a star system, the game adds the planets one by one.
As long as the maximum population is below 80, the systems will keep adding planets except Gas Giants.
As soon as the max. population reaches or exceeds 80, after every planet added there's a random decision if the game stops adding planets or not. Also, Gas Giants are now eligible.
As soon as the max. population exceeds 400, the game stops adding planets.
Thus, in vanilla BotF the maximum possible systems size for an empty system is 540 (400 plus 140 for the best class M planet).
Minor race home planets do not count towards the population capacity sum here, so it's possible to get even higher maximum populations in minor race home systems.
A system that is generated this way (i.e. all systems except for major race home systems) cannot have more than 7 planets. If the system has 7 planets, the game stops adding planets. If the system's maximum population is lower than 80 at this point, the game crashes (this is not possible in vanilla BotF, since planets have at least size 15). If the system is a minor race system, then one planet slot is reserved for the home planet of that minor race.
Of course, changing the boundary values would be interesting, but unfortunately the value 400 is not stored in trek.exe, neither as a float nor as an integer. The value 80 is not stored in trek.exe as a float and neither as an integer of length 4 or 8 (and I don't really feel like hunting "5000"s or even "50"s in trek.exe for fun, since if the 400 is not stored in trek.exe, the 80 most likely isn't either).
Side Note:
It looks like the game designers wanted to use the file ppgrowth.bin for this, but ran out of time and decided not to use it.
ppgrowth.bin is included in BotF, but even overwriting it with zeros doesn't seem to make any difference at all.
If you interpret is as a table with 10 rows, is looks like this:
Code: Select all
0A 00 32 00 40 42 0F 00 00 FF 00 00
32 00 64 00 20 A1 07 00 00 FF 00 00
64 00 C8 00 50 C3 00 00 01 FF 00 00
C8 00 2C 01 40 9C 00 00 01 FF 00 00
2C 01 90 01 30 75 00 00 01 FF 00 00
90 01 58 02 20 4E 00 00 01 FF 00 00
58 02 20 03 10 27 00 00 01 FF 00 00
20 03 B0 04 88 13 00 00 01 FF 00 00
B0 04 D0 07 C4 09 00 00 01 FF 00 00
D0 07 10 27 E2 04 00 00 01 FF 00 00
The first row,
0A 00 32 00 40 42 0F 00 00 FF 00 00
for example can be translated into
10 50 1000000 0
or
"if current maximum population is between 10 and 50, set some funny variable to 1000000, with Gas Giants disabled (=0)"
Or take the third row,
64 00 C8 00 50 C3 00 00 01 FF 00 00
in dec. numbers
100 200 50000 1
or
"if current maximum population is between 100 and 200, set some funny variable to 50000, with Gas Giants enabled (=1)"
The "funny variable" would then e.g. have something to do with the probability to add more planets to the system.
Interpreted this way, ppgrowth.bin reads as follows:
Code: Select all
10 50 1000000 0
50 100 500000 0
100 200 50000 1
200 300 40000 1
300 400 30000 1
400 600 20000 1
600 800 10000 1
800 1200 5000 1
1200 2000 2500 1
2000 10000 1250 1
But of course that's just speculation.