引擎指南FAQPatreonDiscord下载
登录
RuneTranslate · 端到端翻译日式游戏
引擎指南对比图片文字存档编辑器作弊模式FAQ下载PatreonDiscordYouTube隐私政策服务条款联系我们
全部文章
nscripter · onscripter · engine

如何翻译 NScripter / ONScripter 视觉小说

2026年6月16日·6 分钟阅读

RuneTranslate 把 NScripter 和 ONScripter 视觉小说翻译成英语和 30 多种语言 —— 解码 XOR 混淆的 nscript.dat、处理 Shift-JIS / CP932,并导出即刻可运行的副本。新功能;报告任何加载不了的情况。

RuneTranslate 能读取日语视觉小说中最古老的引擎家族之一:NScripter 及其开源孪生兄弟 ONScripter。这些经典同人 VN —— 那些以一堆晦涩的 .dat 文件和 Shift-JIS 脚本发布的作品 —— 历来是手工最难解析的,也是机器翻译工具通常跳过的。RuneTranslate 会检测这个引擎、读出脚本文本,甚至能翻译绘进标题画面和菜单按钮里的日语。

这个引擎支持是新加入且尚未在真实游戏上验证的,所以如果你把 RuneTranslate 指向一个 NScripter / ONScripter 游戏,而它检测不到或加载不了,请告诉我们 —— 文末有更多说明。

NScripter 和 ONScripter 究竟是什么

NScripter 是由高橋直樹打造的闭源 Windows VN 脚本引擎,从 2000 年代初起在日本被广泛使用。它对个人和商业用途都免版税的许可、内置的归档打包器,以及出了名的低层脚本语言,让它成为同人圈的中流砥柱;像 Nekonekosoft 这样的工作室几乎只用它。

ONScripter 是由一位名叫 Ogapee 的程序员对 NScripter 运行时做的、独立的开源(GPL)重新实现。它建立在 SDL 之上、可即插即用地兼容,能在 NScripter 跑不了的地方运行 —— Linux、macOS、Android 等等 —— 所以本地化社区采用了它(以及像 ONScripter-EN 和 Ponscripter 这样支持等宽 Unicode 字体的分支),作为发布译好构建的事实运行时。

简短版:NScripter 是这些游戏被创作所用的原始闭源 Windows 引擎;ONScripter 是粉丝译者运行他们构建的开放、跨平台运行时。RuneTranslate 从游戏的脚本和资源工作,所以它覆盖任一阵营的作品。

这些游戏为何一直如此难翻译

