
区域垃圾回收节流器
一种面向世界流式加载与区块边界性能的实验性方法
查看大图如果你在探索新区域或跨越区域边界时遇到突然掉帧或短暂卡顿,[b]Zone GC Throttler[/b] 提供了一种针对性优化方案,帮助平滑这些过渡。该模组以最高效率为核心构建,修改游戏在加载新区域时分配 CPU 时间进行内存管理的方式,旨在减少流式加载尖峰,同时不危及稳定性或长期性能。
🔍 工作假设:我们要解决的问题 Valheim 将其世界地图划分为 64x64 米的区域网格。当你跨越区块边界时——尤其是在冲刺或航行时以较高速度——引擎会立即加载并实例化各种环境资产(树木、岩石、植被和生成器)。 这种临时数据的突然涌入会对 Unity 的 Mono 堆内存造成即时压力。在原版游戏中,垃圾回收器可能会在场景尝试初始化的同一毫秒触发内存清理扫描。我们认为,加载资产与在同一线程上清理内存之间的这种冲突是区块边界卡顿的主要原因,即使在性能足够的硬件上也是如此。
🛠️ 我们的方案:连续涓流时间片渐变 我们不会完全禁用垃圾回收器——这可能导致严重的内存膨胀和内存溢出崩溃——而是让它在关键加载窗口期间保持永久活跃,同时动态压制其 CPU 时间预算。 当你跨越区域边界时,模组会引导引擎经历一个平滑的两阶段生命周期:
📦 1. 资产生成护盾(前 20 帧) 在你跨过 64 米区域网格边界的精确帧,模组会暂时将垃圾回收器的 CPU 时间配额压低至极小的 [code]10,000ns[/code][b](0.01 毫秒)[/b],持续约 20 帧(约 0.3 秒)。 [list] [][b]目标:[/b] 通过在初始预制体生成爆发期间基本静默内存回收,CPU 可以优先将资源用于绘制新景观。[/] [/list] 🌊 2. 线性加速阶段(接下来 90 帧) 一旦初始加载尖峰过去,模组不会立即将完全控制权交还默认设置。相反,它会在接下来的 1.5 秒内使用[b]平缓的线性加速渐变[/b]逐渐提升垃圾回收器的时间配额(从 [code]0.01ms[/code]平滑上升至用户配置的 [code]2.0ms[/code]上限)。 [list] [][b]目标:[/b] 这允许累积的内存碎片在后台以极小、可控的比例被处理,使工作量远低于标准帧渲染预算,以防止延迟的“离合器掉落”式卡顿。[/] [/list] 🌿 3. 回归基线 一旦 1.5 秒倒计时结束,控制权会平滑交还 Unity 的原生后台设置(允许标准的 3ms 后台清理过程),让系统正常运行,直到到达下一个区块边界。
⚙️ 技术设计与优化蓝图 由于我们希望此工具尽可能轻量,它构建时遵循多项严格约束,以确保自身不会引入额外开销: [list] [][b]低开销变量管理:[/b] 每个内部计时器、变量跟踪器和网格边界计算都映射到运行于本地线程执行栈寄存器上的原始 32 位有符号整数,以避免自身造成内存卡顿。[/] [][b]标量数学调整:[/b] 更新循环内的高频数学运算已替换为预先计算的倒数标量乘数,将计算量减少至单次 CPU 时钟周期。[/] [][b]无引用类型隔离:[/b] 完全使用缓存的反射令牌和运行时元数据解析( [code]Enum.ToObject[/code])构建。二进制文件与私有游戏字段零直接链接,最大限度降低模组在官方游戏更新期间失效的风险。[/] [][b]安全探索设计:[/b] 由于时间片限制会在 1.5 秒后自动过期,堆内存在稳定游戏过程中有机释放,保留游戏对长期 RAM 膨胀的自然防御。[/] [/list]
⚙️ 配置调整( [code]ninefinger.valheim.zonegcthrottler.cfg[/code]) 首次启动游戏时,会在你的 [code]BepInEx/config[/code]文件夹中生成一个配置文件,允许你微调引擎变量以匹配你的硬件性能特征:
ini [code][General]
如果为 true,则使用自动、非破坏性的动态时间片渐变来消除过渡卡顿。
EnableAdaptiveTrickle = true
[Timers]
在初始区块加载期间(约 0.3 秒游戏时间)抑制内存操作的帧数。
AbsoluteFreezeFrames = 20
逐渐加速内存清理过程的帧数(正好 1.5 秒游戏时间)。
TricklePhaseFrames = 90
[Performance]
当涓流阶段达到峰值速度时,CPU 允许用于垃圾排序的最大毫秒数。
MaxTrickleSliceMs = 2[/code]使用代码时请谨慎。
[b]安装说明[/b] 将 ZoneGcThrottler.dll 直接放入你的 Valheim\BepInEx\plugins\ 文件夹
[b]我的模组:[/b]
[url=https://www.nexusmods.com/valheim/mods/4154]Auto Refuel Engine [/url][url=https://www.nexusmods.com/valheim/mods/4160?tab=description]Auto Ballista Reload[/url] [url=https://www.nexusmods.com/valheim/mods/4156?tab=description]Deep Storage Crafting[/url] [url=https://www.nexusmods.com/valheim/mods/4025]Zone GC Throttler[/url] [url=https://www.nexusmods.com/valheim/mods/3988]Auto-Save Manager[/url] [url=https://www.nexusmods.com/valheim/mods/4016]Recipe Search Optimizer[/url] [url=https://www.nexusmods.com/valheim/mods/3996]Construction Drone Master[/url] [url=https://www.nexusmods.com/valheim/mods/3987?tab=description]Open World Congestion Governor[/url] [url=https://www.nexusmods.com/valheim/mods/3705]Network Stream Widener[/url] [url=https://www.nexusmods.com/valheim/mods/3699]Base Virtual Proxy Optimizer[/url] [url=https://www.nexusmods.com/valheim/mods/3701]Particle Pacing Limiter[/url] [url=https://www.nexusmods.com/valheim/mods/4161]Immersive Weather and Acoustics[/url] [url=https://www.nexusmods.com/valheim/mods/3694]Terrain Loading Priority Fix[/url] [url=https://www.nexusmods.com/valheim/mods/3692]Performance Booster[/url] [url=https://www.nexusmods.com/valheim/mods/3690]Auto Repair Fix[/url] [url=https://www.nexusmods.com/valheim/mods/3680]Crosshair Hitbox Fix[/url] [url=https://www.nexusmods.com/valheim/mods/3723]Network Culling Optimizer[/url] [url=https://www.nexusmods.com/valheim/mods/3722]True Axis Build Rotator[/url] [url=https://www.nexusmods.com/valheim/mods/3816]First Person Perspective[/url] [url=https://www.nexusmods.com/valheim/mods/4037]Wolves Can Jump[/url] [url=https://www.nexusmods.com/valheim/mods/4283]Server Spawn Data Governor [/url][url=https://www.nexusmods.com/valheim/mods/4291?tab=description]Spear Tracker[/url]
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。