Skip to content

Releases: KSPModdingLibs/KSPCommunityFixes

1.39.1

29 Aug 08:53

Choose a tag to compare

Installation through the CKAN mod manager is recommended.

Manual installation instructions :

  • 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
  • Download and install the following required dependencies :

1.39.1 (usual hotfix release...)

Bug fixes

  • FastAndFixedEnumExtensions : fixed the caching mechanism erroring out on enums containing multiple members using the same underlying value. Was causing various issues in RO/RP1 due to such an enum being defined there.

1.39.0

New/improved patches

  • New performance patch : FasterEditorPartList Improve the responsiveness of the part list when switching between categories, sorting and searching by tag. Adress issue #242 reported by @Rodg88.
  • New KSP bugfix : DebugConsoleDontStealInput, fix the Alt+F12 console input field stealing input when a console entry is added. Thanks to @Clayell for reminding me of that especially annoying issue.
  • New KSP bugfix & performance patch : FastAndFixedEnumExtensions, fix exceptions when calling the EnumExtensions.*Description() methods with a non-defined enum value, and implement a cache for faster and less allocating execution of those methods. Adress issue #321, thanks to @k1suuu for reporting it.

Other changes

  • Fixed Override patches not properly handling switch statement.
  • Changed the logging level from Error to Warning when KSPCF detects a duplicate value in configs used to load a [Persistent] field.

1.39.0

28 Aug 17:33

Choose a tag to compare

Installation through the CKAN mod manager is recommended.

Manual installation instructions :

  • 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
  • Download and install the following required dependencies :
1.39.0

New/improved patches

  • New performance patch : FasterEditorPartList Improve the responsiveness of the part list when switching between categories, sorting and searching by tag. Adress issue #242 reported by @Rodg88.
  • New KSP bugfix : DebugConsoleDontStealInput, fix the Alt+F12 console input field stealing input when a console entry is added. Thanks to @Clayell for reminding me of that especially annoying issue.
  • New KSP bugfix & performance patch : FastAndFixedEnumExtensions, fix exceptions when calling the EnumExtensions.*Description() methods with a non-defined enum value, and implement a cache for faster and less allocating execution of those methods. Adress issue #321, thanks to @k1suuu for reporting it.

Other changes

  • Fixed Override patches not properly handling switch statement.
  • Changed the logging level from Error to Warning when KSPCF detects a duplicate value in configs used to load a [Persistent] field.

1.38.1

10 Jun 10:33

Choose a tag to compare

Installation through the CKAN mod manager is recommended.

Manual installation instructions :

  • 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
  • Download and install the following required dependencies :
1.38.1

Bug fixes

  • ModuleColorChangerOptimization : Fixed externally controlled ModuleColorChanger modules state being wrongly reset on startup, notably causing the stock heat shields to start in the charred / black state in the editor.
1.38.0

New/improved patches

  • New performance patch : ModuleColorChangerOptimization : Mostly eliminate the constant overhead from ModuleColorChanger.Update() by avoiding re-setting the shader property when the state hasn't changed.
  • Improved OptimizedModuleRaycasts patch by removing useless constant overhead from the ModuleSurfaceFX.Update() method, see PR #303.

Bug fixes

  • OptimisedVectorLines : Fixed issue #306, fuel overlay not showing in the editor due to incorrect camera matrix math used in the optimization. Thanks to @Halbann for taking care of that one.

1.38.0

08 Jun 13:26

Choose a tag to compare

Installation through the CKAN mod manager is recommended.

Manual installation instructions :

  • 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
  • Download and install the following required dependencies :
1.38.0

New/improved patches

  • New performance patch : ModuleColorChangerOptimization : Mostly eliminate the constant overhead from ModuleColorChanger.Update() by avoiding re-setting the shader property when the state hasn't changed.
  • Improved OptimizedModuleRaycasts patch by removing useless constant overhead from the ModuleSurfaceFX.Update() method, see PR #303.

Bug fixes

  • OptimisedVectorLines : Fixed issue #306, fuel overlay not showing in the editor due to incorrect camera matrix math used in the optimization. Thanks to @Halbann for taking care of that one.

1.37.3

04 Apr 19:53

Choose a tag to compare

