平滑服务器

创作者: Nosferatu
已更新:2026-09-07 10:22:32
801KB

关于此 MOD

《英灵神殿》专用服务器的网络与性能调优:发送频率、自适应单节点预算、异步存档、遥测。可选的客户端部分增加了 zstd 压缩和共享地图。

平滑服务器

为《英灵神殿》1.0版本积极维护。 为1.0.7发布日重建并随补丁持续更新;1.x版本模组正在开发中。漏洞与建议: GitHub 问题.

由……设计和构思 诺斯费拉图 从运营合作服务器的真实痛点出发。由Claude编写,由人类测试。

《英灵神殿》专用服务器的网络与性能调优—— 并且,从 0.3.0 开始,同一个 DLL 中还可包含一个可选的客户端部分.

服务器端才是这个模组的核心,而它仍然需要 零客户端安装: [常规] 强制客户端模组 默认为 假,因此原版玩家随时都能加入。在玩家机器上也安装同样的整合包,你还能额外获得数据包压缩、客户端发送预算以及全服共享地图。

安装中

服务器管理员 — 安装到 服务器的 个人资料(BepInEx/plugins/SmoothServer/以下是翻译结果: )。下方“服务器模块”下的所有内容都会立即生效;无需任何人安装任何东西。配置文件: 诺斯费拉图.平滑服务器.cfg 在服务器的 BepInEx/配置/.

玩家 仅当服务器也运行 SmoothServer 0.3.0+ 时,才安装到你自己的配置文件中。 [常规] 模式 是 自动:专用服务器负责服务器端,你的游戏负责客户端。你将获得压缩、客户端发送预算和共享地图;服务器拥有的设置由服务器推送给你。

该软件包包含六个DLL,而不是一个: SmoothServer.dll 加 ZstdSharp.dll, System.Memory.dll, System.Buffers.dll, System.Numerics.Vectors.dll 和 System.Runtime.CompilerServices.Unsafe.dll (zstd编解码器及其依赖项——Valheim或BepInEx均不附带)。模组管理器会处理这一点;手动安装者必须复制全部六个文件。

此模组替换的模组——请先卸载它们

卸载 被替换为 哪里
杰西 / 更佳网络 压缩 + Steam评测 + 发送队列守卫 服务器 和 客户端
我的天 / 服务器端地图 共享地图 服务器 和 客户端

两者都必须从 每 机器。如果BetterNetworking仍然已安装, 压缩 拒绝修补(失败(...) 在模块摘要中)以及SmoothServer的其余部分正常加载——它不会破坏你的服务器,只是不会进行压缩。SharedMap导入了一个现有的 <world>.mod.serversidemap.explored 首次启动时存档一次,这样就不会丢失任何探索进度。

服务器模块

每个模块都有其自身的 已启用 在配置部分切换。

  • 遥测 [遥测] — 周期性 FPS / 帧时间 / ZDO 速率日志行。无游戏性影响。
  • 帧率 [帧率] — 提高专用服务器的 Unity 帧率上限。在现代硬件上,60 是一个不错的默认值:大约占用一个 CPU 核心的 4 个百分点,换取一半的 tick 延迟。
  • 发送节奏 [发送节奏] —按固定间隔向每个对等端发送ZDO更新(发送赫兹,默认值为20),而非原版每帧轮询一个对等端的机制。随玩家数量扩展。
  • 发送预算 [发送预算] — ZDO 发送队列高水位标记和最小块大小,作为配置暴露: 高水位字节 默认为65536(原版为10240), 最小块字节数 到2048(与原版相同)。在自适应预算关闭时作为后备方案。
  • 创建预算 [创建预算] 每帧创建的对象数,作为配置项暴露(默认值与原版一致,即在调高之前相当于无操作)。
  • 对等遥测 [对等遥测] — 每个对等节点的延迟、吞吐量和 Steam 发送队列采样。无补丁;为 AdaptiveBudget 提供数据。
  • 自适应预算 [自适应预算] — 一个 每对等端 根据每个节点实测的带宽时延积来分配预算,经过钳制、EMA平滑处理,并在Steam的待处理字节数表明管道拥塞时进行退避。隔壁光纤玩家和卫星玩家不再共用同一个数值。
  • Steam评分 [SteamRates] — 提升 Steam 的 发送速率上限 (默认 1 MB/s)。 最小发送速率 故意保持原版:这是Steam自身带宽的下限 估算,提升它可以阻止拥塞控制器对弱连接进行退避。
  • 发送队列守卫 [发送队列守卫] — 在同伴的 Steam 发送队列积压时延迟而不丢弃,并且能在握手过程中可能出现的 Steamworks 抛出异常中存活下来。
  • 同步列表缓存 [同步列表缓存] — 缓存每个对等节点的扇区扫描结果于 创建同步列表 简而言之;每次发送时,筛选和排序仍会运行。
  • 虚拟定位服务器 [VPOServer] — ValheimPerformanceOptimizations 中服务器安全的部分(MIT): 磨损撕裂 支持缓存和更快的 释放附近僵尸 扫描。
  • 异步保存 异步保存 — 预分配存档克隆列表的大小。在包含 136 000 个 ZDO 的世界中测得,主线程自动存档会卡顿 67 毫秒 → 47 毫秒 和 78 毫秒 → 45 毫秒.
  • GC节流 [GcThrottle] — 速率限制 卸载未使用的资源 在空闲服务器上。
  • 所有权释放 [所有权释放] — 将ZDO所有权释放间隔从原版的2秒(默认0.5秒)缩短,使物体在玩家移动时更快易手。
  • 自测地图 [地图自检] — 加载时对共享映射编解码器进行无头单元测试;显示为 已应用PASS 在模块摘要中。
  • 优先通道 [PriorityLane] — 两端。 用优先队列保存这台机器的待发积压数据,而不是让它们堆积在 Steam 自己的缓冲区里,并且每次只交给 Steam 大约一个带宽延迟积的数据量,优先处理延迟敏感的流量。一次近战攻击不再需要等待几十 KB 的批量世界数据排在前面:残余延迟从 80–430 毫秒区间降到大约 25 毫秒。 未安装模组的客户端也能受益 — 仅发送 命令 变化,每个字节都保持原样。与SendQueueGuard和压缩功能共存;确保其安全性的排序规则(绝不让销毁操作越过其销毁的对象,绝不提升接收方尚未收到目标的消息,绝不跨越压缩功能的握手流程)在加载时已进行单元测试。
  • 统计日志 [统计日志] — 写 统计-YYYY-MM-DD.jsonl (帧率/帧时间、ZDO数量、每个对等端的网络/预算/压缩状态)每 间隔秒数 (默认10秒)以及 事件-YYYY-MM-DD.jsonl (加入/离开、存档停滞、GC 清扫、AdaptiveBudget 退避转换、SendQueueGuard 丢弃、配置重载)在发生时,以 BepInEx/config/smoothserver/stats/ 默认情况下。每日轮换,清除过去 保留天数 (默认30)。奔跑 工具/analyze.py 对照这些文件几天内的变化,生成一份Markdown报告——请参阅仓库的 工具/README.md.

