Skip to content

Siesta

Latest release1.2.2
DownloadGitHub · Thunderstore
RequiresMelonLoader 0.7.3, S1API Forked 3.1.1

🛟 Need help or found a bug? Get support at support.doodesch.de/siesta.

Big crowds tanking your frames? Siesta puts off-screen, far-away NPCs to sleep - hiding them and pausing their movement and schedule - then wakes them cleanly as you get close. Works on every NPC in the world, including ones added by other mods. Built on S1API.

  • Distance + visibility LOD for every NPC. Off-screen NPCs beyond a configurable distance are hidden (no render/animation cost); far, idle, non-essential ones also have their movement and schedule paused - the NavMeshAgent is the biggest per-NPC cost.
  • Functionality first. Dealers attending a deal, employees mid-task, customers in a deal, story/quest NPCs, anyone in dialogue, in a vehicle, KO’d or near any player are never paused - only ever hidden. Nothing essential is skipped.
  • Clean wake-up. A woken NPC re-enables its schedule, catches up to the current in-game time, resumes movement and repairs its NavMesh placement before it is shown again - no T-pose, no stuck agents. If a wake ever fails, that NPC is left fully running for the session.
  • Multiplayer safe. Hiding is purely local per client; the movement/schedule pausing runs only on the host (who owns NPC simulation), so there is no desync.
  • Cheap and self-tuning. A small, fixed number of NPCs is re-checked per frame, so the mod’s own cost stays flat regardless of how many NPCs exist.
  • Works with anything that adds NPCs - base game, employee mods, NPC-overhaul mods. The win scales with how many NPCs are far from you, so it shines in crowded saves.
ComponentVersion / Source
Schedule IIL2CPP (current Steam public build)
MelonLoader0.7.3+
S1APIifBars/S1API_Forked (NPC registry, save lifecycle)

Install with a mod manager (r2modman / Gale) from the Schedule I community; the dependencies (MelonLoader, S1API) are pulled in automatically.

  1. Install MelonLoader 0.7.3 for Schedule I.
  2. Install S1API (its DLLs go in Mods/ and Plugins/ per its own instructions).
  3. Drop Siesta.dll into your Schedule I Mods/ folder.

Settings live in UserData/MelonPreferences.cfg under Siesta_01_Main. Changes apply live.

SettingDefaultWhat it does
EnableLodtrueMaster on/off. Off = fully vanilla (everything restored).
EnableInMultiplayertrueOff = the mod does nothing in co-op.
CosmeticDistance40Off-screen NPCs beyond this (m) are hidden.
DeepDistance80Off-screen, idle, non-essential NPCs beyond this (m) also pause (host only).
Hysteresis8Dead-zone (m) around boundaries so NPCs don’t flicker between states.
BudgetPerFrame32NPCs re-evaluated per frame (keeps the mod’s cost flat).
UseCosmeticCulltrueEnable the hide tier.
UseDeepCulltrueEnable the pause-movement/schedule tier.
RespectOnScreentrueNever cull an NPC roughly in view.
ShowFpsCounterfalseTiny on-screen FPS readout (top-right).

An on-screen HUD, hotkeys (F6-F10) and a siesta ... dev console exist only in development builds and are not shipped in the release.

Install it and play - there is nothing to do. Every NPC is continuously sorted into one of three tiers by its distance to the nearest player and whether it’s on screen:

  • Full - near, on screen, or doing something important: vanilla, nothing changed.
  • Cosmetic - off screen and mid-distance: renderer hidden (saves animation/draw), AI keeps running.
  • Deep - off screen and far, and safe to pause: also pauses movement + schedule (host only).

The win scales with how many NPCs are far from you - it’s biggest in NPC-dense saves and small in a sparse spot, because NPC simulation isn’t always the dominant frame cost. Siesta only ever removes work for NPCs you aren’t looking at, so it’s a safe, free-when-idle optimization.

  • Works with any mod that adds NPCs (they all register in the same game NPC registry).
  • If a mod’s NPCs do not appear at all, that is not the LOD layer: it hides and pauses NPCs by distance and restores them as you approach, and it never prevents one from spawning. Set EnableLod = false in UserData/MelonPreferences.cfg to rule it out in one restart.
  • Fannso’s MoreNPCs: that mod ships a separate build per backend, and its Mono/CrossCompat build has one watcher that cannot run on a standard IL2CPP game. It sits in a per-frame loop, so it throws thousands of times a minute and fills the log. Siesta routes that single call through a guard and stops calling it once it has failed. Everything else MoreNPCs does is untouched. On a matching build nothing ever fails and the watcher runs normally.
  • IL2CPP build only (current Steam public branch).
  • DooDesch - mod author.
  • ifBars/S1API - the modding API this is built on.

Provided as-is under the MIT License.