Valheim
Install with App

Details

Latest version
1.3.2
Last Updated
First Uploaded
Downloads
550
Likes
0
Size
205KB
Dependants
ADDatHost Valheim hosting
€1

Changelog

1.3.2

  • Updated the build and test paths for Valheim 1.0.7 to compile against the original game assemblies instead of an older publicized assembly_valheim reference.
  • Preserved the existing Harmony targets and timing boundaries after validating their signatures and access levels against the 1.0.7 client and dedicated-server assemblies.
  • Documented that Start To Lobby ends at FejdStartup.Start; Valheim 1.0 intro playback and later menu interaction readiness remain outside that measurement.
  • Added native regression coverage for the 1.0 CSV escaped-quote behavior, language-specific cache replay and fallback, plus both ZRpc.SetLongTimeout branches across disabled and raised timeout floors.
  • Updated the Thunderstore dependency to denikson-BepInExPack_Valheim-5.4.2350 and aligned test defaults with the installed game runtime.

1.3.1

  • Added optional normal-list integration with compatible sighsorry.ConfigManager builds, including four independent log checkboxes per loaded mod, validated edits to the same cfg, and restart-required startup options. The updated ConfigManager edits numeric values inline and caches static checkbox metadata and labels.
  • Integrated mod logging filters into the single LoadTimeProfiler patcher DLL, with no per-message stack inspection. Groups are Fatal + Error, Warning, Message + Info, and Debug; defaults select the first two. No logging master switch or redundant None/All checkbox is shown.
  • Identifies default plugin loggers by object and mod GUID before constructor-body/Awake logging, so same-name mods have independent settings. Unowned/custom/shared Manual loggers and all Unity output always pass. Removed the common logging options, all Unity filter patches and their bootstrap hook.
  • Replaced separate configuration implementations with one sighsorry.LoadTimeProfiler.cfg: logging settings reload on headless servers; profiling, startup acceleration, and timeout settings remain fixed until restart. The filename uses the mod GUID.
  • Groups general settings under General in both the cfg and ConfigManager, with ProfilingEnabled explicitly controlling measurement and reports and separate per-mod logging controls.
  • Added General.ConfigAutoReloadEnabled, default false and restart-required. When enabled, other mods' registered BepInEx cfg files reload on the main thread after local edits without an in-game administrator or ConfigManager. The target mod retains responsibility for live behavior and client synchronization.
  • Shares filesystem watchers by directory, coalesces stable file changes, preserves automatic-save flags, isolates reload errors and tracks each live config object's applied contents to avoid duplicate callbacks. A standalone ConfigWatcher disables only this overlapping feature. LTP's own logging reload remains independent.
  • Applies configuration entries independently: unknown sections/keys are ignored and preserved, missing General values keep current/default values, and invalid values retain only the affected entry's current/default value. Duplicate keys use the last valid assignment; removing a mod GUID rule restores its default groups.
  • Allows ConfigManager edits despite unrelated invalid values or unknown sections, including files without General. Edits repair the selected value or add its current key without converting old names or rewriting unrelated lines. Preserves atomic snapshots, disk conflict checks, read-failure retention and restart-needed notices.
  • Preserves profiler reports and its own diagnostic source; records logging policies, installed hooks, and configuration revisions at each measurement boundary.
  • Disables only integrated filtering when standalone QuietLogs or ShutUp is detected; other features and foreign patches remain intact. With the updated ConfigManager, Logging - Mods shows the conflict reason and makes saved LTP log rules read-only while General settings remain editable.
  • Integrated logging and configuration management into the single patcher DLL.
  • Corrected the startup milestone label to Patcher.Patch while keeping its timing boundary unchanged.
  • Added managed and native integration regression coverage, including logging-only operation with all startup features disabled.
  • Debug builds deploy only the final patcher DLL to the local game when DeployToGame=true. Debug validation does not generate release ZIPs; release packaging remains a separate Release build.

1.2.5

  • Fixed scoped Harmony callback attribution when lifecycle calls are nested inside ObjectDB.Awake or ZNetScene.Awake, preserving outer callbacks and exclusive timing through nested and recursive phases.
  • Avoids unnecessary translation dictionary snapshots when foreign patches force localization CSV caching to bypass.
  • Simplified instrumentation bookkeeping, pending config-write tracking, and LocalizeKey adapter internals while preserving configuration keys, Harmony callback signatures, and compatibility policies.
  • Added 12 isolated regression cases covering config saves, nested attribution, and LocalizeKey identity, replay, and invalidation behavior.
  • Added the SkipReleasePackage build option so Release builds can be validated without regenerating the Thunderstore package; default packaging behavior is unchanged.

1.2.4

  • Increased automatic profile-log retention from 10 to 20 reports.
  • Refined the package description around faster startup, reliable world joins, and built-in profiling.

1.2.3

  • Reworked the README into a shorter installation, configuration, compatibility, and report-reading guide.
  • Retained both the Start To Lobby and Lobby To World report examples.
  • Removed the remaining legacy-key guidance and retired internal identifier; the runtime and config schema are current-only.

