NetHack Stuff 上的补丁会影响存档兼容性或破坏游戏吗?

按页面自己的说明,这些补丁不会破坏骨骼文件(bones)和存档兼容性("The patches don't brake bones/save compatibility")。但这有一个前提:补丁文件名后缀必须与你的 NetHack 版本号匹配,且新补丁本身可能带有严重 bug。因此结论是——兼容性风险低,稳定性风险取决于补丁新旧程度。

版本匹配是首要条件

页面明确提示:看文件名后缀判断对应的 NetHack 版本号。例如:

  • qt_posix-343.diff → 对应 3.4.3
  • itemcat-343.diff → 对应 3.4.3
  • itemcat-007e6f3.diff → 用于 SLASH'EM

把 3.4.3 的补丁打到别的版本上,兼容性说明就不再适用。选补丁前先确认自己的版本号与后缀一致。

补丁新旧与稳定性

页面给出的经验判断:

  • 很新的补丁可能含有严重 bug("If the patch is very fresh, it may contain some nasty bugs")。
  • 如果某个补丁问题严重,可以退回旧版本试试("you may have better luck with an older version")。

也就是说,兼容性有保证,但功能稳定性没有保证。想稳,优先选发布时间较早、已被使用过的版本。

会改动 Guidebook.txt 的补丁

部分补丁会修改 Guidebook.txt。页面说明:这对在 PC 上阅读的 Windows 用户是有意为之的便利,但如果你需要正确的排版,得从 Guidebook.mn 重新生成。

如果你在意游戏内帮助文档的原始排版,打补丁前先备份 Guidebook.txt。

页面收录的补丁类型

类别 补丁 作用
Bugfix / 界面 qt_posix 让 Qt 代码更符合 POSIX,去掉对 BSD scandir() 的调用
Bugfix / 界面 itemcat 在 drop/put_in/take_out 菜单中增加物品分类(如未鉴定物品、刚拾取物品、自动拾取物品、易锈物品、反向选择)
Bugfix / 界面 dynkey 动态按键绑定,在 config.h 启用 DYNKEY 后可用 MAP=z y、SWAP=C-d q 这类配置
Bugfix / 界面 qwertz、nethack_rand、paranoid_quit 见页面列表
玩法 nloot、ranger_ammo 见页面列表
剧透 wish、ascension statistics 许愿与飞升统计资料
工具 recmerge、gabuse 记录合并等
二进制 Windows + Jukka's Patches 已整合补丁的 Windows 版本

itemcat 的分类说明(来自页面):

  • I — 未鉴定物品(若还想选 b/u/c 状态未知的物品,用 I 和 X)
  • P — 刚取出/刚拾取的物品
  • Q — 自动拾取的物品
  • r — 已知易锈物品(需设置类似 like_swimming 的选项)
  • Z — 反向选择(选中除正常选择外的所有物品,通常不同于按 @)

启用方式:在 config.h 中定义 ITEMCAT 和 ITEMCAT_JP。

打补丁前的检查清单

  1. 确认补丁文件名后缀与你的 NetHack 版本一致。
  2. 备份存档目录和 Guidebook.txt。
  3. 优先选发布时间较早的补丁版本,避开"very fresh"的。
  4. 打完补丁后先开新游戏测试,确认无异常再继续原有存档。
  5. 若出现严重问题,换用该补丁的旧版本重试。
nh.gmuf.com