Installation through the CKAN mod manager is recommended.

Manual installation instructions :

  • 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
  • Download and install the following required dependencies :

1.37.3 - Bugfix release

  • ModuleIndexingMismatch : Fixed issue #307 that would functionally disable this patch when multiple mods contain PartModules with the same name.

1.37.2 - Bugfix release

  • PersistentIConfigNode : Reverted the DataType and FieldData types to being public instead of internal as those are part of the public API for this patch, and in active use by ROLib and SEP.

1.37.1 - Bugfix release

  • PartParsingPerf : Fixed issue #305, incorrect parsing of dragModelType part config values resulting in various parts such as wings to generate additional drag.

1.37.0 - Latest main release

New / improved patches

  • New performance patch : CraftBrowserOptimisations, significantly reduces the time it takes to open the craft browser and to search by name. Most noticeable with lots of craft. Thanks to @Halbann for this contribution.
  • New performance patch : OptimisedVectorLines, improve performance in the Map View and tracking station when a large number of vessels and bodies are visible via faster drawing of orbit lines and CommNet lines. Thanks to @Halbann for this contribution.
  • New QoL patch : TargetParentBody, allow targeting the parent body of the current craft, or any body in the parent hierarchy. Thanks to @jamespglaze for this contribution.
  • Improved PartSystemsFastUpdate performance patch with a complete reimplementation of TemperatureGaugeSystem, also see issue #194. Mostly eliminate the background processing of (hidden and visible) temperature gauges, and massively reduce the overhead of instantiating them, reducing scene load time and stutter on part count change events such as decoupling, docking, undocking, crashes, etc.
  • Various initial loading performance optimizations, see PR #269:
    • Added performance metrics logging upon reaching the main menu
    • Added (almost) entirely custom MU model parser, roughly 3 times the throughput of the stock parser (~300 MB/s on my machine). Will only really benefit to people having fast NVME drives with good random read performance.
    • New patch, GameDatabasePerf : KSPCF now maintains dictionaries of loaded models and texture assets by their url/name, and patch the stock GameDatabase.GetModel* / GameDatabase.GetTexture* method to use them instead of doing a linear search. This was especially bad with models, as the method would compare the requested string to the GameObject.name property for every model in the database.
    • As a part of the MinorPerfTweaks patch, patched the FlightGlobals.fetch property to not fallback to a FindObjectOfType() call when the FlightGlobals._fetch field is null, which is always the case during loading. In a stock + BDB test case, this alone was about 10% of the total loading time, 7+ seconds.
    • New patch, PartParsingPerf, featuring slightly faster part icon generation and faster Part fields parsing by creating a dictionary of IL-emitted parser delegates.
  • Improved CommNetThrottling performance patch. The patch now implement a custom rate limiting logic for CommNet updates, with a more balanced take between performance improvements and simulation precision. As a result, the patch is now enabled by default. Thanks to @JonnyOThan for insisting on that one.
  • Improved ModuleIndexingMismatch patch. Will now restore persisted data following a config change (mod updated/added/removed) when the module now present on a part is a base or derived module. Notably allow action group customizations to be kept when sharing craft files between Waterfall / non-Waterfall installs. Thanks to @BrettRyland for detailed reporting.
  • New modding API patch : BaseFieldListUseFieldHost. Allow BaseField and associated features (PAW controls, persistence, etc) to work when a custom BaseField is added to a BaseFieldList (ie, a Part or PartModule) with a host instance other than the BaseFieldList owner. Potential use cases for this are having a part or module-level PAW item associated to and sharing the state of a common field, for example a field in a KSPAddon, or extending external (typically stock) modules with additional PAW UI controls and/or persisted fields.

Bug fixes

  • CollisionEnhancerFastUpdate : Fixed issue #282, fixed exception spam when launching fireworks and possibly in other situations with non-part physical objects such as fairing / shroud debris. Thanks to @JonnyOThan for reporting.
  • PersistentIConfigNode : Fixed issue #297, incorrect return value from the LoadObjectFromConfig() KSP API method, notably resulting in the PAPI Lights mod failing to load. Thanks to @svm420 for reporting.

Internal changes

  • Added a [ManualPatch] attribute. When applied to a class derived from BasePatch, the patch won't be automatically applied by the default patching infrastructure. To apply the patch, call BasePatch.Patch() manually.