1.2.2

  • Added explicit manual overlap guidance to the three acceleration/protection config descriptions and the README.
  • Documents which LoadTimeProfiler setting to disable when StartupAccelerator, LocalizationCache, or TimeoutLimit is installed.
  • Keeps configuration authoritative: no runtime scan for these conflicting mods, automatic feature override, or additional config option was added.

1.2.1

  • Simplified profile reports to measured loading and connection timings plus actionable compatibility warnings.
  • Removed acceleration, localization-cache, config-write, and timeout-protection installation status, hit counters, and internal processing-time sections because they do not measure end-to-end time saved.
  • Removed all legacy configuration migration and legacy-mod detection/bypass paths. Only the four current General settings are read; legacy keys are ignored.

1.2.0

  • Replaced the single General.Enabled master switch with independent profiling, localization-cache, config-write-coalescing, and timeout-protection settings.
  • Profiling can now be disabled without disabling startup acceleration or connection protection; no report files or profiling-only runtime hooks are created in that mode.
  • Changed the default timeout floor from 90 to 120 seconds, made it configurable through General.TimeoutProtectionSeconds, and uses 0 to disable protection while preserving longer original limits.
  • Added safe migration from General.Enabled and older per-feature settings, including preservation of the previous all-disabled state.
  • Keeps only the minimal plugin-discovery and startup-completion hooks required by external localization caching when profiling is disabled.

1.1.13

  • Removed the Jotunn localization producer adapter after its pre-Awake Harmony preparation was found to initialize LocalizationManager before Jotunn.Main.Instance existed.
  • Keeps Jotunn localization entirely on its original path while retaining the successfully exercised vanilla CSV, canonical LocalizationManager.Localizer, and manager-library LocalizeKey caches.
  • Prevents the resulting Jotunn TypeInitializationException cascade into dependent mods such as VNEI, STUWard, and content registrations.

1.1.12

  • Extended startup localization acceleration to repeatedly invoked, canonical LocalizationManager.Localizer, Jotunn, and manager-library LocalizeKey producers.
  • Requires exact identities, method signatures, semantic fields, validated IL call flow, and actual Harmony callback registration; obfuscated AzuAntiCheat localization and stateful/side-effect variants stay on their original paths.
  • Added per-adapter fail-open isolation, mutation invalidation, exception-safe startup lifetime cleanup, cache-release on lobby arrival, and adapter installation/hit diagnostics.

1.1.11

  • Removed the experimental ObjectDB.Awake and ZNetScene.Awake Harmony wrapper batching after warm comparisons showed only a small end-to-end startup improvement.
  • Restored immediate Harmony wrapper rebuild semantics and removed every PatchFunctions.UpdateWrapper hook, flush path, statistic, and report entry.
  • Retains the localization cache, automatic config-write coalescing, profiling, and fixed 90-second connection-timeout protection.

1.1.10

  • Removed global PatchFunctions.UpdateWrapper timing, per-target dictionaries, physical-rebuild statistics, and the startup-only UpdateWrapper finalizer.
  • Retains exact ObjectDB.Awake and ZNetScene.Awake batching through a minimal prefix-only path; non-target requests now perform only fast target checks before continuing normally.
  • Keeps structural Harmony validation, first-rebuild materialization, exception-safe final flush, compatibility fallback, and concise exact-target flush diagnostics.

1.1.9

  • Added structurally verified, Chainloader-scoped Harmony wrapper batching for only the exact parameterless ObjectDB.Awake and ZNetScene.Awake targets.
  • Added PatchFunctions.UpdateWrapper request, physical rebuild, avoided rebuild, target, and final flush diagnostics to the startup report.
  • Keeps the first rebuild for each exact target, every other Harmony target, and every background-thread patch request on its original immediate path; adds no configuration option and removes the diagnostic hook when Chainloader finishes.

1.1.8

  • Removed the exact-version AzuAntiCheat same-launch prehash integration, its background worker, and its report section.
  • Restores AzuAntiCheat's original synchronous hash path while retaining normal plugin timing and the minimal 90-second AzuAntiCheat send-queue protection.

1.1.7

  • Removed the observation-only FastAssetBundleLoader hash diagnostic and both of its Harmony hooks after confirming that the loader and its cache are effective independently.
  • Keeps FastAssetBundleLoader behavior untouched and retains the AzuAntiCheat same-launch asynchronous prehash.

1.1.6

  • Removed the 1.1.5 per-callback FejdStartup.Awake instrumentation after its Harmony detours could trigger a native Mono crash immediately after BepInEx chainloader startup.
  • Retains the safe inclusive FejdStartup.Awake lifecycle timing and the 1.1.5 AzuAntiCheat prehash and FastAssetBundleLoader hash diagnostics.

