TrailKeeper - 探索区域地图叠加

TrailKeeper - 探索区域地图叠加

将你在游戏世界地图上已经覆盖过的地面进行阴影处理,这样尚未搜索过的地面就会保持清晰——而那就是你还没找到的战利品仍在等待的地方。

这是我的第一个模组。我对编程和模组制作一无所知,所以它完全是凭感觉写出来的。下面和 README 中都有详细说明。




-------------------------------------------------------------------------------
功能说明
-------------------------------------------------------------------------------

当你在世界中移动时,模组会悄悄记录你去过的地方,
并在世界地图上用柔和的蓝色覆盖层为这些区域着色。

重点不是蓝色,而是那些仍然清晰的部分:打开
地图,山谷中尚未探索的角落一目了然,这样
你就可以去那里寻找,而不是在你已经翻找过的
地面上徘徊。

  * 覆盖层刻意做得很淡。地图在其下方仍完全可读——
    标签、图标和地形绝不会被遮挡。

  * 已着色区域绝不重叠或堆叠,因此颜色保持均匀,而不会
    在你多次走过的路线上变成深色斑块。

  * 着色区域的大小设为 Focus 能力(鼠标右键 / LT)最大
    范围的一半——该能力可揭示可拾取物品。
    取其范围的一半是一种刻意保守的估计,用来判断你走过时
    有多少战利品会被揭示,因此地图倾向于留下未着色的
    地面,而不是声称你已经搜索过它。

  * 你的轨迹以连续带状绘制,而不是方块网格:
    形状随着你的移动而增长。

  * 已探索区域与你正在游玩的存档绑定。加载较旧的存档时,
    地图会随之回滚——你后来才发现的区域会被再次移除,
    完全符合预期。


-------------------------------------------------------------------------------
工作原理
-------------------------------------------------------------------------------

模组每秒两次读取你的位置,并在内部网格上标记你
周围的一个圆盘。当你打开地图时,相邻的已标记单元格会被
合并为尽可能少的矩形,并绘制到地图自身的图钉图层中,
因此它们会随地图一起平移和缩放,而不会漂移或闪烁。

地图关闭时会跳过一切处理,并且只有在确实发生变化时
才会重建覆盖层。实际上开销可以忽略不计。

你的进度每 30 秒写入磁盘一次,并且每次游戏存档时
都会拍摄快照——快速存档、自动存档和手动存档
都一样。当你加载存档时,会恢复对应的快照。快速旅行
会被正确识别为不是加载存档,因此不会影响你的数据。

当你第一次加载 TrailKeeper 从未见过的存档时——也就是
安装后你拥有的每一个存档——它无法知道该存档创建时
地图是什么样子,因为当时模组并未运行。它会将当前
地图状态记录为该存档的基线。从第二次加载该存档起,
重新加载它就会将地图回滚到该基线,完全符合你的
预期。


-------------------------------------------------------------------------------
前置需求
-------------------------------------------------------------------------------

  * The Blood of Dawnwalker(在游戏版本 256181 上测试)

  * Vercadi 制作的 "UE4SS for Dawnwalker"——该游戏专用的
    UE4SS 包,此游戏的模组都依赖它:

        https://www.nexusmods.com/thebloodofdawnwalker/mods/18

    请先安装它,并确认它能单独正常加载后再添加此模组。

TrailKeeper 是针对该包中 2026 年 9 月附带的 UE4SS 核心
(v3.0.1,上游提交 97b7e501) 开发和测试的。它只调用
长期稳定的 UE4SS Lua 函数,因此预期该包的更新版本也能
工作——但此处尚未验证。如果其中某个版本确实导致模组
失效,请在 Posts 标签页说明,并附上你的 UE4SS.log。

不需要其他任何东西。模组使用 UEHelpers,它随 UE4SS
一起提供。


-------------------------------------------------------------------------------
安装
-------------------------------------------------------------------------------

将压缩包解压到你的游戏文件夹中,保持文件夹结构。你
应该得到:

  The Blood of Dawnwalker\Dawnwalker\Binaries\Win64\ue4ss\Mods\TrailKeeper\
      enabled.txt
      Scripts\main.lua

就这样。模组会在下次启动时生效。加载一个存档,走动
一分钟,然后打开地图。

如果你想要不同的文件夹名称,可以随意重命名 "TrailKeeper"——
只要保持 enabled.txt 在其中即可。


-------------------------------------------------------------------------------
数据存储位置
-------------------------------------------------------------------------------

