简易HUD

创作者: s6652289
已更新:2026-09-17 14:59:05
16KB

关于此 MOD

[AI生成] 网络质量HUD:显示延迟、连接质量、上行/下行带宽、玩家数量,风格与日期和时间面板保持一致。仅客户端生效,无需服务器同步。

简易HUD

AI生成声明:本模组由 AI 智能体(WorkBuddy)在用户的明确需求与逐项验收下编写; 功能设计、真机测试与发布决定均由用户主导。

在 HUD 上实时显示网络质量的纯客户端模组 —— 不用再按 F2 去看那一大堆调试信息。

面板贴在「在HUD中显示日期和时间」面板的正左侧,同一水平线、同一高度、同字体同字号同颜色同背景,看起来就像同一套界面的一部分。

                              ┌──────────────────────────┬──────────────────────────┐
│ 延迟 42毫秒 99% ↓3.4 ↑0.8 KB/s P 3 │ 第 128 天 14:32 │
└──────────────────────────┴──────────────────────────┘
↑ 本模组(EasyHUD) ↑ 天数/时间面板

功能

项 默认 说明
延迟 开 格式 延迟 42ms
连接质量 开 格式 99%,在原版 F2 里 99% / 98% 的那一项
上下行带宽 开 格式 ↓3.4 ↑0.8 KB/s
在线玩家数 开 格式 P 3(含主机)
低质量变色 开 正常时与天数面板同色;Ping>120ms 或质量<80% 变黄;Ping>250ms 或质量<50% 变红
单人自动隐藏 开 单人自己开主机时不显示(无网络流量,显示0无意义)

每一项都能在配置里单独关掉。刷新间隔默认 0.5 秒(网络统计本身是低频采样的,刷太快只会让数字乱跳)。

⚠️ 关于「丢包率」—— 请先看这一段

Valheim 和 Steam 都没有暴露“丢包率”这个数字。 我把链路挖到了底:

连接面板.更新 ← 原版 F2 面板 → ZNet.获取网络状态(输出本地质量, 输出远程质量, 输出延迟, 输出发送字节每秒, 输出接收字节每秒) → ZSteamSocket.获取连接质量(...) → Steamworks.Steam网络套接字.获取连接实时状态(...) → Steam网络连接实时状态_t { 延迟毫秒数, 本地连接质量, 远程连接质量, 发送|接收数据包每秒, 发送|接收字节每秒, ... }

这个结构体里只有“包速率”,没有“丢包率”Steam 给出的最接近的指标就是 本地连接质量 / 远程连接质量(0~1 的连接质量,已经综合了丢包、延迟、抖动)。

所以本 HUD 用 连接质量 % 来反映网络质量的好坏:丢包或延迟一恶化,它就会明显掉下来, 这也是原版 F2 面板显示的那两个百分比。若你更希望看到数字化的延迟波动, 可以关注 Ping 与带宽两项的变化。

(理论上还有一条路:Steamworks.NET 的 获取详细连接状态 会返回一段人类可读的文本,里面带 dropped 计数——但它是给人看的字符串、格式随 Steam 版本变、且只在 Steam 后端有效,做成正式功能太脆弱,本模组没有采用。)

位置与“风格统一”是怎么做到的

不是硬编码坐标,也不要求你去抄一遍配置:

  1. 进游戏后,本模组会去找另一个模组创建的 白天时间面板(挂在 Hud.m_rootObject 下)。
  2. 找到后直接继承它的 UI 组件:字体、字号、字色、描边颜色与偏移、背景 sprite / 颜色、面板高度。
  3. 按它的位置左边缘计算:本面板右边缘 = 它的左边缘 − Gap,y 与它完全相同。

所以:

  • 你改那个模组的字号 / 颜色 / 背景,本 HUD 会自动跟着变(改完重启游戏)。
  • 你把那个模组的「Display under minimap」打开(面板挪到小地图下方),本 HUD 也跟着挪到同一行。
  • 卸载那个模组也没关系:本 HUD 会退回 [4 - 回退样式] 里的内置样式,默认值就是那个模组的默认外观(AveriaSansLibre-Bold / 16 / 白色 / 背景 00000064 / 高30)。

面板宽度默认按文字自动收缩;想让两个面板一样宽,把 面板宽度 填成 200 即可。