1.1.5

  • Added an exact-version AzuAntiCheat 4.3.11 integration that starts same-launch per-plugin SHA-256 work on one below-normal background worker while BepInEx continues loading plugins.
  • Revalidates file identity before consuming a prehash and uses a fresh synchronous streaming hash on any missing, changed, or failed result; no persistent digest cache is trusted.
  • Added narrowly scoped per-mod Harmony callback attribution for FejdStartup.Awake, with preparation and runtime bookkeeping cost reported separately.
  • Added diagnostic timing for only FastAssetBundleLoader's original-source hash inside TryUseCachedBundle(Stream), excluding cache-output verification hashes.
  • Keeps all three additions behind the existing General.Enabled master switch with no new configuration options.

1.1.4

  • Removed the recent spawn-readiness, per-prefab ZDO, CreateObject, zone-loading hold, Jotunn source-hint, and minimap diagnostic hooks.
  • Retains the coarse Game.RequestRespawn to Game.SpawnPlayer lifecycle interval, normal/failure connection outcomes, major world-loading stages, and per-mod ObjectDB.Awake/ZNetScene.Awake attribution.
  • Keeps completed connection report formatting deferred until after SpawnPlayer returns.

1.1.3

  • Added Game.UpdateRespawn and FindSpawnPoint activation fallbacks so Unity string-based respawn invocation cannot leave spawn-readiness diagnostics empty.
  • Added final-target 3x3 ZDO attribution by prefab, including final known counts, a separate transient peak-missing backlog table with sampled first/last/clear observations, approximate inclusive CreateObject time, and registered-instance outcomes.
  • Adds best-effort Jotunn source metadata or clearly labeled component-presence hints without enabling Jotunn's startup-costly global ModQuery collection.
  • Added bounded SetLoadingInZone/UnsetLoadingInZone diagnostics, split into center-zone direct blockers and 3x3 instance-order candidates clipped to the final spawn attempt's relevant time windows, with the ordering start broadened to cover active-area sampling delay.
  • Keeps the new diagnostics observation-only and behind the existing single master switch, with no new configuration options.
  • Separately reports measured in-path diagnostic work and defers post-endpoint connection-report assembly through BepInEx's persistent main-thread queue until after SpawnPlayer returns, with a generation guard against mixing a newer session's detail.

1.1.2

  • Added observation-only spawn-readiness diagnostics for the interval between _RequestRespawn activation and SpawnPlayer, plus connection-wide minimap call timing.
  • Separately reports the built-in logout/custom-spawn gate, target-zone readiness, active-area readiness, and IsAreaReady completion.
  • Samples known 3x3 spawn-sector ZDO totals and uninstantiated valid objects periodically at no more than 1 Hz, plus a terminal readiness sample, without changing loading behavior.
  • Reports minimap cache hits, misses, and inclusive GenerateWorldMap call time relative to respawn activation so map regeneration can be distinguished from spawn-area loading.
  • Keeps the diagnostics always on with the existing master switch, buffers samples in memory without per-sample disk writes, and reports a lower bound for measured diagnostic work.

1.1.1

  • Replaced the per-feature settings with one General.Enabled master switch and automatically removes the retired settings from existing config files.
  • Replaced exhaustive connection compatibility analysis with a minimal fixed 90-second floor for vanilla ZRpc, Jotunn, and known ServerSync/AzuAntiCheat send queues.
  • Preserves timeout values already longer than 90 seconds and leaves fragment-cache lifetimes unchanged.
  • Removed experimental Harmony wrapper rebuild batching and connection-time fragment patching.
  • Added event-based connection outcomes that separately report normal connection time, first failure-decision time, and return-to-lobby/error-display time without per-frame polling.
  • Starts connection timing only after TransitionToMainScene accepts the transition, and distinguishes a benign lobby return from ServerSync/AzuAntiCheat failures that set their terminal status after Game.Logout.

1.1.0

  • Added safe localization CSV acceleration that replays captured AddWord sequences into Valheim's existing translation dictionary and keeps other mods' prefix/postfix callbacks active.
  • Added Chainloader-scoped automatic config-save coalescing without changing a plugin's SaveOnConfigSet policy or delaying explicit Save() calls.
  • Added opt-in Harmony wrapper rebuild batching. It remains disabled by default because mods that use a patch immediately after installing it can be incompatible.
  • Added a structurally verified connection-stability layer for vanilla ZRpc, Jotunn CustomRPC, embedded/standalone ServerSync copies, and obfuscated AzuAntiCheat queue waits.
  • Extended compatible fragment receive-cache lifetimes together with queue timeouts to reduce the risk of the original 60-second cache expiring during a slow fragmented transfer.
  • Added acceleration and stability diagnostics to both Start To Lobby and Lobby To World reports.
  • Added decompiled compatibility references and a detailed integration analysis for Jotunn 2.29.2, AzuAntiCheat 4.3.11, and the supplied ServerSync build.

1.0.1

  • Fixed dedicated-server joins not preparing deep lobby attribution, so client-side per-mod ObjectDB.Awake and ZNetScene.Awake timings are now recorded when connecting to a dedicated server.
  • Generalized the active lifecycle callback blocklist so attribution can be prepared safely from both JoinServer and local OnWorldStart paths.
  • Updated the Thunderstore package icon.

1.0.0

  • Initial public release of LoadTimeProfiler.
  • Supports client loading and dedicated server startup profiling.
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro