Kingfisher

If you liked this item, please rate it up on Steam Workshop page.

Author: Vortex

Last revision: 26 Apr at 15:13 UTC

File size: 637.5 KB

On Steam Workshop

Description:
Kingfisher: Performance Optimizer

By tracing and measuring the vanilla source code and identifying performance bottlenecks, Kingfisher replaces them with more efficient implementations. This makes TPS/FPS gains without side effects possible.

Statement on History Issues.

Optimization Results

In a typical test environment, Kingfisher’s patches themselves can achieve speedups of 2x ~ 25x. This will not translate as directly to overall TPS, because save states vary and optimization results are hard to generalize.
If you are willing to provide a save from a near vanilla late game colony, that will help Kingfisher iterate on its optimization results.

Technical Details

Kingfisher pursues zero runtime overhead, including:
– Uses PrePatcher to inject fields and replace methods, avoiding extra wrapping and call overhead.
– Uses Publicizer to expose private fields, avoiding reflection overhead.
– A conditionally compiled profiler, excluded from release builds.

Patch List
## Combat & Target Finding AttackTargetFinder.BestAttackTarget (FreePatch) Hediff_Shambler.TickInterval Hediff_Shambler.PreRemoved Hediff_Shambler.Notify_DelayedAlert ## Thoughts & Social PawnDiedOrDownedThoughtsUtility.RemoveLostThoughts (FreePatch) PawnDiedOrDownedThoughtsUtility.RemoveResuedRelativeThought (FreePatch) PawnDiedOrDownedThoughtsUtility.TryGiveThoughts (Prefix) ## Jobs & Work Scanning WorkGiver_Scanner.PotentialWorkThingsGlobal (FreePatch) CompRefuelable.PostSpawnSetup CompRefuelable.PostDestroy CompRefuelable.ConsumeFuel CompRefuelable.Refuel ThingComp.PostDeSpawn ## Buildings & Thing Lists ListerThings.Remove (FreePatch) ListerBuildings.AllBuildingsColonistOfDef (FreePatch) ListerBuildings.ColonistsHaveBuilding (FreePatch) ListerBuildings.ColonistsHaveBuildingWithPowerOn (FreePatch) ListerBuildings.Remove ListerBuildings.Add ## Health & Immunity ImmunityHandler.NeededImmunitiesNow (FreePatch)

Kingfisher is still in development, and this list will be kept in sync with updates.

FAQ

Q: Can Kingfisher be added to or removed from a save?
A: Yes. There should be no issue in theory.

Q: How compatible is Kingfisher with other mods?
A: Kingfisher aims to coexist with other mods. This requires testing and feedback, and your help is appreciated.

Q: What is Kingfisher’s relationship with Performance Fish?
A: Performance Fish inspired Kingfisher and served as a reference for patch direction and implementation.

Source Code

Kingfisher is open source[github.com] under a mix of MPL 2.0 and MIT licenses.

Credits

Publicizer by krafs.
Harmony by Brrainz.
Prepatcher by Zetrith.
Performance Fish & Fishery by Bradson.

Download
Required items:

Click the title to search on this site.


HarmonySteam Workshop
PrepatcherSteam Workshop