Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
REPOPerformanceKit
BepInEx plugin toggling Unity settings: log filter/dedupe, incremental GC, scene-load GC.Collect, mipmap streaming, Time.maximumDeltaTime clamp, adaptive Time.fixedDeltaTime, camera layerCullDistances, optional FPS overlay. All via config file.
By Mentalize
| Date uploaded | 2 weeks ago |
| Version | 0.1.3 |
| Download link | Mentalize-REPOPerformanceKit-0.1.3.zip |
| Downloads | 1453 |
| Dependency string | Mentalize-REPOPerformanceKit-0.1.3 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
REPOPerformanceKit
A BepInEx plugin for R.E.P.O. that exposes a set of Unity engine configuration switches through a standard BepInEx config file. It does not patch any REPO game code.
The mod does not guarantee an FPS improvement. Whether it helps, hurts, or does nothing depends on your hardware, your other mods, and the specific scenes you play. Treat every feature as a knob you may or may not want to turn.
What the DLL actually does
On plugin Awake(), it reads its config file and then:
-
Log filtering. If
DisableUnityStackTraces = true, callsApplication.SetStackTraceLogType(LogType.Log/Warning, StackTraceLogType.None)and setsError/Exception/AsserttoScriptOnly. IfSuppressPluginLogSpamorDedupeRepeatedLogsis true, inserts a customBepInEx.Logging.ILogListenerin front of the existing listeners. The listener drops any Info/Debug/Message line whose text contains one of the configured substrings, and collapses consecutive identical lines to a(previous message repeated N times)summary. Warnings/Errors/Fatals are never filtered by substring. -
Frame-rate related Unity values. Sets
Time.maximumDeltaTimeto the configured value (default0.1). Optionally setsQualitySettings.vSyncCount(default: unchanged) andApplication.targetFrameRate(default: unchanged). -
GC tuning. If
EnableIncrementalGC = true, reflects intoUnityEngine.Scripting.GarbageCollector.GCModeand sets it toEnabled. If that type or property isn't present, logs a warning and continues. IfCollectGCOnSceneLoad = true, hooksSceneManager.sceneLoadedand callsGC.Collect()+GC.WaitForPendingFinalizers()on full (non-additive) scene loads. -
Mipmap streaming. If
EnableTextureStreaming = true, setsQualitySettings.streamingMipmapsActive = true,streamingMipmapsMemoryBudgetto the configured MB value (clamped to[128, 8192], default1024),streamingMipmapsMaxLevelReduction = 2,streamingMipmapsMaxFileIORequests = 256, andstreamingMipmapsAddAllCameras = true. -
Adaptive fixedDeltaTime. If
EnableAdaptivePhysics = true, creates aDontDestroyOnLoadMonoBehaviour that samples smoothed unscaled FPS once per second. If smoothed FPS falls belowDegradeBelowFps(default 40), setsTime.fixedDeltaTimetoDegradedFixedDeltaTime(default 0.0333, i.e. 30 Hz). If it then rises aboveRecoverAboveFps(default 55), resets toBaselineFixedDeltaTime(default 0.02, i.e. 50 Hz). -
Layer cull distances. If
EnableCullDistanceBoost = true, hooksSceneManager.sceneLoadedand setsCamera.main.layerCullDistancesfor layers8..31tofarClipPlane * Multiplier, leaving layers0..7at the default. The defaultMultiplieris1.0, which changes nothing. Only becomes effective if you lower it in the config file. -
Optional FPS overlay. If
ShowFpsOverlay = true(defaultfalse), creates aDontDestroyOnLoadMonoBehaviour that draws a single IMGUI label in the top-left corner showing smoothed FPS, frametime in ms, and the current physics tick rate derived fromTime.fixedDeltaTime.
That is the complete list of things this plugin does. Everything is driven by BepInEx/config/com.mentalize.repoperformance.cfg; the file is auto-generated with defaults on first run.
Install
Thunderstore Mod Manager: click Install. Manual: extract REPOPerformance.dll into <profile>/BepInEx/plugins/REPOPerformanceKit/. Requires BepInEx-BepInExPack.
Compatibility
Client-side. No Harmony patches on REPO code, no network traffic, no lobby compatibility requirement. Each player can install independently.
Note that on a networked host, lowering Time.fixedDeltaTime via the adaptive physics feature affects the physics tick rate of objects the host simulates authoritatively over Photon. If you host and notice networked rigidbody behaviour feel imprecise during performance dips, set EnableAdaptivePhysics = false.
Changelog
0.1.3
- Version bump (0.1.2 previously published).
0.1.2
- Rewrote description and README to strictly match the code's actual behaviour.
0.1.1
- Added
TextureStreamingfeature.
0.1.0
- Initial implementation (LogSuppressor, FrameRateTuner, GCTuner, AdaptivePhysics, CullDistanceBoost, FPSCounter).