You are viewing a potentially older version of this package. View all versions.
Botaniclas-TooManyLags_Server_Side-0.13.2 icon

TooManyLags Server Side

Less connection lag, no client mod. Ownership optimisation for Dedicated Simulation: local nearby interactions, server-owned shared fields and smarter Hostile Mobs. Beta.

Date uploaded 2 weeks ago
Version 0.13.2
Download link Botaniclas-TooManyLags_Server_Side-0.13.2.zip
Downloads 79
Dependency string Botaniclas-TooManyLags_Server_Side-0.13.2

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2351 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2351
Sarkastic_gg-Dedicated_Simulation-1.18.0 icon
Sarkastic_gg-Dedicated_Simulation

Server-side BepInEx plugin for Valheim dedicated servers: the server simulates the world itself. Character guard, item ledger, portal lock, fire control, location icons, network limits. Fork of Serverside Simulations by ddormer; clients stay vanilla.

Preferred version: 1.18.0

README

TooManyLags - Server Side

Less connection lag, no client mod. A multiplayer ownership optimisation addon. Nearby supported interactions run on your own client; shared fields use the server. Hostile Mobs use grid and forward-cone ownership to bring their simulation closer to the action.

Currently built on Sarkastic.gg Dedicated Simulation. Compatibility with as many server-side simulation mods as possible is planned. Please suggest the mods you'd like supported through GitHub Issues to help guide future integrations. Thank you!

Beta: real-world testing is limited. Server-only attack and handoff observations have limits; this edition does not promise the same safeguards or features as the client-assisted addon.

Choose your version

Your setup Recommended edition and mode
Dedicated server; players should need no client mod This mod with Sarkastic.gg Dedicated Simulation. Beta.
Dedicated server, strong CPU; client mods are welcome TooManyLags - FiresGhettoNetworking Addon with Server-Side Simulation. Most-tested option.
Dedicated server, weak CPU, with FiresGhettoNetworking The FiresGhettoNetworking Addon with NoServerSideSimulation=true.
Dedicated server, weak CPU, without a simulation backend TooManyLags - Standalone.
Locally hosted multiplayer TooManyLags - Standalone.

Quick install

  1. Install BepInEx, Sarkastic.gg Dedicated Simulation and this mod on the dedicated server only. Players need neither addon nor simulation mod.
  2. For manual installation, put TooManyLagsServerSide.dll in BepInEx/plugins/TooManyLagsServerSide/, alongside the separately installed dependency.
  3. Start the server. Begin with the defaults; edit BepInEx/config/botanic.toomanylags.dedicatedaddon.cfg and restart when changing settings.

Server-Side Simulation needs server CPU and RAM. This addon shares some work with nearby clients; it is not a mode for running without server simulation. Do not combine it with FiresGhettoNetworking or another TooManyLags edition.

See the grid concept

White objects belong to the server; purple objects belong to a player. Recorded with the FiresGhettoNetworking Addon and the optional BotanicOwnerDebug overlay. Server Side uses character direction and a different default footprint; these recordings illustrate the ownership concept.

Ownership from above

Ownership from above

Ownership while moving

Ownership while moving

Example settings

White means the server; colours identify players. These animations use Server Side's actual default grid: full rear 3x3, three forward cells, yellow cells off and character direction. Fast movement makes the forward row immediate. Both retention modes use the same footprint and player routes.

Default: return on exit — CPU: mostly server Retain ownership — CPU: shared
KeepOwnershipOnCellExit=false KeepOwnershipOnCellExit=true
Server-default ownership with returns: vacated cells return to the server; nearby players own their current work areas. Server-default ownership with retention: players leave ownership trails; unvisited and shared cells stay server-owned.

Click a preview for the full-size animation. CPU notes refer to simulation of managed objects. Idle, ready objects are illustrated; loading and active-use safeguards can delay real handoffs.

Configuration

Use the Thunderstore Wiki for configuration, supported interactions and compatibility. All settings are server-side and require a server restart. Vanilla clients need no configuration.

For an optional solo combat ownership stress test, see Solo combat handoff test on the Configuration Wiki page. It defaults off, runs on one selected mob and keeps normal safeguards active.

How it works and what to expect

Vanilla can let a distant player simulate objects you are trying to use. This addon prepares supported objects through small nearby fields: exclusive fields select their player, overlapping fields select the server, and vacant fields return to the server by default. Public chests, boats, idle carts, harvestables, loose drops and idle tamed animals have their own native-use rules.

Hostile Mobs follow exclusive player fields. In shared fields, one eligible player in the mob's forward cone takes ownership; zero or multiple players select the server by default. Normal cone range is 8 metres, bosses 10 metres. Observed attacks delay transfers; the cone does not read or change the actual attack target. An optional ability forecast adds a conservative check for possible follow-up attacks before player-owned mobs change owner; combat can retain their owner longer.

The goal is local responsiveness wherever supported ownership can be prepared in time. Shared/server-owned objects still depend on your connection, and loading, protected use or remote attack observations can delay a handoff. Signs, portal editing, deferred actions and unsupported modded controls retain their native/dependency handling. This edition has no client-camera data or PUP collider guards.

Report bugs and ideas

Real-world testing is still limited. Please share bugs and ideas through GitHub Issues. Include Server Side and the version; the Wiki explains how to isolate a reproducible issue.

CHANGELOG

Changelog

0.13.2

- Prioritises red grid handoffs before forward and outer fields, with vacated-field returns last. All due jobs still run in the same pass; existing handoff safeguards remain active.
- Reduces repeated field calculations when several objects share a cell, without changing transition timers.

0.13.1

- Fixes Hostile Mobs waiting for their first attack before changing owner again after a completed guarded handoff. The previously observed idle handoff is retained while chasing; new attacks and external owner revisions invalidate it. Existing attack, loop, forecast and readiness safeguards remain active.