客户端加的一半

  • 压缩 [压缩] — 两端使用BetterNetworking训练的字典,在Steam sockets上实现zstd压缩,并为每条消息添加显式帧标签,以及一个 SS_队长/准备就绪 能力握手,因此接收方始终知道消息是否被压缩。未安装该模组的对等方保持未压缩状态且无任何损失。真实ZDO流量上的典型自测比率: ~8% 原始尺寸的
  • 共享地图 [地图] — 两端全服共享地图探索与标记。存储经过位打包与压缩(1.7 KB 服务器端地图写入位置 4.2 MB 对于同一世界),地图大小从你的客户端读取而非硬编码,更新以1 Hz批量写入稀疏区块,而不是每个已探索像素一次RPC。合并走原版 小地图.探索,因此共享地形会烘焙到你自己的地图文件中,即使模块关闭也不会丢失任何内容。标记共享可按标记类型进行配置;死亡标记默认关闭。
  • 客户端网络 [客户端] — 仅客户端你的客户端的自身ZDO发送高水位标记(默认48 KB,原版10 KB)和Steam 最大发送速率在专用服务器上未激活。
  • 战斗归属 [战斗归属] — 仅客户端。 在专用服务器上,你正在砍的矿石、树木或藤蔓是在另一位玩家的电脑上模拟的,所以每次击打都要往返他们那边一次——在繁忙的洞穴里大约要半秒。这个模组会在你击中物体的瞬间夺取其所有权,之后你的伤害就会在同一帧内于你自己的机器上结算,击打消息根本不会经过网络传输。矿石、树木、藤蔓、可破坏物和建筑部件都适用;弓箭和范围伤害也包括在内。生物被刻意排除在外。结界、其他玩家的建筑、船只和推车都予以尊重。
  • 延迟探测 延迟检测 — 两端都只作诊断之用,不会对游戏产生任何改变。 服务器每5秒通过路由RPC向每位玩家发送一次ping,并报告该玩家的真实往返延迟、抖动、丢包率和帧率(全部基于服务器自身时钟测量,因此无论Steam报告什么都能正常工作)。在你的客户端上,它会计时 命中判定 ——从你碰到别人拥有的东西那一刻起,直到物主发回响应为止——并保留p50/p95/最大值直方图以及按物主划分的明细,还会统计你附近物体变更物主的频率。类型 延迟 在控制台中查看当前任一侧的摘要。

配置

一个文件, 诺斯费拉图.平滑服务器.cfg正在运行的服务器会实时接收编辑([通用] 热重载)—不重启。服务器拥有的设置会推送给运行该模组的客户端(ServerSync); [通用] 条目仅保存在本机。

依赖项

制作人员

  • zstd 字典与压缩思路:CW_Jesse 的 更好的网络连接 (MIT)。
  • VP服务器: 瓦尔海姆性能优化 (触发时,MIT)。
  • 配置同步:blaxxun-boop的 服务器同步 (MIT-0)。
  • 共享地图 是受Mydayyy启发而进行的净室重新实现。 服务器端地图 (MIT/Unlicense)。
  • 服务器权威所有权构想:ddormer的 服务器端模拟 (无已发布许可证——仅为创意,未采用任何代码)。

来源与问题

https://github.com/MJensen01/SmoothServer — MIT 许可证。

Valheim: 英灵神殿 的热门 MOD

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

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