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.
SimpleOptimize
Per-player FPS optimizer for hoard runs (/opt): item sleeper, shadow killer, culling. Written by Claude & Chonk.
By Chonkzilla
| Date uploaded | 20 hours ago |
| Version | 0.1.10 |
| Download link | Chonkzilla-SimpleOptimize-0.1.10.zip |
| Downloads | 103 |
| Dependency string | Chonkzilla-SimpleOptimize-0.1.10 |
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
SimpleOptimize
Written by Claude & Chonk
Performance work and bug fixes for Lethal Company v81, built for runs where hundreds of collected items tank the frame rate.
Anyone can install it. Almost everything runs only on your own machine and doesn't affect other players. The exceptions are called out below.
Commands
Type these in the in-game chat.
| Command | What it does |
|---|---|
/opt (/optimize) |
Status: items sleeping, shadows removed, items culled, frame time and FPS, and which features are on |
/opt sleep on|off |
Item sleeper |
/opt snap on|off |
Instant settle for items dropped aboard |
/opt shadows on|off |
Shadow remover |
/opt cull on|off |
Hides ship items when you're far away |
/opt yeet on|off |
Cruiser launch fix |
/opt spray |
Spray colour status, and how many colours are available |
/opt spray <index> |
Use one of the game's own spray colours. Your colour is yours: other players running SimpleOptimize see it on the marks you spray, and you see theirs |
/opt spray #RRGGBB |
Use any colour, for example /opt spray #20B2AA |
/opt spray off |
Back to the normal colour |
/opt dropship |
Cargo dropship status and the speed table |
/opt dropship on|off |
Fast cargo dropship |
/opt dropship speed <1-4> |
1 is normal (40s), 2 is 20s, 3 is 13s, 4 is 10s to arrive. Only at the Company: deliveries on a moon stay vanilla |
/opt dropship wait on|off |
Keeps the dropship waiting until someone opens it |
/opt transit on|off |
Fast player ship landing and takeoff (off by default) |
/opt cargo and /opt paint work the same as dropship and spray.
Every command also works with !, such as !opt or !opt spray #FF69B4. Use it if /opt
replies "unknown command". That message comes from another chat mod grabbing every /
command before SimpleOptimize sees it, and those mods ignore !.
Settings are saved in local.simpleoptimize.cfg.
Performance
- Item sleeper. The game updates the position of every item that isn't being held, every frame, forever. Items resting aboard now skip that update, and wake up the moment they're grabbed, moved or used.
- Shadow remover. Resting items stop casting shadows, and get them back when picked up or taken off the ship. Hundreds of shadows is the biggest graphics cost of a big hoard.
- Instant settle. A falling item can't sleep, so after a big merge or organize, hundreds of items spend seconds dropping into place. Items dropped aboard now land instantly. Items dropped outside still fall normally.
- Distance culling. While you're out collecting, items on the ship stop being drawn once you're more than 45 m away, and reappear as you come back.
Cargo dropship
Normally you wait 40 seconds for a terminal order to arrive, and the dropship leaves after 30 seconds whether or not anyone opened it. If it leaves unopened, you lose the items and the credits.
SimpleOptimize makes it arrive faster and, by default, keeps it waiting until someone opens it, so you can't miss an order you paid for. Once it's opened, it leaves at your chosen speed.
Only the host needs this. The host controls the dropship timer, so players without the mod still see it arrive early, with nothing out of sync.
Spray paint colour
The game picks each spray can's colour at random. /opt spray lets you choose it.
Only players with the mod see your colour. The game never sends spray colour between players, so anyone without SimpleOptimize sees the original colour on the same cans and the same paint. Nothing breaks. You just see different colours.
Players who have SimpleOptimize get the host's colour automatically when they join and whenever it changes. To keep your own colour, set
[Spray] AcceptHostColor = false.
Picking one of the game's colours always works. A custom colour depends on the paint material supporting it. If it doesn't, the command tells you instead of silently doing nothing.
Paint that's already on a wall keeps its colour. Only new spray changes.
Bug fixes
| Fix | What it fixes |
|---|---|
| Cadaver kill lag | Killing a cadaver plant made the game throw an error and write several debug lines. Clearing a growth turned into thousands of them: 2,110 errors and a 24 MB log in one measured session. |
| Spider web slow | Breaking a web while you're caught in it left you permanently slower, and it stacked each time. |
| Stuck interact | A lost network message could leave you unable to interact, scroll or use items until you rejoined. Now it clears itself after 2 seconds. |
| Cruiser yeet | Teleporting into the cruiser, or walking into it on TZP, could launch it across the map. |
| Ship item cap | Raises the limit of 400 items saved on the ship. |
| Early grab | Lets you pick up items before the game starts. |
| Throw error spam | Silences a flood of harmless errors caused by other players dropping items. |
| Magnet lag | When the cruiser attached to the ship, the game wrote three log lines for every item within 25 m. With a big hoard that took 772 ms. Now skipped. |
| Weed killer error flood | If the plant you were spraying got destroyed first, the game threw an error every frame until you stopped: 25,691 in one measured session. Now it happens once. |
| Blood particle flood | A dead body's blood effect can be aimed at a mesh with no surface. The game then warns every frame: 57,398 log lines in one session, and a real frame cost for the rest of the day. That emitter is switched off. |
| Unknown names | Players who joined late showed up as "unknown". Steam only shares names between friends or people in the same Steam lobby, and everyone leaves that lobby when the ship first lands. Now your game asks Steam for the missing names. Fixes your own screen, so each player needs SimpleOptimize. |
These floods of errors and log lines build up over a session. That's why lag can creep back after a few runs and go away when you restart.
Fast player ship (off by default)
Speeds up your own ship's landing and takeoff. This is off by default, and it isn't the same thing as the fast cargo dropship.
Needs everyone in the lobby. Each player's game plays the landing on its own, so this only turns on when every player has SimpleOptimize, or you're playing solo. It checks automatically and switches itself off if someone joins without the mod.
Install
Drop SimpleOptimize.dll into BepInEx/plugins, or install with a mod manager. Requires
BepInEx 5.4.2100. Every feature can be turned off in local.simpleoptimize.cfg.
CHANGELOG
Changelog
0.1.10
- Fixed: putting something in a belt bag left a ghost copy behind, on the ship and at the Company. The game animates an item into a bag by writing its target position every frame and letting the item's own update apply it; the ship-item optimizer was skipping exactly that update, so the item went in and the picture stayed put. Items in a bag, or on their way into one, are never slept now.
0.1.9
- The startup line no longer counts SimpleBuy: its commands are part of SimpleSell now.
- Spray colours are per player now. Everyone running SimpleOptimize sees each player's own
colour on the marks that player sprayed, instead of the host's colour for everything. Vanilla
players are untouched: they see the game's seeded colour, as always. Set yours with
/opt spray #RRGGBBand it follows you into any lobby where the others run SimpleOptimize.
0.1.8
- Fixed: cruiser cargo floating next to the ship. Items in a magneted cruiser are kept in place by the game writing their position every frame, and the item sleeper was skipping that, so cargo drifted loose during the flight and hung in the air at the next landing. Cruiser cargo now only sleeps while the truck is unmagneted (driving around on a moon), and items are only snapped into place when they're parented to the ship itself.
0.1.7
- The fast cargo dropship only works at the Company now. On a moon, deliveries arrive at
vanilla speed, so ordering gear mid-run is no faster than the game intends. The "waits until
opened" guard follows it, since it exists to protect fast deliveries.
/opt dropshipsays which applies where you are.
0.1.6
- Tournament mode (SimpleHQ): while a tournament runs, this mod's commands are off and its gameplay extras switch off, so the game plays as close to vanilla as possible.
/optis off, the cargo dropship goes back to vanilla speed and timing, and grabbing items before the game starts is reverted. The performance work and bug fixes stay on.
0.1.5
Fixed: a dead body could cost you frames for the rest of the day. A body's blood effect can be
pointed at a mesh with no surface, and the game then warns about it every single frame: 57,398
lines in one measured session, each one written to the log and the console. That emitter is now
switched off when it's spotted, which loses nothing, since it could never have drawn anything.
Turn it off with [Fixes] FixZeroAreaParticleSpam.
0.1.4
Fixed: late joiners show up as "unknown". Names aren't sent between players; each game
looks them up through Steam, and Steam only shares a name with friends or people in the same
Steam lobby. Everyone leaves that lobby when the ship first lands, so someone who joins later
(SimpleSell's late join) and the players already in the game can't see each other's names.
Your game now asks Steam for any missing name and puts it on the player, the pause menu list
and the radar. It fixes your own screen only, so every player who wants names needs
SimpleOptimize. Turn it off with [Fixes] FixUnknownNames in local.simpleoptimize.cfg.
0.1.3
- Credit line: written by Claude & Chonk.
0.1.2
Fixed: weed killer error flood. While you spray weed killer on a cadaver plant or mold, the game keeps track of which plant it's hitting. If that plant got destroyed first, by another player or the growth shrinking, the game threw an error every single frame until you stopped spraying. One measured session logged 25,691 of them.
Now the game forgets the destroyed plant right away, so it happens once instead of thousands
of times. You can turn this off with [Fixes] FixWeedKillerIndexSpam in
local.simpleoptimize.cfg.
These floods build up over a session, which is why lag could come back after a few runs and go away after a restart.
0.1.1
- Commands now work with
!. You can type!opt,!opt spray #FF69B4, and so on. If/optreplies "unknown command", another chat mod is grabbing/first, and those mods ignore!. - Fixed: magnet lag with a big hoard. When the cruiser attached to the ship, the game wrote three log lines for every item within 25 m. A few hundred items meant around 700 lines each time, measured at 772 ms. That logging is now skipped.
/optalso writes its numbers to the BepInEx log, so you can read them after a lag spike.
0.1.0
First release.
- Better performance with big hoards: item sleeper, shadow remover, instant settle and distance culling.
- Fast cargo dropship (
/opt dropship) with speed levels, and an option to keep it waiting until it's opened so you can't miss an order. - Spray paint colour (
/opt spray), shared with other players who have SimpleOptimize. - Bug fixes: cadaver kill lag, spider web slow, stuck interact, cruiser yeet, ship item cap, early grab and throw error spam.