UPDATE: Since publishing this article I have improved the process used to balance parts. The article has been updated accordingly.
The first version of Universal Storage was balanced using real world examples. This involved researching storage techniques for each resource, using space program examples where possible, then calculating what each Universal Storage part could contain based on the model’s volume. This made for a accurate and realistic mod, but totally unbalanced against stock KSP.
With Universal Storage II (UvSii) we decided to take an alternative approach and balance everything against either stock KSP or the 3rd party mod the part was designed to work with.
The balance process for Universal Storage II is much simpler than the first version of the mod. I simply have to calculate the ratio of the UvSii part to the 3rd party mod part it’s balanced against! Where the 3rd party part is inline I also take the mass of the Universal Storage core and fairing into account to give a more accurate representation (cost is not modified, as you’re paying for additional flexibility).
Example 1: Universal Storage: Oxygen Tank and TAC Life Support
The first task is to run KSP with Universal Storage and TAC Life Support installed and build a craft with both parts. Because the TAC LS part is 1.25m inline I’ll also use a four bay service core and 1.25m cylindrical fairing. I’ll need to note that I’ve used those extra parts below.
Looking at the parts above (fairing is hidden in front and side projection) I can see that the Universal Storage part is just under twice the height of the TAC LS part. The top projection shows space for four Oxygen tanks (I’m using a four bay core so no surprises there). That adds up to a ratio of 2 which we’ll enter in the table below.
I have created a set of part tables in the Universal Storage II spreadsheet (view and download via Excel online) to automate the balance process.
The image below shows the example part with the ratio we found above and structure set to 1.25m to show that the core and fairing should be included in the calculation.
Cost: The cost of the part (including the resource cost) as used in part.cfg
Mass: The dry mass of the part (not including resource mass) as used in part.cfg
Oxygen: The resource type and amount. Some parts contain multiple resources.
Dry cost: Calculated cost minus any resource cost, provided for information only.
Wet mass: Calculated mass including any resource mass, for information only.
TAC LS: The 3rd party mod and part used for comparison.
UvSii Actual: The Universal Storage part currently in game.
UvSii Calculated: The calculated values for the Universal Storage part.
Ratio: The number of Universal Storage parts to equal one 3rd party part.
Structure: If set to 1.25m the mass of the core and fairing (divided by the ratio) will be removed from the UvSii Calculated mass.
So we can see from the above that the current release is pretty close to ideal, and the Universal Storage: Oxygen Tank should have the following:
- Cost: 152
- Mass: 0.083
- Oxygen: 26536
Example 2: Universal Storage: Oxygen Tank and Kerbalism
Kerbalism parts are balanced differently to TAC Life Support, if I use the same values as above the parts will be unbalanced. The Kerbalism Oxygen container is a radial / surface mounted part and is approximately the same size as the Universal Storage: Oxygen Tank so I’ve given it a ratio of 1 and we won’t be taking the core and fairing into account.
A radial part with a ratio of 1 is as simple as it gets. All the values will be identical to the reference part! This example also shows how unbalanced the currently released Universal Storage part is compared to the new calculated values.
The new values for the part should be:
- Cost = 500
- Mass = 0.008
- Oxygen: 6100
Because you should only have a single life support mod installed at any one time, it’s easy to change the stats for the part with module manager.
The above process have been completed for all the Universal Storage resource wedges, balanced against:
- TAC Life Support
- Snacks Continued
- USI Life Support
Next up balancing the Universal Storage: Radial tank and the various processors.