Maxi
Member
- Oct 17, 2025
- 150
- 99
Game Version
2026.7.8.4980Operating System
Windows 10What Happened
The per-sequence Delta-V / TWR / Isp readout (the staging performance panel, backed by SequencePerformanceList) computes each stage's start ("wet") mass as the sum of every top-level part's own InertMass plus the fuel in the reachable tanks.It never adds the inert mass carried on a part's sub-parts (sub-components).
The physics mass the vehicle actually flies with (Vehicle.TotalMass) does include that sub-part inert mass, because it is built from the tree-wide InertMass list.
The consequence is that, for any vehicle that carries mass on sub-parts, every stage's wet mass in the staging panel is lower than the vehicle's real mass, so the shown Delta-V and TWR read too optimistic and are internally inconsistent with the flight model.
Measured on the stock default "Rocket" demo vehicle (in vacuum):
- First stage: real total mass 590,930.8 kg, but the staging wet mass is 590,845.1 kg. Difference: 85.8 kg too low.
- Upper stage: real mass 72,566.2 kg, but the staging wet mass is 72,480.5 kg. Difference: 85.8 kg too low.
- Total staged Delta-V: 18,143.5 m/s against the real mass, but the panel reports 18,195.7 m/s. The panel is +52.2 m/s (+0.3%) high; the upper stage alone is +0.5% high (10,083.6 vs 10,132.3 m/s).
- The fuel burned, mass-flow rate and exhaust velocity match exactly between the two computations, which isolates the whole discrepancy to the inert-mass term.
Where the 85.8 kg comes from:
It is the docking port CoreCouplingA_Prefab_DockingPort1WA: its entire mass sits on its sub-part CoreCouplingA_Subpart_InteriorTunnelA, while the docking port's own top-level InertMass is 0.00 kg. So the staging math sees the docking port as weightless. I used an mod to do an per-part InertMass dump on the Rocket:
CoreCouplingA_Prefab_DockingPort1WA: own 0.00 kg, sub-parts 85.77 kg
TOTALS: top-level own 20316.01 kg, sub-part 85.77 kg, TotalMass 590930.81 kg
heaviest sub-part templates:
CoreCouplingA_Subpart_InteriorTunnelA x1 = 85.77 kg
The offset is a fixed 85.8 kg regardless of stage mass. On this vehicle the effect is small (about 0.014% of mass, 0.3% of total dV), but it is a fixed real error on every vehicle that carries such a part, and it grows with however much mass a design stores on sub-parts (a station or a build with several docking ports multiplies it).
What Was Expected
The staging performance panel should use the same total inert mass that the physics uses for Vehicle.TotalMass (the whole part tree, sub-parts included), so the stage wet mass, Delta-V and TWR match the mass the vehicle actually flies with.As it stands, a docking port (and any part that stores its mass on sub-parts) is invisible to the staging calculation, and the panel promises a bit more dV and TWR than the ship can deliver.
Reproduction Steps
- Start the base game with only Core enabled (verify with the console "mods" command).
- Load a vehicle that carries a docking port.
- Enable "Show Delta-V Debug" from the debug menu to open the Delta-V Debug window.
- Expand a sequence and read its "Start mass X (inert Y + fuel Z)" line. The "inert Y" figure is lower than the vehicle's real inert mass (real total mass minus fuel) by the docking port's ~85.8 kg.
- Compare the stage wet mass (or "inert Y") against the vehicle's actual total mass. The staging figure is short by the total sub-part inert mass, and the sequence Delta-V/TWR is correspondingly optimistic.
Root cause, for what it is worth from my understanding (from the decompiled 2026.7.8.4980 source):
- SequencePerformanceList.Recompute builds remainingInertMass by iterating PartTree.Parts (top-level parts only) and adding part.InertMass?.MassPropertiesAsmb.Props.Mass; SequencePerformanceList.JettisonPart subtracts the same per-part figure at staging. Neither walks Part.SubParts, so InertMass modules on sub-parts are never counted.
- Vehicle.TotalMass comes from PartTree.RecomputeStaticMass (via ComputeInertMassPropertiesAsmb / StaticMassPropsAsmb), which sums the tree-wide PartTree.Modules.Get<InertMass>() and therefore does include sub-part InertMass.
- So WetMass = (sum of top-level parts' own InertMass) + fuel is less than Vehicle.TotalMass by exactly the sum of sub-part InertMass, and DeltaV and TWR inherit that error because they are derived from WetMass (Isp only for mixed-exhaust-velocity stages, where the rocket-equation terms no longer cancel). Summing inert mass tree-wide (the same source RecomputeStaticMass already uses) would fix them all.
Reproduction Rate
Always. It is deterministic and affects any vehicle that carries inert mass on sub-parts (for example a docking port).Additional Info
- How I found it: developing a mod that computes staged Delta-V, I added a cross-check that compares the mod's own start mass (taken from Vehicle.TotalMass) against the stock SequencePerformanceList output for the same vehicle. Fuel, mass-flow and exhaust velocity matched to the digit and only the start mass differed, by a constant 85.77 kg. The mod should not have any effect on the results;
- Impact: affects dV and TWR in the staging panel, both in the "too optimistic" direction; magnitude = the vehicle's total sub-part inert mass (85.77 kg for one docking port here, more for builds that carry several such parts).
Upvote
0