1.37.2

30 Mar 12:59

Choose a tag to compare

Installation through the CKAN mod manager is recommended.

Manual installation instructions :

  • 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
  • Download and install the following required dependencies :

1.37.2 - Bugfix release

  • PersistentIConfigNode : Reverted the DataType and FieldData types to being public instead of internal as those are part of the public API for this patch, and in active use by ROLib and SEP.

1.37.1 - Bugfix release

  • PartParsingPerf : Fixed issue #305, incorrect parsing of dragModelType part config values resulting in various parts such as wings to generate additional drag.

1.37.0 - Latest main release

New / improved patches

  • New performance patch : CraftBrowserOptimisations, significantly reduces the time it takes to open the craft browser and to search by name. Most noticeable with lots of craft. Thanks to @Halbann for this contribution.
  • New performance patch : OptimisedVectorLines, improve performance in the Map View and tracking station when a large number of vessels and bodies are visible via faster drawing of orbit lines and CommNet lines. Thanks to @Halbann for this contribution.
  • New QoL patch : TargetParentBody, allow targeting the parent body of the current craft, or any body in the parent hierarchy. Thanks to @jamespglaze for this contribution.
  • Improved PartSystemsFastUpdate performance patch with a complete reimplementation of TemperatureGaugeSystem, also see issue #194. Mostly eliminate the background processing of (hidden and visible) temperature gauges, and massively reduce the overhead of instantiating them, reducing scene load time and stutter on part count change events such as decoupling, docking, undocking, crashes, etc.
  • Various initial loading performance optimizations, see PR #269:
    • Added performance metrics logging upon reaching the main menu
    • Added (almost) entirely custom MU model parser, roughly 3 times the throughput of the stock parser (~300 MB/s on my machine). Will only really benefit to people having fast NVME drives with good random read performance.
    • New patch, GameDatabasePerf : KSPCF now maintains dictionaries of loaded models and texture assets by their url/name, and patch the stock GameDatabase.GetModel* / GameDatabase.GetTexture* method to use them instead of doing a linear search. This was especially bad with models, as the method would compare the requested string to the GameObject.name property for every model in the database.
    • As a part of the MinorPerfTweaks patch, patched the FlightGlobals.fetch property to not fallback to a FindObjectOfType() call when the FlightGlobals._fetch field is null, which is always the case during loading. In a stock + BDB test case, this alone was about 10% of the total loading time, 7+ seconds.
    • New patch, PartParsingPerf, featuring slightly faster part icon generation and faster Part fields parsing by creating a dictionary of IL-emitted parser delegates.
  • Improved CommNetThrottling performance patch. The patch now implement a custom rate limiting logic for CommNet updates, with a more balanced take between performance improvements and simulation precision. As a result, the patch is now enabled by default. Thanks to @JonnyOThan for insisting on that one.
  • Improved ModuleIndexingMismatch patch. Will now restore persisted data following a config change (mod updated/added/removed) when the module now present on a part is a base or derived module. Notably allow action group customizations to be kept when sharing craft files between Waterfall / non-Waterfall installs. Thanks to @BrettRyland for detailed reporting.
  • New modding API patch : BaseFieldListUseFieldHost. Allow BaseField and associated features (PAW controls, persistence, etc) to work when a custom BaseField is added to a BaseFieldList (ie, a Part or PartModule) with a host instance other than the BaseFieldList owner. Potential use cases for this are having a part or module-level PAW item associated to and sharing the state of a common field, for example a field in a KSPAddon, or extending external (typically stock) modules with additional PAW UI controls and/or persisted fields.

Bug fixes

  • CollisionEnhancerFastUpdate : Fixed issue #282, fixed exception spam when launching fireworks and possibly in other situations with non-part physical objects such as fairing / shroud debris. Thanks to @JonnyOThan for reporting.
  • PersistentIConfigNode : Fixed issue #297, incorrect return value from the LoadObjectFromConfig() KSP API method, notably resulting in the PAPI Lights mod failing to load. Thanks to @svm420 for reporting.

Internal changes

  • Added a [ManualPatch] attribute. When applied to a class derived from BasePatch, the patch won't be automatically applied by the default patching infrastructure. To apply the patch, call BasePatch.Patch() manually.

