Hermod
Compresses about two thirds of a dedicated server's outgoing traffic away, makes the ZDO send budget adjustable, and measures where the server's time actually goes. Compression needs the mod on each player too.Changelog
0.1.5
Fixed
- Commands that change a setting now say the change is live only and name
hermod_save. Setting the send budget on a running server and losing it to the next restart, with nothing having warned you, is what prompted this hermod_queueno longer says "no restart needed", which was true about when the change applies and read as "this is saved"
Changed
- The portal ghost detector reports stale records as information rather than warning about a
bug. It was firing on players simply walking away from each other, over a thousand times a
session, claiming an object was left standing when nothing was. The count stays in the
ghostscolumn
0.1.4
Diagnostics only. Nothing about how the server runs has changed.
Added
- Slow frames now say whether the garbage collector was running during them. New
gc_frames,slow_gc,slow_unexplainedandgc_stall_mscolumns, and the worst-frame list in the report tags themgcinstead of leaving the cause blank - A breakdown of what is being destroyed, by prefab, in
dead_createdanddead_top. The session log already counted dead objects; this says what they were
Notes
gc_stall_msis milliseconds out of the 60,000 in a minute, so it reads directly as how much of the server the collector tookslow_unexplainedcounts slow frames with no collection and nothing Hermod instruments running. If that is the large number, the time is going somewhere this mod cannot see: another mod's update loop, or the engine itself- Valheim's Mono runs a non-generational collector, so
gc0,gc1andgc2are the same number printed three times and every collection walks the whole heap. Do not read them as a generational breakdown
0.1.3
Added
- A portal ghost detector. It reports anyone left standing at a portal they walked through,
by name, and counts it in a
ghostscolumn. It does not fix them fixZdoExtraDataLeak, off by default, for a leak in the game itself. Objects near a player who has not received them yet are mistaken for save copies and never freed- A log line at startup saying which backend the server opened on
Changed
- Compression needs 0.1.3 on both ends. A player on 0.1.2 is not broken, they just exchange uncompressed packets
Notes
- A
ghostscolumn that stays at zero means your server does not have the problem. The log line also says how many players it is watching, so a zero is not the same as not looking - Watch
extradata_ratiobefore and after turning the leak fix on. It will not fall, it should stop climbing - Compression and the Steam settings do nothing on a crossplay server, because they live on a Steam socket a PlayFab server never creates. That is what the backend line is for
0.1.2
First release.
Added
- Packet compression. 8.6 MB of outgoing traffic became 3.0 MB on a real server, with no measurable change to frame time or CPU. Needs the mod on both ends
- An adjustable limit on world data in flight per player. The game's own limit tightens with distance, so it bites hardest on the players furthest away
- A budget for time spent building terrain, so several zones landing in one tick cannot stall the server
- Nagle batching off and the Steam send rate ceiling raised, only ever in the direction that helps
- A per-minute record to CSV: frame times, CPU, memory, object counts, per-player ping, bandwidth and update rate, compression, terrain generation and saves
- An update rewrite that sends to every player on a timer rather than one per frame. Off by default
hermod_panic, which reverts every change in one command with players still connected
Notes
- The frame rate is deliberately left uncapped. A Valheim server sends updates to one player per frame, so capping it would cut every player's update rate. A cap that would push delivery below ten a second is refused
- Commands are typed from a client that has the mod, because a Valheim dedicated server has no console of its own
- Crossplay servers get the measurement but not compression or the Steam settings
- Run one networking mod, not two. If another is detected this one stands down from everything that overlaps and says so in the log
