Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
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.
By GBV
CHANGELOG
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