1.37.1

27 Mar 08:35

Choose a tag to compare

Installation through the CKAN mod manager is recommended.

Manual installation instructions :

  • 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
  • Download and install the following required dependencies :

1.37.1 - Bugfix release

Bug fixes

  • PartParsingPerf : Fixed issue #305, incorrect parsing of dragModelType part config values resulting in various parts such as wings to generate additional drag.

1.37.0 - Latest main release

New / improved patches

  • New performance patch : CraftBrowserOptimisations, significantly reduces the time it takes to open the craft browser and to search by name. Most noticeable with lots of craft. Thanks to @Halbann for this contribution.
  • New performance patch : OptimisedVectorLines, improve performance in the Map View and tracking station when a large number of vessels and bodies are visible via faster drawing of orbit lines and CommNet lines. Thanks to @Halbann for this contribution.
  • New QoL patch : TargetParentBody, allow targeting the parent body of the current craft, or any body in the parent hierarchy. Thanks to @jamespglaze for this contribution.
  • Improved PartSystemsFastUpdate performance patch with a complete reimplementation of TemperatureGaugeSystem, also see issue #194. Mostly eliminate the background processing of (hidden and visible) temperature gauges, and massively reduce the overhead of instantiating them, reducing scene load time and stutter on part count change events such as decoupling, docking, undocking, crashes, etc.
  • Various initial loading performance optimizations, see PR #269:
    • Added performance metrics logging upon reaching the main menu
    • Added (almost) entirely custom MU model parser, roughly 3 times the throughput of the stock parser (~300 MB/s on my machine). Will only really benefit to people having fast NVME drives with good random read performance.
    • New patch, GameDatabasePerf : KSPCF now maintains dictionaries of loaded models and texture assets by their url/name, and patch the stock GameDatabase.GetModel* / GameDatabase.GetTexture* method to use them instead of doing a linear search. This was especially bad with models, as the method would compare the requested string to the GameObject.name property for every model in the database.
    • As a part of the MinorPerfTweaks patch, patched the FlightGlobals.fetch property to not fallback to a FindObjectOfType() call when the FlightGlobals._fetch field is null, which is always the case during loading. In a stock + BDB test case, this alone was about 10% of the total loading time, 7+ seconds.
    • New patch, PartParsingPerf, featuring slightly faster part icon generation and faster Part fields parsing by creating a dictionary of IL-emitted parser delegates.
  • Improved CommNetThrottling performance patch. The patch now implement a custom rate limiting logic for CommNet updates, with a more balanced take between performance improvements and simulation precision. As a result, the patch is now enabled by default. Thanks to @JonnyOThan for insisting on that one.
  • Improved ModuleIndexingMismatch patch. Will now restore persisted data following a config change (mod updated/added/removed) when the module now present on a part is a base or derived module. Notably allow action group customizations to be kept when sharing craft files between Waterfall / non-Waterfall installs. Thanks to @BrettRyland for detailed reporting.
  • New modding API patch : BaseFieldListUseFieldHost. Allow BaseField and associated features (PAW controls, persistence, etc) to work when a custom BaseField is added to a BaseFieldList (ie, a Part or PartModule) with a host instance other than the BaseFieldList owner. Potential use cases for this are having a part or module-level PAW item associated to and sharing the state of a common field, for example a field in a KSPAddon, or extending external (typically stock) modules with additional PAW UI controls and/or persisted fields.

Bug fixes

  • CollisionEnhancerFastUpdate : Fixed issue #282, fixed exception spam when launching fireworks and possibly in other situations with non-part physical objects such as fairing / shroud debris. Thanks to @JonnyOThan for reporting.
  • PersistentIConfigNode : Fixed issue #297, incorrect return value from the LoadObjectFromConfig() KSP API method, notably resulting in the PAPI Lights mod failing to load. Thanks to @svm420 for reporting.

Internal changes

  • Added a [ManualPatch] attribute. When applied to a class derived from BasePatch, the patch won't be automatically applied by the default patching infrastructure. To apply the patch, call BasePatch.Patch() manually.

1.37.0

09 Mar 09:02

Choose a tag to compare