一切都位于模组文件夹内。模组绝不会写入其他任何地方,
也绝不会触碰你的存档文件。

  explored.dat              你当前的已探索区域。
  explored_<Slot>.dat      每个存档槽一个快照,例如
                            explored_Quicksave2.dat 或 explored_ManualSave7.dat
  explored_<date>.bak      备份,仅由重置操作创建。

这些文件很小——即使游玩许多小时后也只有几 KB。


-------------------------------------------------------------------------------
重置——清除已探索区域
-------------------------------------------------------------------------------

方式 1——在游戏关闭时(最简单)

  删除模组文件夹内所有匹配 explored*.dat 的文件。你的
  当前进度和所有按存档划分的快照都会被移除;.bak 备份
  会保留。

方式 2——通过游戏内控制台

  这需要 Unreal 控制台,UE4SS 可以通过其自带的
  ConsoleEnablerMod 为你启用它(在 ue4ss\Mods\mods.txt 中启用)。
  打开控制台并输入:

      trailkeeper_reset

  这会将你的当前数据归档为 .bak 文件,删除所有快照,并
  立即清除地图——无需重启。

  还有:

      trailkeeper_status

  它会报告当前使用的存档槽以及已记录的单元格数量。

两个命令都会将输出打印到 UE4SS 日志窗口 (Ctrl+O),而不是
游戏控制台。


-------------------------------------------------------------------------------
卸载
-------------------------------------------------------------------------------
删除 TrailKeeper 文件夹。不会留下任何东西:其他地方没有文件,
你的存档没有改动,任何游戏文件也没有改动。你的存档不受影响,
无论是否安装模组都能正常加载。


-------------------------------------------------------------------------------
配置(可选)
-------------------------------------------------------------------------------

用任意文本编辑器打开 Scripts\main.lua。值得调整的值都在
文件的最顶部:

  FocusRadiusFactor = 0.5
      Focus 能力最大范围中有多少算作已探索。
      调高它每步覆盖更多地面,调低它则更严格。

  TargetCellSize = 500.0
      绘制分辨率,以世界单位计。较小的值会带来更平滑的边缘,
      代价是需要绘制更多矩形。500 是一个不错的平衡。

  CellColor = { R = 0.20, G = 0.55, B = 1.00, A = 0.22 }
      覆盖层颜色和透明度。A 是透明度:调高它覆盖层更醒目,
      调低它则更微妙。保持低值才能让地图可读,因此请谨慎
      调高。

更改会在下次游戏启动时生效。


-------------------------------------------------------------------------------
已知问题
-------------------------------------------------------------------------------

  * 快速旅行后的几秒内,打开地图可能会短暂显示
    覆盖层的先前状态。它会在大约十五秒内自行
    重新对齐。仅影响外观——不会影响任何数据。


-------------------------------------------------------------------------------
说明与兼容性
-------------------------------------------------------------------------------

该模组对游戏是只读的:它观察你的位置并向地图添加
自己的控件。它不会修改存档文件、游戏资源或任何
玩法系统,因此在游戏流程的任何时间点添加或移除它
都是安全的。

它应该能与任何其他 UE4SS 模组共存。它曾与
ConsoleEnablerMod、CheatManagerEnablerMod 以及一个 Focus 改色模组
一起使用,没有问题。

地图坐标是针对当前世界硬编码的。未来的游戏更新如果
更改了世界地图,可能需要更新此模组。


-------------------------------------------------------------------------------
关于 AI
-------------------------------------------------------------------------------

此模组是在 Claude(Anthropic 的 AI 助手)的帮助下编写的。
设计决策、需求以及每一轮测试都是我自己完成的:
游戏无法自动运行,因此每个版本都是手动安装、游玩并
验证的,UE4SS 日志和截图会用于下一轮迭代。

我提到这一点是因为我认为应该坦诚相告。如果你发现了
bug,请像对待任何其他模组一样报告——它会被以同样的
方式处理。


-------------------------------------------------------------------------------
致谢
-------------------------------------------------------------------------------

感谢 UE4SS-RE 团队和贡献者,他们创建并维护了 UE4SS;
也感谢 Vercadi 提供了使其在此可用的 Dawnwalker 兼容包。

欢迎在模组的 Nexus 页面提供反馈和 bug 报告。报告问题
时,请附上 ue4ss\UE4SS.log——注意它每次游戏启动时都会
被覆盖,因此请在重新启动前复制它。