配置

BepInEx/配置/easyhud.客户端.仅限.cfg

分区 键 默认 说明
1 - 常规 已启用 真 总开关
1 - 常规 单人时隐藏 真 单人时隐藏整个面板
1 - 常规 更新间隔 0.5 刷新间隔(秒),推荐 0.25~1.0
1 - 通用 比赛日时间风格 真 自动继承天数面板的样式
1 - 通用 面板宽度 0 0 = 按文字自动;填 200 = 与天数面板同宽
1 - 通用 间隙 0 与天数面板的间距(像素)
1 - 通用 主机上规范化 真 自己当主机时显示平均值请提供需要翻译的文本内容。
2 - 内容 显示延迟 / 显示画质 / 显示带宽 / 显示玩家 真 逐项开关
2 - 内容 下箭头 / 上箭头 ↓ / ↑ 上下行箭头;若字体显示成方块就改成 v / ^
3 - 警告色 已启用 真 低品质变色
3 - 警告色 警告延迟毫秒 / 高延迟毫秒 120 / 250 Ping 阈值
3 - 警告色 警告质量百分比 / 低品质百分比 80 / 50 质量阈值
3 - 警告色 警告颜色 / 坏颜色 FFFFA0FF / FF6B6BFF 黄 / 红
4 - 备用样式 字体大小 / 字体名称 / 字体颜色 16 / AveriaSansLibre-Bold / FFFFFFCA 找不到天数面板时用
4 - 备选风格 轮廓启用 / 轮廓颜色 / 背景颜色 真 / 000000FF / 00000064 同上

关于 主机上标准化

游戏底层的 获取网络状态 在主机模式下是把所有客户端的值累加的 (原版 F2 也这样,所以主机开 3 人时 F2 会显示 300% / 1500毫秒 这种数字,其实每个人都不差)。

  • 真(默认):除以有效连接数,显示平均值,更容易看懂。
  • 假:与 F2 面板完全一致的累加值。

自己是客户端连别人时,这个开关没有任何影响。

为什么联机安全

  • 只打了个补丁 唤醒界面(只是为了挂 UI),不碰任何网络/游戏逻辑。
  • 无 Jotunn 依赖、无 网络兼容性 声明、无内嵌 ServerSync / ConditionalConfigSync。
  • 依赖只有:mscorlib / assembly_valheim / BepInEx / 0Harmony / UnityEngine.CoreModule / UnityEngine.UI / UnityEngine.TextRenderingModule。
  • 纯读统计 + 本地画 UI,主机和队友不装也照样玩,不会让你连不上任何主机。

安装

  • r2modman:在线 → 从文件安装 → 选 EasyHUD-1.0.0.zip
  • 手动把 EasyHUD.dll 放进 BepInEx/plugins/

排错

进游戏后看 BepInEx/LogOutput.log,应出现:

[Info : EasyHUD] 已挂载补丁类:HudAwakePatch [Info : EasyHUD] Hud.Awake() prefix=0 postfix=1 OK [Info : EasyHUD] Harmony 补丁挂载完成:1/1 成功。 [Info : EasyHUD] 网络面板已创建:父节点 Hud.m_rootObject,初始位置 (…),字体 AveriaSansLibre-Bold。 [Info : EasyHUD] 已找到「DayTimePanel」面板并贴到其左侧:它的位置 (…) / 尺寸 (…) → 本面板 y=-25,样式来源=继承它的 UI 组件
现象 原因 / 处理
完全看不到面板 单人游戏时默认隐藏 → 进多人或把 单人模式时隐藏 改成 false
面板位置不对 / 没贴在一起 日志里搜「已找到「DayTimePanel」」;若没有这行,说明没找到那个面板(它没装或被改名),此时本 HUD 用回退坐标
文字显示成方块 换 字体名称([4 - 备用样式]),或把 下方向键 / 上箭头 换成 v / ^
Ping 一直是 0 该数据来自 Steam 的实时连接状态,只在真正联机时才有值;另外主机模式请见 主机端规范化

Valheim: 英灵神殿 的热门 MOD

探索适用于 Valheim: 英灵神殿 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

使用 Xmod 解锁 Valheim: 英灵神殿 的全部潜力 — 今天就探索这些顶级 MOD!