You are viewing a potentially older version of this package. View all versions.
RuntimeCollective-lc_memsaver-1.0.6 icon

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-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100
BMX-LobbyCompatibility-1.5.1 icon
BMX-LobbyCompatibility

Towards a future with fewer lobby incompatibility errors.

Preferred version: 1.5.1

README

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 de ReadPixels()/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 AudioClip qui 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 RenderTexture inutilisé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

  1. Installer BepInEx 5.
  2. Mettre RuntimeCollective.lc-memsaver.dll dans BepInEx/plugins/.
  3. 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 augmente IntervalSeconds.
  • UI floue : laisse ProtectUiTextures=true, augmente MinTextureSizeForTuning, ou baisse AggressiveMipmapBias.
  • Audio “pop” : désactive AggressiveAudioUnload ou augmente AudioStreamingThresholdSeconds.