Game version 0.2.6228.27061. All data, formulas, and switches verbatim from Assembly-CSharp.dll :: Chemistry, Mole, MoleHelper. Pressure-independent freezing per Mole.WillFreeze; vapor curve P = A · TB.
Units:T axis:P axis:Layers:Phase bg:
Phase plot
Hover over plot — coordinates appear here. Click to set pressure.
Solid line = boiling curve (P = A·TB from triple to critical point). Dashed vertical = freeze line. Dotted vertical = critical-T line.
Filled dot = triple point. Hollow dot = critical point. Open ring = saturation T at current pressure.
Game model: freezing is pressure-independent (single vertical line per gas); solid mass exists as a separate PureIce Thing, not as a MatterState value.
Gases
Gas
Freeze
Max-liq
Boil @ P
State @ P
Game model vs. real physics
Pressure-independent freezing
Real solids have a Clausius-Clapeyron slope on the solid-liquid boundary (steep but non-vertical). The game's Mole.WillFreeze is just Temperature ≤ FreezingTemperature(); no Pressure parameter. Each gas has one fixed freeze temperature, drawn as a vertical line. Water freezes at exactly 273.15 K whether you're at 0.5 kPa or 60 MPa.
No solid state in atmospheresAtmosphereHelper.MatterState has only Liquid, Gas, All, None. There is no Solid. Freezing removes the mole from the mixture and spawns a PureIce Thing object with temperature = Tf + 0.1. No sublimation curve, no in-mixture ice crystals.
Power-law vapor pressure, not Antoine
Real-world saturation pressure follows the Antoine equation log P = A − B / (T + C) (or its NIST extensions). The game uses P = A · TB: a straight line in log-log space. Decent fit over a narrow range; the per-gas constants are tuned to hit the right endpoints rather than match real Antoine coefficients.
Critical temperatures are approximated
Some are close, several are wildly off. Real vs. game:
CO2 304.1 K vs. 266.3 K,
N2 126.2 K vs. 190.0 K,
H2 33.2 K vs. 70.1 K,
H2O 647.1 K vs. 643.7 K (close).
Same goes for triple points (real water triple point is 0.61 kPa at 273.16 K; game uses 6.3 kPa).
Molar masses are balance-tuned, not physicalMOLAR_MASS_OXYGEN = 16 (real O2 = 32 g/mol; the game uses the atom, not the diatomic molecule).
NITROGEN = 64 (real N2 = 28; game is 2.3× high).
WATER = 108 (real H2O = 18; game is 6× high).
Hydrogen 2 and Helium 4 are correct. These values drive how heavy a mole of gas is in pipes / canisters, not the phase math.
Constant latent heat and specific heat
Real Lvap falls with T and reaches zero at the critical point; real cp varies with T. The game uses a single LATENT_HEAT_* and SPECIFIC_HEAT_* per gas, applied at every temperature.
Helium never has a liquid or solid phase
In reality helium liquifies at 4.2 K (and superfluid at 2.17 K). The game sets A = B = 0 for helium, short-circuiting FreezingTemperature and MaxLiquidTemperature to TemperatureKelvin.Zero. CanEvaporate(Helium) = false and CanCondense(Helium) = false make it gas-only everywhere.
Water and Steam are separate GasType enum values
Real H2O is one chemical with three phases. The game tracks Water (liquid) and Steam (gas) as distinct values that must be converted between via MoleHelper.EvaporationType / CondensationType. They share A, B, and the critical temperature, but each is its own routing tag through the simulation.
Internal names don't always match in-game labels
"Pollutant" is internally called Sulfur Dioxide (CRITICAL_TEMPERATURE_SULFUR_DIOXIDE_K). "Nitrous Oxide" is partly stored under Nitrogen Dioxide constants. "Liquid Alcohol" maps to Ethanol constants. "Methane" was previously named "Volatiles" before the March-2026 Gases Update.
Hardcoded triple points for water
Most gases have FreezingTemperature derived from the curve at the floor pressure, so P_sat(Tf) == Pf by construction. Water and Polluted Water short-circuit to hardcoded constants (273.15 / 276.15 K), and P_sat(273.15) ≈ 6.87 kPa ≠ the floor Pf = 6.3 kPa. The clamps absorb the ~0.6 kPa discrepancy.