1.37.0 Pre-release
Pre-release

Installation through the CKAN mod manager is recommended.

Manual installation instructions :

  • 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
  • Download and install the following required dependencies :

Changes in this version

New / improved patches

  • New performance patch : CraftBrowserOptimisations, significantly reduces the time it takes to open the craft browser and to search by name. Most noticeable with lots of craft. Thanks to @Halbann for this contribution.
  • New performance patch : OptimisedVectorLines, improve performance in the Map View and tracking station when a large number of vessels and bodies are visible via faster drawing of orbit lines and CommNet lines. Thanks to @Halbann for this contribution.
  • New QoL patch : TargetParentBody, allow targeting the parent body of the current craft, or any body in the parent hierarchy. Thanks to @jamespglaze for this contribution.
  • Improved PartSystemsFastUpdate performance patch with a complete reimplementation of TemperatureGaugeSystem, also see issue #194. Mostly eliminate the background processing of (hidden and visible) temperature gauges, and massively reduce the overhead of instantiating them, reducing scene load time and stutter on part count change events such as decoupling, docking, undocking, crashes, etc.
  • Various initial loading performance optimizations, see PR #269:
    • Added performance metrics logging upon reaching the main menu
    • Added (almost) entirely custom MU model parser, roughly 3 times the throughput of the stock parser (~300 MB/s on my machine). Will only really benefit to people having fast NVME drives with good random read performance.
    • New patch, GameDatabasePerf : KSPCF now maintains dictionaries of loaded models and texture assets by their url/name, and patch the stock GameDatabase.GetModel* / GameDatabase.GetTexture* method to use them instead of doing a linear search. This was especially bad with models, as the method would compare the requested string to the GameObject.name property for every model in the database.
    • As a part of the MinorPerfTweaks patch, patched the FlightGlobals.fetch property to not fallback to a FindObjectOfType() call when the FlightGlobals._fetch field is null, which is always the case during loading. In a stock + BDB test case, this alone was about 10% of the total loading time, 7+ seconds.
    • New patch, PartParsingPerf, featuring slightly faster part icon generation and faster Part fields parsing by creating a dictionary of IL-emitted parser delegates.
  • Improved CommNetThrottling performance patch. The patch now implement a custom rate limiting logic for CommNet updates, with a more balanced take between performance improvements and simulation precision. As a result, the patch is now enabled by default. Thanks to @JonnyOThan for insisting on that one.
  • Improved ModuleIndexingMismatch patch. Will now restore persisted data following a config change (mod updated/added/removed) when the module now present on a part is a base or derived module. Notably allow action group customizations to be kept when sharing craft files between Waterfall / non-Waterfall installs. Thanks to @BrettRyland for detailed reporting.
  • New modding API patch : BaseFieldListUseFieldHost. Allow BaseField and associated features (PAW controls, persistence, etc) to work when a custom BaseField is added to a BaseFieldList (ie, a Part or PartModule) with a host instance other than the BaseFieldList owner. Potential use cases for this are having a part or module-level PAW item associated to and sharing the state of a common field, for example a field in a KSPAddon, or extending external (typically stock) modules with additional PAW UI controls and/or persisted fields.

Bug fixes

  • CollisionEnhancerFastUpdate : Fixed issue #282, fixed exception spam when launching fireworks and possibly in other situations with non-part physical objects such as fairing / shroud debris. Thanks to @JonnyOThan for reporting.
  • PersistentIConfigNode : Fixed issue #297, incorrect return value from the LoadObjectFromConfig() KSP API method, notably resulting in the PAPI Lights mod failing to load. Thanks to @svm420 for reporting.

Internal changes

  • Added a [ManualPatch] attribute. When applied to a class derived from BasePatch, the patch won't be automatically applied by the default patching infrastructure. To apply the patch, call BasePatch.Patch() manually.

1.36.1

20 Oct 18:11

Choose a tag to compare

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.

Hotfix release 1.36.1

Fix for issue #273 : ForceSyncSceneSwitch patch incompatibility with Universal Storage 2. The patch will now be disabled when US2 is installed.

Note that this patch might be causing other issues, but so far we haven't been able to confirm them.

1.36.0

18 Oct 13:49

Choose a tag to compare

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.