Skip to content

1.36.0

Choose a tag to compare

@gotmachine gotmachine released this 18 Oct 13:49

Required and must be downloaded separately :

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 GameData folder of your KSP installation
  • Delete any existing KSPCommunityFixes folder in your GameData folder
  • Copy the KSPCommunityFixes folder found in the archive into your GameData folder

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 CollisionEnhancer component (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 FlightIntegrator and VesselPrecalculate, 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 Description attribute 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.