FTB区块扩展

FTB区块扩展

一个FTB Chunks的客户端插件,用于限制地图缩小范围以防止崩溃,在大地图上显示缩放级别指示器,并提高地图任务吞吐量以加快区块加载速度。

一个轻量级的、客户端侧的 FTB Chunks 附加模组。它允许你将世界地图拉远到 FTB Chunks 通常限制的范围之外 —— 而且更重要的是,它让这变得真正可用,而不是把你的帧率变成幻灯片。

可在任何服务器上运行。服务端无需安装任何东西。


原版缩放限制存在的原因

FTB Chunks 会根据可用内存来限制你能拉远的距离。它加载的每个地图区域大约需要 4 MiB 的堆内存,外加一个 512×512 的原生图像和一个 512×512 的 GPU 纹理。在它允许你达到最远的缩放级别之前,它需要大约 64 倍于此的空闲堆内存 —— 这在大多数整合包中永远不会发生,所以你只能停留在中等缩放级别。

仅仅移除这个限制是不够的。完全拉远视角会让地图在单帧内触达所有已探索区域:一次分配数百兆字节,造成数秒的卡顿,并且之后堆内存会一直处于占用状态。这就是为什么“解锁缩放”模组在你关闭地图后很久还会导致游戏卡顿。

这个附加模组替换了限制以及其背后的行为。


功能特性

扩展拉远距离

一个固定的、可配置的最小缩放级别取代了 FTB Chunks 的内存启发式算法,因此你能拉远的距离不再取决于你打开地图时恰好有多少空闲堆内存。默认值是 FTB Chunks 支持的最远级别。

更喜欢原始行为?关闭 overrideZoomLimit 后,原始启发式算法就会重新接管 —— 无需卸载模组。

平滑区域加载

新区域会每 tick 加载几个,而不是一次性全部加载,因此完全拉远视角时地图会在一两秒内逐步填充,而不是在分配内存时冻结游戏。只有大地图会受限;小地图不受影响。

关闭地图后无卡顿

当大地图关闭时,FTB Chunks 会在一个 tick 内释放所有多余区域 —— 每个区域都要关闭一个原生图像并删除一个 GPU 纹理。在完全拉远后,这会是单帧内数百个操作。此附加模组会将清理工作分散到几个 tick 中,消除了按下 ESC 后立即出现的卡顿以及随之而来的垃圾回收抖动。

内存预算

对常驻区域数量设置一个明确的上限,默认约为最大堆内存的 25%(在 8 GB 分配下约为 512 个区域)。超出预算的区域将保持空白,而不是将堆内存推入持续的垃圾回收状态。如果你更想看到一切,可以调高这个值。

更快的地图填充

FTB Chunks 默认仅每 4 个 tick 运行一次地图任务队列。当大地图打开时,此附加模组会在严格的时间预算(默认 2 毫秒)内每个 tick 清空队列,因此区块填充明显更快,且不会让队列消耗变成自身的卡顿。

地图叠加层

大地图右上角显示:

  • 缩放级别,相对于默认视图 —— 默认 1x,放大 2x / 4x,缩小 1/2x1/256x
  • 常驻区域数量,对比你的预算,当预算满时会变黄并显示 (limit) —— 这样就能清楚地看到为什么远处的图块是空白的。

大地图上显示所有路径点

可选择在大地图上显示所有路径点,无论距离多远。小地图和世界内路径点信标保持其正常规则。


配置

config/ftb_chunks_additions-client.toml

选项 默认值 作用
overrideZoomLimit true 替换 FTB Chunks 基于内存的缩放限制
minZoom 1 最小缩放级别;1 是 FTB Chunks 支持的最远距离
maxResidentRegions 0 区域预算;0 = 根据最大堆内存自动推导
regionLoadsPerTick 4 每 tick 地图可开始加载的新区域数量
smoothRegionRelease true 将地图关闭清理分散到多个 tick 中
regionReleasesPerTick 8 清理期间每 tick 释放的区域数量
fastTaskQueue true 每 tick 清空地图任务队列
taskQueueBudgetMicros 2000 该清空操作的时间预算,单位微秒
showOverlay true 显示缩放/区域叠加层
alwaysShowWaypointsOnLargeMap true 忽略大地图上的距离限制

支持与起源

Werewolves vs Vampires 整合包开发。