Experimental Linux builds are now available! Download here.
Version 2026.1.6.3329
Jump to navigation
Jump to search
Version 2026.1.6.3329
Development phase
Pre-alpha
Release date
January 29th, 2026
Version 2026.1.6.3329 is a KSA build released on January 29th, 2026 which included various changes and fixes to part infratructure.
Additions
- Added individual component and state getters to PartComponentStateful.StateUpdater to match the interface of PartComponentStateful.StateList.
- Added in missing part components from top-level parts.
- Added a Split function to the PartTree class.
Changes
- Increased thruster emissive intensity.
- Merged Part and SubPart classes. This should allow us to simplify quite a bit of logic doubling. This is not meant change the player-facing functionality of Part vs SubPart in the game. Quite a bit of clean up is still needed and given the wide reaching changes unintentional regressions should be expected.
- Return individual TStates and TFxStates by reference instead of by value from PartComponentStateful.StateList.
- Moved the Tank processing from the old TankList to the new PartComponent/State system.
- Made hot path initialization for type updaters infallible to avoid the infectious complexity of null checking in the vehicle update task.
- Created an InertMass part component and shifted readers to use that instead of the template.
- Moved one last mass template reader over to the part component.
- Converted engine and thruster controllers into part components.
- Created a GetSubtreeComponents() function to iterate over all part components of a given type for a part and its sub parts.
- Fixed a few accessors in PartComponent.List which weren't returning the concrete component type correctly.
- Return sub parts as a span instead of a collection.
- Converted the subtree components generator into a ref struct enumerator to avoid allocation and used it in an additional place.
- Moved some PartTree functionality out of the Part class into the PartTree class.
- Tightened access to the Parts list in PartTree so that it must go through PartTree functions so we can eliminate logic errors where other code outside this class could change the Parts list in the PartTree without performing other related logic in the PartTree.
- Changed the public Parts collection in PartTree to be a readonly span.
- Made the static part list on PartTree private.
- Marked two PartTree lists as readonly.
- Use GetSubtreeComponents() for inert mass display.
- Fixed some pipelines being mislabelled as 'Byte[]'
- Fixed potential issue in Physics IntegrateVelocityVerlet where mass properties were not set for initial state causing a mismatch between first derivatives and half-step derivatives.
Removals
- Removed the isEditorUpdate flag for vehicle updates which no longer has a purpose.
- Removed unused PartTree.TotalSubstanceStorageVolume.
- Removed thruster/engine controller properties on PartTree.
- Removed some redundant code left over from tanks moving to part components.
Changelog JSON
View changelog entries
{
"build": "2026.1.6.3329",
"date": "2026-01-29",
"fromRevision": 3309,
"toRevision": 3329,
"commits": [
{
"rev": 3310,
"date": "2026-01-28",
"author": "Maxwell Johnson",
"lines": [
"Increased thruster emissive intensity."
]
},
{
"rev": 3311,
"date": "2026-01-28",
"author": "Morrow",
"lines": [
"Merged Part and SubPart classes. This should allow us to simplify quite a bit of logic doubling. This is not meant change the player-facing functionality of Part vs SubPart in the game. Quite a bit of clean up is still needed and given the wide reaching changes unintentional regressions should be expected."
]
},
{
"rev": 3312,
"date": "2026-01-27",
"author": "gravhoek-rw",
"lines": [
"Return individual TStates and TFxStates by reference instead of by value from PartComponentStateful.StateList."
]
},
{
"rev": 3313,
"date": "2026-01-27",
"author": "gravhoek-rw",
"lines": [
"Added individual component and state getters to PartComponentStateful.StateUpdater to match the interface of PartComponentStateful.StateList."
]
},
{
"rev": 3314,
"date": "2026-01-28",
"author": "JPLRepoRocketWerkz",
"lines": [
"Moved the Tank processing from the old TankList to the new PartComponent/State system."
]
},
{
"rev": 3315,
"date": "2026-01-28",
"author": "gravhoek-rw",
"lines": [
"Made hot path initialization for type updaters infallible to avoid the infectious complexity of null checking in the vehicle update task."
]
},
{
"rev": 3316,
"date": "2026-01-28",
"author": "gravhoek-rw",
"lines": [
"Removed the isEditorUpdate flag for vehicle updates which no longer has a purpose."
]
},
{
"rev": 3317,
"date": "2026-01-28",
"author": "gravhoek-rw",
"lines": [
"Created an InertMass part component and shifted readers to use that instead of the template.",
"Added in missing part components from top-level parts.",
"Removed unused PartTree.TotalSubstanceStorageVolume."
]
},
{
"rev": 3318,
"date": "2026-01-28",
"author": "gravhoek-rw",
"lines": [
"Moved one last mass template reader over to the part component."
]
},
{
"rev": 3319,
"date": "2026-01-28",
"author": "gravhoek-rw",
"lines": [
"Converted engine and thruster controllers into part components.",
"Created a GetSubtreeComponents() function to iterate over all part components of a given type for a part and its sub parts.",
"Fixed a few accessors in PartComponent.List which weren't returning the concrete component type correctly.",
"Return sub parts as a span instead of a collection."
]
},
{
"rev": 3320,
"date": "2026-01-28",
"author": "gravhoek-rw",
"lines": [
"Removed thruster/engine controller properties on PartTree."
]
},
{
"rev": 3321,
"date": "2026-01-28",
"author": "gravhoek-rw",
"lines": [
"Converted the subtree components generator into a ref struct enumerator to avoid allocation and used it in an additional place."
]
},
{
"rev": 3322,
"date": "2026-01-29",
"author": "JPLRepoRocketWerkz",
"lines": [
"Removed some redundant code left over from tanks moving to part components.",
"Moved some PartTree functionality out of the Part class into the PartTree class.",
"Added a Split function to the PartTree class.",
"Tightened access to the Parts list in PartTree so that it must go through PartTree functions so we can eliminate logic errors where other code outside this class could change the Parts list in the PartTree without performing other related logic in the PartTree."
]
},
{
"rev": 3323,
"date": "2026-01-29",
"author": "JPLRepoRocketWerkz",
"lines": [
"Changed the public Parts collection in PartTree to be a readonly span."
]
},
{
"rev": 3324,
"date": "2026-01-28",
"author": "gravhoek-rw",
"lines": [
"Made the static part list on PartTree private."
]
},
{
"rev": 3325,
"date": "2026-01-28",
"author": "gravhoek-rw",
"lines": [
"Marked two PartTree lists as readonly."
]
},
{
"rev": 3326,
"date": "2026-01-28",
"author": "gravhoek-rw",
"lines": [
"Use GetSubtreeComponents() for inert mass display."
]
},
{
"rev": 3327,
"date": "2026-01-29",
"author": "Hanan Finnerty",
"lines": [
"Fixed some pipelines being mislabelled as 'Byte[]'"
]
},
{
"rev": 3328,
"date": "2026-01-29",
"author": "JPLRepoRocketWerkz",
"lines": [
"Fixed potential issue in Physics IntegrateVelocityVerlet where mass properties were not set for initial state causing a mismatch between first derivatives and half-step derivatives."
]
}
]
}