支持的引擎 · Artemis
Artemis(由 iMel Inc. / Mikage 打造)是那个 Lua 脚本的 Windows 引擎,支撑着现代日语视觉小说的一大部分 —— VNDB 上约有 730 部作品。RuneTranslate 用纯 TypeScript 读取引擎的 .pfs 资源归档,无需外部工具或附属程序:它处理 PF8、PF6 和 PF2 格式,包括 PF8 的 SHA-1 密钥 XOR 加密(每条目的密钥是归档索引的 SHA-1),于是打包的脚本无需 GARbro 就能打开。从归档内部,它从可读的 .ast(Lua 表)/ .txt(面向行)脚本以及许多游戏实际发布的编译过的二进制 ASB 剧本 —— 那种以 ASB 标记开头、常被改名为自定义扩展名(例如 Crystal Rain 用 .iet)的形式 —— 中提取对话、角色名和选项。RuneTranslate 按签名而非扩展名检测编译过的剧本、解码它的对话,并列出每一行。它在整个翻译中保留内联引擎命令 —— 注音 / 振假名、名牌、颜色、点击等待 —— 和换行,让标记原封不动地保留。至于导出,Artemis 从挂载的 .pfs 归档中读取它的脚本,所以 RuneTranslate 为每个源 .pfs 构建一个小的覆盖补丁归档 —— root.pfs.NNN —— 只承载你译好的脚本;Artemis 最后挂载编号的 .pfs 归档,于是补丁遮蔽原件,游戏加载你的翻译,而无需对基础归档做完整重打包(脚本也被松散写出,作为无害的额外物)。这与 Kirikiri 的 patch.xp3 流程是同一个覆盖补丁思路。这个引擎仍在真实游戏上验证,所以在重新分发之前先测试导出的构建。
视觉小说在数千行文本里依赖一个固定的角色阵容和反复出现的术语,而机器翻译会在三章里把一位女主角的名字拼成三种不同的样子。事先给你的角色、地名和反复出现的术语建好术语表,让每一行对话和每一个选项都把它们渲染得一模一样。 术语表入门 →
把 RuneTranslate 指向游戏目录 —— 含游戏 .exe 及其 .pfs 资源归档(常常是 root.pfs / data.pfs 及同类)的文件夹。引擎检测会自动识别 Artemis 布局;你的原始文件夹永远不会被修改。
RuneTranslate 用纯 TypeScript 打开 .pfs 归档 —— PF8、PF6 和 PF2 —— 并透明地解密 PF8 的 SHA-1 密钥 XOR 数据,无需 GARbro 或附属程序。然后它解析里面的 .ast(Lua 表)和 .txt(面向行)脚本,拉出对话、角色名和选项,并在编辑器里按文件分组列出每一条可翻译的行。内联引擎命令和换行被屏蔽在数字占位符之后,让翻译服务永远不会弄乱它们。
这些游戏对话量大、对语气敏感,所以一个 LLM(OpenAI GPT-4o / Anthropic Claude)或 DeepL 通常读起来最好;免费的 Google Translate 或一个本地模型(Ollama / LM Studio)覆盖短菜单字符串和选项,而你可以把 OpenAI 兼容翻译服务指向 OpenRouter 或 NanoGPT。一次可选的 AI 润色器二次处理收紧直译措辞。
Artemis 脚本把注音 / 振假名、名牌、颜色和点击等待命令穿插在对话里。RuneTranslate 在翻译期间把它们每一个 —— 加上原始换行 —— 冻结为占位符,并在出去的路上还原它们,于是译好的行保持与原文相同的振假名、相同的名牌和相同的节奏。
导出时,RuneTranslate 会复制游戏,并为每个源 .pfs 构建一个小的覆盖补丁归档 —— root.pfs.NNN —— 只承载你译好的 .ast / .txt 脚本(它们也被松散写出,作为无害的额外物)。Artemis 最后挂载编号的 .pfs 归档,于是补丁遮蔽原件,游戏直接读取你的翻译 —— 无完整重打包,基础归档保持不动。运行导出的副本,它就用你的语言游玩。