EasyHUD

v1.0.0·Updated 2026-09-17

[AI-generated] Network quality HUD: ping, connection quality, up/down bandwidth, player count, styled to match the Day & Time panel. Client-only, no server sync.

About this mod Machine translation

EasyHUD

AI generated statement: This module is written by the AI ​​agent (WorkBuddy) under the clear needs and itemized acceptance of the user;

Functional design, real-device testing and release decisions are all led by users.

A client-only module that displays network quality in real time on the HUD - no more pressing F2 to see a bunch of debugging information.

The panel is attached to the right left of the "Display Day & Time in HUD" panel.

The same horizontal line, the same height, the same font, the same size, the same color and the same background look like part of the same UI.

┌──────────────────────────┬──────────────────────────┐

│ Ping 42ms 99% ↓3.4 ↑0.8 KB/s P 3 │ Day 128 14:32 │

└──────────────────────────┴──────────────────────────┘

↑ This module (EasyHUD) ↑ Day/time panel

Function

| Item | Default | Description |

|---|---|---|

| Ping | On | Format Ping 42ms |

| Connection quality | On | Format 99%, the one of 99% / 98% in the original F2 |

| Upstream and downstream bandwidth | On | Format ↓3.4 ↑0.8 KB/s |

| Number of online players | On | Format P 3 (including host) |

| Low quality discoloration | On | Normally the same color as the day panel; Ping>120ms or quality 250ms or quality <50% turns red |

| Auto-hide for a single person | On | Do not display when you open the host by yourself and you are the only one (there is no network traffic, displaying 0 is meaningless) |

Each item can be turned off individually in the configuration. The refresh interval defaults to 0.5 seconds (network statistics themselves are sampled at low frequency, and refreshing too fast will only cause the numbers to jump randomly).

⚠️ Regarding "packet loss rate" - please read this paragraph first

Neither Valheim nor Steam exposes the "packet loss rate" number. I dug the link to the bottom:

ConnectPanel.Update ← Original F2 Panel

→ ZNet.GetNetStats(out localQuality, out remoteQuality, out ping, out outByteSec, out inByteSec)

→ ZSteamSocket.GetConnectionQuality(...)

→ Steamworks.SteamNetworkingSockets.GetConnectionRealTimeStatus(...)

→ SteamNetConnectionRealTimeStatus_t { m_nPing, m_flConnectionQualityLocal,

m_flConnectionQualityRemote,

m_flOut|InPacketsPerSec,

m_flOut|InBytesPerSec,... }

There is only "packet rate" in this structure, not "packet loss rate". The closest metric Steam gives is

m_flConnectionQualityLocal / Remote (connection quality from 0 to 1, which has integrated packet loss, delay, and jitter).

Therefore, this HUD uses connection quality % to reflect the quality of the network: as soon as packet loss or delay worsens, it will obviously drop.

These are also those two percentages shown on the original F2 panel. If you prefer to see digital latency fluctuations,

You can pay attention to the changes in Ping and Bandwidth.

(Theoretically there is another way: Steamworks.NET's GetDetailedConnectionStatus will return a human-readable text,

It contains a dropped count - but it is a human-readable string, the format changes with the Steam version, and it is only valid in the Steam backend.

It is too fragile to be made into a formal function and is not used in this module. )

How to achieve "unification of style" between location and style

It is not hard-coded coordinates, nor does it require you to copy the configuration:

  • After entering the game, this module will look for the DayTimePanel created by another module (hanging under Hud.m_rootObject).
  • Find and directly inherit its UI components: font, font size, font color, stroke color and offset, background sprite/color, and panel height.
  • The position is calculated based on its left edge: right edge of this panel = its left edge − Gap, y is exactly the same as it.

so:

  • If you change the font size/color/background of that module, the HUD will automatically change accordingly (restart the game after making changes).
  • When you turn on the "Display under minimap" of that module (move the panel below the minimap), the HUD will also be moved to the same row. …

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file. In multiplayer, the host and every client need the same mods installed.

Dependencies

Install these first, or the mod will not work:

denikson-BepInExPack_Valheim

File & checksum

Filename
EasyHUD-1.0.0.zip
File size
16.9 KiB