1.36.0
Required and must be downloaded separately :
- HarmonyKSP : Download - Homepage - Available on CKAN
- ModuleManager : Download - Forum post - Available on CKAN
Installation
Installation with CKAN is recommended. Otherwise:
- Go to the GitHub release page and download the file named
KSPCommunityFixes_x.x.x.zip - Open the downloaded *.zip archive
- Open the
GameDatafolder of your KSP installation - Delete any existing
KSPCommunityFixesfolder in yourGameDatafolder - Copy the
KSPCommunityFixesfolder found in the archive into yourGameDatafolder
Changes in this version
A KSPCF release was long overdue, but contributors didn't stop cooking, so there are a lot of new patches and changes in this version.
This update notably brings many flight scene performance improvements, here are some benchmarks :
Ryzen 5800X3D, 32 GB DDR4 @ 3600 MHz, Radeon RX 7600XT @ 720p, average and 1% low FPS over 1000 frames.
Note that these benchmarks are done in a brand new, non-modded sandbox save. Figures will likely be lower in career and/or modded games.
Acapello (152 parts stock default craft)
| Situation | Stock (avg) | KSPCF (avg) | Improv. | Stock (1%) | KSPCF (1%) | Improv. |
|---|---|---|---|---|---|---|
| Launchpad | 222 | 246 | 11% | 153 | 193 | 26% |
| Launch @ 3000m | 195 | 247 | 27% | 121 | 149 | 23% |
| Kerbin low orbit | 240 | 292 | 22% | 149 | 164 | 10% |
450 parts exploration vehicle launcher (KerbalX link)
| Situation | Stock (avg) | KSPCF (avg) | Improv. | Stock (1% ) | KSPCF (1%) | Improv. |
|---|---|---|---|---|---|---|
| Launchpad | 46 | 73 | 59% | 40 | 63 | 58% |
| Launch @ 3000m | 35 | 58 | 66% | 29 | 48 | 66% |
| Kerbin low orbit | 46 | 91 | 98% | 39 | 63 | 62% |
User facing changes
- New KSP performance patch : FasterPartFindTransform [KSP 1.12.3 - 1.12.5] : Faster, and minimal GC alloc relacements for the Part FindModelTransform* and FindHeirarchyTransform* methods.
- New KSP performance patch : ForceSyncSceneSwitch [KSP 1.12.0 - 1.12.5] : Forces all scene transitions to happen synchronously. Benefits scene transition time by reducing asset cleanup run count from 3 to 1 (contributed by @siimav).
- New KSP performance patches : this update introduce a collection of patches intended to fix various performance bottlenecks mainly relevant in high part count situations. See PR #257 and PR #256 :
- ModuleDockingNodeFindOtherNodesFaster : Faster lookup of other docking nodes.
- CollisionEnhancerFastUpdate : Optimization of the
CollisionEnhancercomponent (responsible for part to terrain collision detection). - PartSystemsFastUpdate : Optimization of various flight scene auxiliary subsystems : temperature gauges, highlighter, strut position tracking...
- MinorPerfTweaks : Various small performance patches (volume normalizer, eva module checks)
- FlightIntegratorPerf : General micro-optimization of
FlightIntegratorandVesselPrecalculate, components in charge of most of heavy lifting for newtonian physics as well as atmospheric and thermal physics. - FloatingOriginPerf : General micro-optimization of floating origin shifts. Main benefit is in large particle count situations (ie, launches with many engines) but this helps a bit in other cases as well.
- New KSP bufix : DragCubeLoadException [KSP 1.8.0 - 1.12.5] : Fix loading of drag cubes without a name failing with an IndexOutOfRangeException (contributed by @Nazfib).
- New KSP bufix : TimeWarpBodyCollision [KSP 1.12.0 - 1.12.5] : Fix timewarp rate not always being limited on SOI transistions, sometimes resulting in failure to detect an encounter/collision with the body in the next SOI (contributed by @JonnyOThan).
- New modding API improvement : KSPFieldEnumDesc [KSP 1.12.2 - 1.12.5] : Disabled by default, you can enable it with a MM patch. Adds display name and localization support for enum KSPFields. To use add
Descriptionattribute to the field (contributed by @siimav). - PAWStockGroups : Added PAW groups for generators, making the UI less confusing when multiple generators are present (contributed by @yalov).
Internal changes
- Patching now always run as the first ModuleManagerPostLoad callback, ensuring other callbacks can benefit from the patches (contributed by @al2me6).
- Small internal refactor of the patching infrastructure for less verbose patch declaration.
- Introduced a new "override" patch type, basically an automatic transpiler allowing to replace a method body with another. This has a little less overhead than a prefix doing the same thing, and allow for other patches (including non-KSPCF ones) to prefix the patched method as usual.