0.13.0 — local beta

- Adds a disabled-by-default solo combat test: one nearby Hostile Mob alternates guarded ownership requests between the only player and server. Requests keep their direction until completed; death, departure, another player or a five-minute limit stops the test. Server logs distinguish requests, completed handoffs and forecast waits.
- Adds an optional attack forecast for player-owned Hostile Mob handoffs. Observed cooldowns are shortened by 100 ms plus cached round-trip latency; ready attacks use 5 degrees extra per side and 0.5 metres extra reach. Existing attack guards remain; blocked predictions wait for relevant events instead of repeating geometry and can retain ownership longer during combat.
- Requires Sarkastic.gg Dedicated Simulation 1.18.0 or newer, now declared as a package dependency. Only the dedicated server needs this addon; clients remain vanilla.

0.10.1 — local prototype

- Shared Hostile Mob fields now select the server when multiple eligible players are in the forward cone. ServerOwnedWhenMultiplePlayersInMobCone defaults to true; false restores nearest-player selection.
- Adds BossMobConeRangeMeters, default 10 metres, using Valheim's native boss flag. Other Hostile Mobs retain their separate 8-metre default. Existing attack guards apply to both.

0.10.0 — local prototype

- Adds Hostile Mobs to the grid: solo fields select their player; overlapping fields select the nearest living player in the mob's forward 90-degree cone, or the server. Cone range defaults to 8 metres and is configurable; the category can be disabled separately.
- Waits for attack completion before mob transfers, protecting charging, stagger and observed immediate follow-up attacks. Completed handoffs send ownership directly to both involved players. Friendly summons and existing tamed-animal safeguards remain unchanged.

0.9.0 — local prototype

- Adds idle native carts to the ownership grid, with native cargo and pulling checks before automatic handoffs.
- Protects remote hitch requests before attachment completes; attachment, native refusal or leaving the footprint releases that request protection. Carts can be disabled separately.

0.8.0 — local prototype

- Adds native boats to the ownership grid: solo nearby players own them; overlapping fields use the server, including while steering.
- Protects cargo with native inventory checks and keeps steering requests working across handoffs. Blocked shared-boat takeovers retry on the existing boat timer; the Ships category can restore normal backend ownership.

0.7.1 — local prototype

- Fixes loose drops permanently leaving the ownership grid after player assignment or a failed pickup attempt.
- Resumes grid handoffs after the owner/requester leaves, including teleport or disconnect, while retaining nearby pickup priority and configured exit retention.

0.7.0 — local prototype

- Adds automatic grid ownership for public stationary chests, including nearby-player acquisition without opening them.
- Keeps native open-inventory checks when taking a connected player's chest and routes stale opening requests to the current owner.

0.6.3 — local prototype

- Fixes the entire grid stopping on dedicated Steam servers because ping measurement entered the Steam client API.
- Keeps the grid running when connection telemetry is unavailable, caches failed measurements and preserves existing protected handoff rules.

0.6.2 — local diagnostic prototype

- Adds bounded server grid status reports and a read-only server console command to locate runtime ownership failures.
- Fixes supported public chests with a matching native network-root override being incorrectly excluded.

0.6.1 — local prototype

- Fixes startup incorrectly rejecting Dedicated Simulation's active Core patch and disabling the entire grid.
- Correctly recognizes the backend's separate FireControl feature, preserving its default fire ownership policy.

0.6.0 — local prototype

- Adds server returns for public stationary chests: overlapping fields use native open-inventory protection; empty fields return directly.
- Keeps real opening and player ownership grants native, without inventory polling or automatic retries after refusal.

0.5.0 — local prototype

- Automatically expands directional coverage for poor connections, with an adjustable ping threshold and hysteresis.
- Adds one-second ownership protection after observed refilling; repeated inserts refresh it, while consumption and cooking do not.
- Covers the native shield generator fuel and attack requests during ownership changes.
- Retires remaining field state after the last player disconnects.

0.4.0 — local prototype

- Adds dynamic grid ownership for idle tamed animals, preserving native riding, following, combat and transport ownership.
- Adds early nearby-player ownership for loose items and fish while keeping native pickup and fishing priority; client-owned pickups are never forcibly reclaimed by the grid.
- Adds optional grid sharing for static building pieces; their default remains server ownership.
- Repairs settled ownership decisions after external owner changes, without periodically scanning objects or overriding native zero-owner releases.

0.3.1 — local prototype

- Adds an option to let the grid manage eligible FireControl fireplaces without competing server takeovers; the native backend policy remains the default.

0.3.0 — local prototype

- Defaults to server simulation outside player fields, with ownership retention disabled.
- Keeps the rear red cells in both retention modes and makes yellow outer cells optional, disabled by default.
- Makes the orange forward row immediate during fast movement, with separate activation and release speeds to prevent jitter.
- Preserves the shared-field server cooldown during movement and direction changes.

0.2.0 — local prototype

- Adds native harvesting, collectors, immediate refill controls, feasts, map tables and archery targets to the ownership grid.
- Keeps purely local controls such as seats and crafting menus outside the grid, with a server default.
- Delays supported player-to-server takeovers briefly; incoming source-object updates cancel that takeover and retain local ownership.
- Sends current object state before forwarding a stale owner request. Completed pickups are not replayed.
- Keeps signs, portal editing, inventories, vehicles and creatures on their native ownership paths.

0.1.0 — local prototype

- Adds an experimental server-only character-directed ownership grid for native simple stationary interactions, using Sarkastic.gg Dedicated Simulation for shared fields and world simulation.
- Preserves native inventory, refill, text-entry, vehicle and creature ownership paths; unloaded objects and inactive worlds do not retain a growing cell cache.