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.
You are viewing a potentially older version of this package.
View all versions.
lc memsaver
A BepInEx plugin that reduces Lethal Company's RAM consumption through multiple optimization systems. Works with vanilla and modded installs.
| Date uploaded | 5 months ago |
| Version | 1.0.6 |
| Download link | RuntimeCollective-lc_memsaver-1.0.6.zip |
| Downloads | 46 |
| Dependency string | RuntimeCollective-lc_memsaver-1.0.6 |
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.2100BMX-LobbyCompatibility
Towards a future with fewer lobby incompatibility errors.
Preferred version: 1.5.1README
lc-memsaver — Optimiseur mémoire (Lethal Company)
Plugin BepInEx (client-side) qui réduit l’usage RAM/VRAM en privilégiant des optimisations réversibles et des passes non-bloquantes (coroutines + budget de temps par frame).
Objectif
- Libérer de la mémoire sans casser le jeu (priorité compatibilité mods).
- Éviter les erreurs Unity classiques liées aux optimisations “irréversibles” (compression runtime, textures reinit, meshes non-readable, etc.).
Ce que le mod NE fait pas
- Pas de
Texture2D.Compress(), pas deReadPixels()/Reinitialize()(ça détruit la texture originale). - Pas de
Mesh.UploadMeshData(true)(irréversible) côté mod.
Fonctionnalités
Optimisation continue (sans freeze)
- Une passe périodique à intervalle fixe.
- Travail étalé sur plusieurs frames via un budget
MaxMsPerFrame.
Textures (VRAM)
- Mipmap streaming (budget configurable).
- Mipmap bias (baisse de qualité acceptée → baisse VRAM).
- Option : forcer le mip le plus bas sur les grosses textures non utilisées.
- Protections : évite de toucher aux textures UI/fonts/icons/sprites + seuils de taille.
Audio (RAM)
- Décharge les
AudioClipqui ne jouent pas (selon seuil / mode agressif). - Protections : ignore les clips micro/voice chat (ex: Dissonance).
- Cap de sécurité : limite le nombre de clips déchargés par passe.
Assets
- Déduplication de matériaux instanciés (quand c’est safe).
- Nettoyage de
RenderTextureinutilisées.
Nettoyage mémoire (GC)
- Light cleanup : Gen0 GC uniquement (pas de
Resources.UnloadUnusedAssets()→ moins de hitch). - Full cleanup : coroutine +
UnloadUnusedAssets()+ GC + LOH compaction (à utiliser aux transitions).
Compatibilité UI/meshes
- Patch de compatibilité : empêche
UploadMeshData(true)de rendre non-readable les meshes dynamiques/UI (réduit les erreurs CanvasRenderer).
Configuration
Fichier : BepInEx/config/RuntimeCollective.lc-memsaver.cfg
Réglages importants
| Catégorie | Setting | Rôle |
|---|---|---|
| Continuous Optimization | EnableContinuousOptimization |
Active l’optimisation continue |
| Continuous Optimization | IntervalSeconds |
Intervalle entre les passes |
| Continuous Optimization | MaxMsPerFrame |
Budget par frame (anti-freeze) |
| Texture Optimization | EnableMipmapStreaming + StreamingMipmapsBudgetMB |
Streaming + budget |
| Texture Optimization | AggressiveMipmapBias |
Baisse VRAM (qualité ↓) |
| Texture Optimization | UnloadUnusedTextures |
Force low-mip si texture non utilisée |
| Texture Optimization | ProtectUiTextures |
Protège UI/fonts/icons/sprites |
| Audio Optimization | AggressiveAudioUnload |
Décharge quasi tout (RAM ↓, pop-in possible) |
| Audio Optimization | MaxClipsUnloadedPerPass |
Cap de sécurité |
| Compatibility | PreventNonReadableDynamicMeshes |
Évite erreurs CanvasRenderer |
Installation
- Installer BepInEx 5.
- Mettre
RuntimeCollective.lc-memsaver.dlldansBepInEx/plugins/. - Lancer le jeu (le .cfg se génère).
Build
dotnet build -c Release- Sortie :
bin/Release/netstandard2.1/RuntimeCollective.lc-memsaver.dll
Compatibilité
- Client-side only (LobbyCompatibility soft dependency).
- Détecte certains mods perf et évite les features qui se chevauchent (ex: LethalSponge).
Dépannage
- Si ça hitch : baisse
MaxMsPerFrame(1–2) et/ou augmenteIntervalSeconds. - UI floue : laisse
ProtectUiTextures=true, augmenteMinTextureSizeForTuning, ou baisseAggressiveMipmapBias. - Audio “pop” : désactive
AggressiveAudioUnloadou augmenteAudioStreamingThresholdSeconds.