You are viewing a potentially older version of this package. View all versions.
Tchernobill-Fast_Load-1.0.2 icon

Fast Load

Shorter loading screens: removes the level loader's fixed delays and redundant memory cleanup, and speeds up SideLoader's start-up. Area loads are about 40-70% faster.

Date uploaded a day ago
Version 1.0.2
Download link Tchernobill-Fast_Load-1.0.2.zip
Downloads 106
Dependency string Tchernobill-Fast_Load-1.0.2

This mod requires the following mods to function

BepInEx-BepInExPack_Outward-5.4.8 icon
BepInEx-BepInExPack_Outward

BepInEx pack for Outward.

Preferred version: 5.4.8

README

Features

Shorter loading screens, without changing what the game loads.

About half of a vanilla area load is spent waiting: the level loader pauses for fixed delays between its steps (around 6 seconds per load), then frees memory a second time right after having done it in the empty transition scene. Fast Load removes those waits and lets Unity work faster while the loading screen is up. With SideLoader installed, it also takes texture decoding and asset bundle reading off SideLoader's start-up path.

Nothing to configure. Install it and loads are shorter.

Measured gains

Time until the "press a key" prompt, Definitive Edition, i5-9600K / RTX 3060 / SATA SSD, with a SideLoader-based mod list (average of two runs each):

Trip Vanilla Fast Load
Main menu -> Chersonese 16.5 s 9.1 s
Cierzo -> Chersonese dungeon 11.8 s 3.5 s
Chersonese dungeon -> Cierzo 13.0 s 6.1 s
Cierzo -> Chersonese 14.6 s 8.6 s
Chersonese -> Chersonese dungeon 11.8 s 4.1 s
Chersonese dungeon -> Chersonese 14.4 s 8.6 s
Chersonese -> Cierzo 13.4 s 6.5 s
Game start -> main menu (SideLoader mod list) 24.7 s 18.8 s

What it changes

Level loads

  • The loader's fixed WaitForSeconds delays become a single frame.
  • Right after the players are placed at their spawn point, the game waits instead until there is ground under them, never longer than vanilla's 2.5 s. Some areas (Berg) build their ground a moment after the player is placed: resuming earlier would drop the player through it, and the fall would kill them on the next landing.
  • After a defeat, the load waits until the defeat scenario has finished setting up in the new area (it does so one second into the load, which a fast load can outrun), so the player respawns alive.
  • While the loading screen is up, Unity may spend up to 50 ms per frame integrating loaded assets (vanilla: about 4 ms).
  • The second memory cleanup (UnloadUnusedAssets + garbage collection) is skipped when the transition scene already ran one in the same load. Measured: same memory use 5 s after loading.

Game start, when SideLoader is installed

  • The PNG textures of SideLoader packs are decoded on worker threads. The result is cached in BepInEx\cache\FastLoad.textures, so later starts skip both the decode and the compression. The textures are byte-for-byte those SideLoader itself produces.
  • The asset bundles of SideLoader packs are opened asynchronously as soon as every mod is loaded.

Whenever a precondition does not hold - an unknown game version, an unusual image format, a changed mod list - Fast Load leaves that step to the game or to SideLoader.

Settings

Via Outward Configuration Manager (F5), or BepInEx\config\tchernobill.fastload.cfg. All are on by default, except:

Skip low-memory transition scene (off). Vanilla loads an empty scene between two areas so both are never in memory together. Skipping it saves up to 2 more seconds per load, but raises the memory peak during loads by 350-500 MB. Leave it off on PCs with 8 GB of RAM or less.

Fixed wait scale (0) brings back a fraction of the vanilla delays: 1 is vanilla.

Verify decoded textures (off) is a diagnostic: it decodes each SideLoader texture the vanilla way too and logs whether both are identical.

Compatibility

  • Tested in solo. Co-op has not been tested; the co-op specific waits are left untouched.
  • SideLoader is optional. Without it, only the level load changes apply.
  • Saves are not touched.

CHANGELOG

Update 1.0.2

Fix an intermittent crash at game start with SideLoader installed. Building SideLoader's XML serializers on worker threads generates code at runtime, which the game's Mono runtime does not reliably survive away from the main thread. That background build is removed: SideLoader builds its serializers itself, as in vanilla. Game start is a few seconds slower than with 1.0.1; area loads, the texture cache and asynchronous asset bundles are unchanged.

Update 1.0.1

Fix a defeat loop: after a defeat that respawns the player in the same area (an inn, a dungeon entrance...), the player could come back dead and be defeated again, over and over. A pending defeat scenario finishes its set-up one second into the load, and a fast load could end before that. Fast Load now waits for it - only when a defeat is under way, so normal loads are unchanged.

Update 1.0.0

Initial version. Removes the level loader's fixed delays (keeping a wait for the ground under the players right after they are placed), raises Unity's loading priority while the loading screen is up, skips the redundant second memory cleanup, and moves SideLoader's start-up work (texture decoding, XML serializers, asset bundles) off the main thread, with a texture cache for later starts.