与像 Ren'Py 或 Kirikiri 这样的现代引擎相比,NScripter / ONScripter 是一个满是引擎时代怪癖的雷区。有四个尤其让它对手工译者和天真的 MT 工具都成了一堵墙:

  • Shift-JIS / CP932 编码。 遗留脚本是 Shift-JIS(CP932)。解码错了你会得到乱码;重新编码时不当心,一些较老的运行时会损坏内存并崩溃。现代原生脚本可以是 UTF-8,但旧作库是 CP932。
  • XOR-`0x84` 混淆的 `nscript.dat`。 编译过的脚本通常住在 nscript.dat(Ponscripter 里是 pscript.dat),每个字节都对常量 0x84 做 XOR。它不是加密 —— 只是防止意外剧透的护栏 —— 但你仍然无法在文本编辑器里打开它。纯文本游戏则把脚本作为 0.utf / 0.utf.txt(UTF-8)或 0.txt / 00.txt(Shift-JIS)发布。
  • 烘焙进图像美术里的文本。 标题画面、菜单和按钮常常是预渲染的位图,所以它们上面的日语是像素,不是字符串 —— 字符串提取器碰不到它们。
  • 微妙的那个:以拉丁字母开头的行会被重新解析为命令。 NScripter 的解析器让每一行都从命令模式开始。当引擎只接受双字节日语时那是安全的,但一行以单字节拉丁字母开头看起来正像一个命令,引擎会试图执行它。社区的修法是一个保留的文本标记(遗留 ONScripter 里的反引号 ` `;Ponscripter 里的 ^`),它强制进入文本模式 —— 而一个天真的查找替换不会加上它。

RuneTranslate 现在能做什么

RuneTranslate 把 NScripter / ONScripter 当作一等公民的引擎,处理问题的两个半边:

  • 脚本文本。 它读取游戏的脚本 —— 一个松散的纯文本文件,或一个对 0x84 做 XOR 混淆的 nscript.dat —— 解码 Shift-JIS / CP932 对话、在编辑器里列出每一条可翻译的行,并在导出时把脚本以引擎期望的形式写回,当原件使用了 XOR 时重新施加它。它还会自动插入单字节文本标记,让译好的英语不被误读为命令。(一个只住在 .nsa / .sar 归档里、没有松散副本的脚本尚未读取 —— 见局限。)
  • 烘焙进图像里的文本。 标题画面和菜单上的日语由 图片文字翻译 处理:框选文字、识别它们、用你自己的翻译服务翻译,并重新烘焙结果,让游戏加载你译好的美术。

日译英是最佳场景 —— 这正是这个引擎粉丝翻译史的主题 —— 但你可以针对 30 多种语言。在遗留的 Shift-JIS 脚本上,非拉丁目标语言受限于引擎能渲染的字体。

你需要准备什么

  • Windows 版 RuneTranslate —— 免费,每一种引擎和翻译服务都已解锁。
  • 一个 NScripter 或 ONScripter 游戏文件夹 —— 含有游戏 .exe(或一个 ONScripter 二进制)、它的脚本(nscript.dat,或一个松散的 0.txt / 0.utf),以及任意 .nsa / .sar 归档的目录。
  • 一个目标语言 —— 英语、西班牙语、法语、德语、中文,以及 30 多种其他语言。
  • 一个翻译服务。免费的 Google Translate 开箱即用;DeepL 有免费档位;OpenAI、Anthropic、一个本地模型,以及任意 OpenAI 兼容 API 都需要自备密钥。这些游戏对话量大,所以 LLM 或 DeepL 读起来最好。

第 1 步:打开游戏文件夹

启动 RuneTranslate,点击 新建项目,把它指向游戏目录。检测会自动运行:一个 nscript.dat / pscript.dat,或一个纯文本的 0.utf / 0.utf.txt,本身就足够。一个裸的 Shift-JIS 0.txt 或一个孤零零的 .nsa 归档只有在有一个佐证信号(一个 ONScripter 二进制、一个游戏字体,或一个伴随的归档)时才被识别,以避免误判。你的原始游戏文件夹永远不会被修改。

第 2 步:脚本是如何被读取的

RuneTranslate 读取游戏松散发布在其根目录的脚本,并替你解码它:

  • 混淆的 `nscript.dat` —— 对 0x84 做反 XOR 并读作 Shift-JIS,于是你跳过一个单独的 nsdec 步骤。
  • 纯文本脚本 —— 0.utf / 0.utf.txt(UTF-8)或 0.txt / 00.txt(Shift-JIS),直接读取。
  • 归档里的图像 —— 从游戏的 .nsa / .sar 归档中取出,供图片文字步骤使用。(脚本本身从松散的根目录文件读取;一个只打包在归档里的脚本尚未读取。)

对话和显示的文本在编辑器里按文件分组列出。引擎标记和命令标记在到达翻译服务之前被屏蔽为数字占位符,然后在出去的路上被还原 —— 并且在需要的地方施加单字节文本标记,让引擎不会把一条译好的行误当成命令。

第 3 步:翻译

选一个翻译服务并运行。LLM(OpenAI / Anthropic)最适合角色声线,DeepL 对旁白又快又干净,而免费的 Google Translate 对短菜单字符串够用。事先给你的角色阵容建好术语表,让名字渲染得一模一样 —— 参见 术语表 101。完成后,用 AI 润色器 做可选的一遍处理,它会在上下文中重读每一行,收紧 MT 往往留下的生硬、直译的措辞。

第 4 步:翻译图像里的文字

因为如此多的 NScripter UI 是预渲染的美术,这一步在这里比在大多数引擎上更重要。打开一个标题或菜单图像、框选每一处日语、识别它、用同一个翻译服务翻译它,然后导出时 RuneTranslate 会把译文重新烘焙进去并松散地写进导出的副本,让引擎加载你译好的美术,覆盖归档里的原件。(你的原始文件夹保持不动;SPB 压缩的美术和少数罕见的图像变体仍在加固中。)完整教程:图片文字翻译。

第 5 步:导出即刻可运行的副本

点击 导出。RuneTranslate 会写出一个游戏的译好副本 —— 脚本重新编码为 Shift-JIS / CP932,如果原件使用了 XOR 0x84 则重新混淆,作为一个松散脚本写出,让引擎加载它覆盖任何归档副本,加上旁边任何译好的图像。运行它,它就用你的目标语言游玩,无论是在原始 NScripter 运行时上还是在 ONScripter / ONScripter-EN 上。

已知的局限

  • XOR-0x84 混淆已处理,但一个带有真正自定义加密的游戏可能打不开。
  • 一个只打包在 .nsa / .sar 归档里、根目录没有松散 nscript.dat / 0.txt 的脚本尚未提取 —— 大多数游戏松散发布它,但少数不这样。
  • 图片文字翻译能触及绘制的菜单、标题和按钮,但 SPB 压缩的美术和高度风格化的标志可能想要手动修饰。
  • 确切的引擎在不同版本之间可能不同 —— 一些与 NScripter 相关的作品为特定的 Steam / 主机重制版做了重新工程。请在你的副本上验证。

它是全新的 —— 告诉我们哪里坏了

这个引擎是一个全新加入,尚未经过实战检验。NScripter / ONScripter 有数十年、我们并未全部见过的变体、分支和每个工作室各异的怪癖。所以如果你把 RuneTranslate 指向一个,而它检测不到、加载不了,或导出了运行时无法打开的东西,请报告 —— 游戏名和它的打包方式(松散 0.txt、nscript.dat、.nsa 归档)能帮我们最快地加固它。

下载 RuneTranslate,把它指向你一直想读的那个经典 VN,试一试。想看一个更现代的 VN 引擎,接着读 Ren'Py 教程。

相关阅读
01

如何翻译游戏的 .po 和 .mo 文件(gettext)

gettextpomoenginetutorial2026年8月4日 · 7 分钟
阅读 →
02

如何翻译 AliceSoft System 游戏(Rance、Evenicle……)

alicesoftranceengine2026年6月26日 · 6 分钟
阅读 →
03

如何将 YU-RIS 视觉小说翻译成英语

yu-risengine2026年6月25日 · 6 分钟
阅读 →

准备好试用 RuneTranslate 了吗?

免费版即可解锁全部引擎 + 全部翻译服务商。支持者($3/mo)解锁全速翻译。

下载 Windows 版