回复
3
查看
198
收藏
5

15

赠楼

10%

赠楼率

2641

蒸汽

211

主题

3080

帖子

4726

积分
发表于 1 小时前 · 日本 | 显示全部楼层 |阅读模式
本文为 其乐用户(UID:131429) 发布的原创文章,转摘前请联系该用户获得许可
本帖最后由 131429 于 2026-7-27 17:35 编辑


> The Operative: No One Lives Forever Simplified Chinese Patch
> 基于 NOLF Modernizer v1.006 Patch 4



一、项目背景
《无人永生》是 Monolith Productions 在 2000 年推出的第一人称谍战射击潜入游戏,是一款目前买不到的游戏
游戏的版权在几次公司并购里彻底走散,至今没有任何一方能拿出完整权利来重新发行,所以它没有 Steam 版、没有 GOG 版,只能靠二手光盘和社区补丁活着。
它从来没有过官方简体中文版。
本补丁想解决的就是这件事:
让这款 25 年前的游戏在现代系统上、用中文、以合理的分辨率跑起来。
本补丁建立在 NOLF Modernizer之上,这是社区维护多年的现代化补丁,修了大量引擎年久失修的问题。
(也引入了无数新问题

【【【一点私人的话】】】
先开门见山地说:我对最终呈现的这个版本非常不满意
问题出在最初的技术路线上。

当时为了让中文尽快显示出来,我选了 GDI 袋礼这条路:
拦截引擎的文字绘制调用,自己接管中文渲染。
这条路线见效很快,但是把游戏的文字推上了引擎里最慢的那条路径:每段文字、每一帧、用 GDI 画到 DirectDraw 表面上。
等我意识到性能代价的时候,整套东西已经建在这个地基上了,推倒重来等于从零再做一遍。
所以下面「已知问题」的第一条,我写的是"无解",其实更准确的说法是:在目前我选择的这条路线上,无解。
更折磨人的的是排查。
本补丁叠着三样东西:一个 2000 年的引擎、一个社区维护的现代化补丁、一个我做的汉化层。
任何一个毛病冒出来,第一步都不是修,而是先证明它是谁的。
是游戏本身?是 Modernizer?还是汉化?
测试起来非常痛苦,测试比开发累得多,而且是那种看不到尽头的累,修好一个,冒出两个,永远不确定自己是在收敛还是在原地打转。
做到后面,我其实已经不打算发布了。
改变主意是因为,之前随手发的一个测试视频,本想着就是自己个补丁玩玩,结果点赞竟然有几百个……
那一刻我意识到,原来到今天还有这么多人惦记着这款买都买不到的游戏,还在等一个能读懂的版本,这份意外的期待一下子变成了压力,也变成了我把它做完的理由。
于是我又回去尽力修补了一轮:性能、排版、工具、文档,现在你看到的就是最终呈现的样子。

它不完美。

「已知问题」那一章我写得很长,长到几乎像是在劝退,但我宁可你在下载之前就知道会遇到什么,也不想让你在游戏里撞上问题时,把时间浪费排查问题上。
如果本补丁能让你把这个故事完整地玩一遍,那就值了。
我应该不会再更新这个汉化了,以我的能力已经到了极限了,能修的我全修了,修不了的我也不会修。
所以本补丁不接受任何bug反馈,译文有bug的话请看后文的【六、小工具:改译文与换字体】自行修改……
另外,如果有人想要使用 GPU绘制 之类的方案来重制汉化,请随意使用我的译文或者工具,不需要署名,我做汉化完全是出于兴趣,什么也不图。



二、技术说明
汉化这款游戏不是”把文本换掉“那么简单,原因在于它的引擎:
- 文本全部是 ANSI 单字节,没有 Unicode 概念;
- 界面字体是 PCX 点阵图集,里面根本没有汉字字形;
- 所有界面布局常量都是 640×480 的逻辑单位。

所以本补丁分了三层:
1. 文本层
游戏的界面文字存在 CRES.dll 的 Win32 字符串资源里,需要注意的是 RT_STRING 是 16 条一块存放的,只能整块替换,改其中一条时如果不先把这块原有的 16 条读出来,同块里没动过的字符串会被清空。
实际封包里有 6073 条字符串,而译文表覆盖 5602 条,剩下 471 条必须原样保留。
译文以四列 TSV 维护(id / language / english / chinese),完整开源。

2. 渲染层
一个工具 CSHELL.DLL 拦截引擎的 GDI 文字调用,把 ANSI 文本转成 Unicode,用 NCN01 字体渲染。
NCN01 是思源黑体 SC 2.005 改名而来,改名不是为了藏来源,而是 SIL Open Font License 的强制要求:‘Source’ 是保留字体名称,衍生版本不得沿用。

3. 引擎层
对 Modernizer 客户端 DLL 的修改,共 13 个文件、439 行,届时Github仓库将以 patch 形式提供,解决三类问题:
性能:
引擎在非英文语言下会放弃点阵字体、改用“引擎字体”;也就是每段文字、每一帧、用 GDI 画到 DirectDraw 表面,每次都要锁表面等 GPU 排空。
而游戏中每帧都在画的是 HUD(血量/护甲/弹药/氧气),所以代价是持续的:高分辨率下从 60 帧掉到不足 20 帧。
最终我的解决方法是让 HUD 和氧气条继续用点阵图集,英文分支本来就只给它们数字和符号,不损失任何汉字。

高分屏字体缩放:
这个特性只存在于本补丁的 DLL 里,源码树中从未提交过,照Modernizer上游重编会静默丢失。

排版:
布局常量是 640×480 单位,而文字度量是设备像素。
点阵字体时代两者近似相等,换成按分辨率放大的引擎字体后这个假设全线崩塌,一共找到十二处混用,分了三批修完。

中文以外额外附带的东西:
两个启动器:物理像素检测、DPI 修复、16:9 黑边(而非拉伸变形)、自动识别 X4/X2/无高清包;
LAA 4GB:给lithtech.exe打了大地址感知补丁,不容易导致内存不足的问题;
三合一小工具:文本翻译、字体更换、按键设置,单个 exe,无运行时依赖。
小工具里的字体更换支持系统已装字体和自选文件(ttf / otf / ttc),会用译文里实际出现的每一个汉字去检查字体覆盖,缺字会直接列出来。
整理后项目将全部开源,包括译文、补丁、构建脚本和踩坑记录,目标是:只要有开源仓库和一份游戏,就能把整个汉化从零重建出来。



三、已知问题(!!极其重要!!必读!!)
1. 中文界面文字多的地方会掉帧,分辨率越高越明显
这是引擎层面的限制,无解。
原因见上文,非英文语言下界面文字走 GDI 表面的路径,文字越多、分辨率越高,代价越大。
HUD 已经修好了,但菜单、任务简报这类文字密集的界面仍然会掉帧。
好在这只影响菜单界面,不影响战斗,打开硬件光标以后鼠标指针也很流畅,只有菜单自己在卡。
非常介意这点的话请使用 1080p 启动器。

2. 1080p 下中文文字边缘锯齿明显,可读性一般
分辨率越低,字号的实际像素数越少,而汉字笔画比拉丁字母密得多,加上文字是用 GDI 画到表面上的,抗锯齿能力有限,所以 1080p 下笔画边缘会比较毛糙,长段落读起来累。
分辨率越高这个问题越轻,在 4K 下基本看不出来,但那又会踩上问题 1 和问题 3,所以需要玩家做取舍。

3. 1080p 以上的分辨率,选择装备时可能看不到下方的候选列表
原生分辨率启动器在 4K 等高分辨率下会遇到这个问题。
绕过办法:用 1080p 启动器进游戏、选好装备、存档,再换回原生分辨率启动器读这个存档来玩。

4. 进游戏后鼠标无法控制视角
需要手动开一个设置:
> 控制 → 鼠标 → 旧版鼠标观察:是
这是 Modernizer 的默认值在部分系统上不合适导致的,开了就正常了。

5. 个别场景严重掉帧(与本补丁无关)
某些特定地点帧数会掉一半,走开就恢复,原地转身背对也会恢复。
不是汉化的问题,是 LithTech 引擎在 64 位 Windows 上的老 bug:引擎施加动态光时会重新计算并上传光照贴图,这条路径在现代系统上极慢,同引擎的《异形大战铁血战士2》、《血祭2:天选者》、《虎胆龙威:大厦惊魂》等都有同样的问题,即使用RTX 5090 也一样爆卡,与玩家的配置好坏无任何关系。
应急办法:在「选项 → 显示 → 高级」里关闭“光照贴图”,帧数会立刻恢复,代价是关卡的烘焙光照会变平。

6. 读取存档时可能闪退
这是引擎自己的老毛病,和汉化无关,但是足够让人抓狂,尤其是在刚打完一场硬仗的时候。
唯一有效的办法就是勤存档
养成随手F6 快速存档的习惯,过一个路口按一下、清完一个房间按一下。
另外建议别只依赖快速存档,重要工具点手动存到不同的档位,快速存档只有一个槽,万一它正好坏了,你需要一个能退回去的地方。

7. 装了高清纹理包之后游玩久了可能报内存不足闪退
lithtech.exe 已经打了 LAA 大地址感知补丁,可用内存从 2 GB 提到了 4 GB,但它终究是个 32 位程序而 x4 高清包解压后接近 10 GB 贴图,在贴图密集的场景里仍然可能撞上上限。
无解,勤存档

8. 非 16:9 分辨率下,Alt+Tab 切出去再切回来,黑边覆盖层可能消失
如果你的显示器不是 16:9(比如 16:10、21:9、32:9),启动器会在画面两侧或者上下加黑边,让这个 2000 年的 4:3 界面不被拉伸变形。
Alt+Tab 切换出去再切回游戏,这层黑边有可能不见了。
只是难看,不影响游戏。
画面内容、操作、存档都正常,不用管它,介意的话重启游戏就恢复。



四、截图



五、安装和运行
1. 安装游戏
准备一份《无人永生》(GOTY 版最佳)。

2. 覆盖汉化包
把补丁包内的全部内容复制到游戏根目录(与 lithtech.exe 同级),出现同名文件时选择合并并替换。
> 不能只复制中文 REZ。本补丁依赖随包附带的完整 Modernizer。
> 如果启动时报 `Invalid shell DLL version for cshell.dll`,说明覆盖不完整,重做这一步。

3. 用任意汉化启动器进一次游戏,改设置
推荐开启:
显示 - 纹理色深:32位
显示 - 硬件光标:开
显示 - Intel Graphics 修复:开
控制 - 武器快捷键 - 图标大小:大
性能 - 声音滤波效果:开
游戏 - 准星 - 动态缩放:开

进游戏后如果鼠标无法控制视角,则需要打开:
控制 - 鼠标 - 旧版鼠标观察:是
这是 Modernizer 的默认值在部分系统上不合适导致的,开了就正常了。

4. 退出游戏

5. 打开 ‘《无人永生》汉化小工具\NOLF_CN_Toolkit.exe’

6. 在「按键设置」页改键位,保存
Modernizer 在非拉丁语言的 Windows 上有 bug ,无法通过游戏内的设置来修改按键,这个工具可以绕开这个 bug ,直接修改根目录的 autoexec.cfg ,下拉框选键,不受键盘布局影响。

7. 用任意汉化启动器开始游戏
两个启动器的区别只有分辨率策略:
- 原生分辨率:按物理像素开无边框窗口,画面最清晰,中文边缘也最干净
- 1080p:DPI 虚拟化放大
两者都会自动检测游戏目录里的高清纹理包(X4 / X2 / 无),不需要手动配置。
在乎画面清晰就用原生,在乎菜单流畅和装备界面就用 1080p。装备可以按问题 3 里的办法用 1080p 选好存档,再换回原生来玩,两头的好处都能占一点。


可选:高清纹理包
游戏原版贴图是 2000 年的分辨率,在 4K 屏上会比较糊。
社区有一套用 ESRGAN 超分重制的贴图包,观感提升比较明显,汉化启动器会自动识别并加载,不需要任何额外配置。

下载(ModDB):
X4包:https://www.moddb.com/mods/no-on ... -upscale-pack-x4-v3
四倍分辨率,解压后约 10 GB。
X2包:https://www.moddb.com/mods/no-on ... -upscale-pack-x2-v3
两倍分辨率,体积相对小很多。
修复包:https://www.moddb.com/mods/no-on ... 4-fix-for-x2-and-x4
修正前两者的一些贴图问题。

安装:
把解压出来的 .REZ 文件放进游戏根目录的 Custom 文件夹即可。

两条规矩:
- x4 和 x2 只能选一个,不要同时放进去;
- 修复包是必须的,不是可选项。
第二条得强调一下:启动器判断“有没有装高清包”时,修复包也在检测条件里。
少放了它的话,启动器会认为高清包不完整,就不会加载任何高清纹理。
把高清包放进 Custom 之后应该是这样:
x4:  
HD-COMMON1-X4.REZ
HD-COMMON2-X4.REZ
HD-TEX1-X4.REZ
HD-TEX2-X4.REZ
HD-TEX3-X4.REZ
HD-TEX4-X4.REZ
HD-TEX-FIX-V4.REZ          ← 修复包
NOLF_CN_GDI.REZ         ← 汉化

x2:  
HD-COMMON-X2.REZ
HD-TEX1-X2.REZ
HD-TEX2-X2.REZ
HD-TEX-FIX-V4.REZ          ← 修复包
NOLF_CN_GDI.REZ         ← 汉化



六、小工具:改译文与换字体
为了应对一些情况,我写了一个小工具:NOLF_CN_Toolkit.exe ,单文件,不需要装 .NET、不需要 Python、不依赖任何其它 exe。
启动时会自动寻找 C:\Games\NOLF,找不到会弹窗让你选游戏目录,之后程序记住目录。
总体有三个功能,「按键设置」上面讲过了,这里说另外两个。

文本翻译:改译文并导入游戏
觉得哪句翻译别扭,或者我没测试到的换行错误之类的,可以自己修改。

1. 工具会自动读取游戏目录下的 NOLF_en_zh.tsv;
2. 搜索框支持按 ID、英文原文、中文译文三者任意匹配;
3. 在表格里直接改中文列,或者选中一行,用下方的大编辑框改,那里显示的是真正的换行,比在表格里对着 \n 改舒服得多;
4. 改过的行会高亮,勾选「只看改过的」可以复查文本;
5. 点击“保存译文”,将翻译写回 TSV;
6. 点击“导入游戏”,将译文写入游戏。

几条要注意的:
- 不要动 ‘%1!s!’、‘%2!d!’ 这类占位符,这些是游戏运行时要往里填数值的通配符,删除或修改都会出问题;
- 表格里显示的 ‘\n’、‘\t’、‘\\’ 分别代表换行、制表符、反斜杠,在下方编辑框里按回车就行,保存时会自动写成 ‘\n’;
- 导入前会先备份当前的 Custom\NOLF_CN_GDI.REZ 到同目录的 backup 文件夹内;
- 导入每次都从原始副本 .base 重新生成,所以反复导入不会累积翻错误,上一次的错误译文也不会残留;
- 写完之后会重新打开产物,把每一条字符串读回来逐字比对,校验不通过就不碰游戏目录里的封包;

想彻底恢复到我的译文删掉 Custom\NOLF_CN_GDI.REZ,把同目录的 NOLF_CN_GDI.REZ.base 改名为 NOLF_CN_GDI.REZ 即可。


游戏字体:换成你喜欢的字体
如果你不喜欢思源黑体,可以换掉。
1. 左边列出系统里已装的全部字体,上面的框可以搜索,也可以点「从文件选择」,使用没安装的字体文件;
2. 支持 ttf / otf / ttc,如果使用微软雅黑那种一个文件里装了好几个字体的大字体,会让你选择用哪一个;
3. 选中后立刻做覆盖检查,拿当前译文里真正出现过的每一个汉字(2400 多个)去查这个字体有没有这些字,如果缺哪些字,会直接列出来;
4. 预览框里画的是改名后的实际产物,不是原始字体文件,也就是说,如果处理过程弄坏了字体,预览当场就不对,不用等进游戏才发现;
5. 想让粗体也换掉,勾「单独指定粗体」再选择一个粗体,不勾的话就由系统自动合成粗体;
6. 点生成并应用到游戏。

其它:
- 换完字体要重启游戏才生效;
- 原字体会先备份到 NOLF_CN\backup\,随时可以点「还原为原版字体」退回去;
- 用系统自带字体(微软雅黑等)生成的文件,请只给自己用,不要乱发给别人,字体是有版权的。
工具做的事是把你选的字体的内部家族名改写成 NCN01,再存成 NOLF_CN\NOLFCN-Regular.otf 和 NOLFCN-Bold.otf。
因为工具 DLL 里这两个文件名和 NCN01 这个名字都是写死的,这是这套加载方式唯一的接口。



七、作弊码
`T` 打开聊天界面,输入代码后回车。
- 必须全小写,而且都以 mp 开头;
- 用过作弊码的存档会被标记。




八、下载地址
Google Drive
百度网盘 提取码: cnnh



九、致谢
- Monolith Productions:做出了这款杰出游戏,25年过去了,凯特·阿彻依然没有过时。
- haekb / HeyThereCoffeee [NOLF Modernizer]:没有Ta,这款游戏在现代系统上根本跑不起来,更谈不上汉化,本补丁的引擎层改动全部建立在它的开源代码之上。
- Adobe 与 Google:思源黑体,以 SIL Open Font License 1.1 发布,一套能覆盖游戏全部译文用字的开源中文字体,是这个项目能做成的前提之一。
- 高清纹理包的制作者:ESRGAN 超分材质包,让 2000 年的贴图在 4K 下还看得过去;
- NOLF 社区:在这款游戏无法合法购买的二十多年里,是社区把它保存了下来。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

×
回复

使用道具 举报

浏览本版块需要:
1. 初阶会员或更高等级;
2. (点击此处)绑定Steam账号
您需要登录后才可以回帖 登录 | 注册

本版积分规则

欢迎发帖参与讨论 o(*≧▽≦)ツ,请注意
1. 寻求帮助或答案的帖子请发到问题互助版块,悬赏有助于问题解决的速度。发错可能失去在该板块发布主题的权限(了解更多
2. 表达观点可以,也请务必注意语气和用词,以免影响他人浏览,特别是针对其他会员的内容。如觉得违规可使用举报功能 交由管理人员处理,请勿引用对方的内容。
3. 开箱晒物交易中心游戏互鉴福利放送版块请注意额外的置顶版规。
4. 除了提问帖和交易帖以外,不确认发在哪个版块的帖子可以先发在谈天说地

  作为民间站点,自 2004 年起为广大中文 Steam 用户提供技术支持与讨论空间。历经二十余载风雨,如今已发展为国内最大的正版玩家据点。

列表模式 · · 微博 · Bilibili频道 · Steam 群组 · 贴吧 · QQ群 
Keylol 其乐 ©2004-2026 Chinese Steam User Fan Site.
Designed by Lee in Balestier, Powered by Discuz!
推荐使用 ChromeMicrosoft Edge 来浏览本站
广告投放|手机版|广州数趣信息科技有限公司 版权所有|其乐 Keylol ( 粤ICP备17068105号 )
GMT+8, 2026-7-27 18:40
快速回复 返回顶部 返回列表