支持的引擎 · RPG Maker XP / VX / VX Ace
RPG Maker XP、VX 和 VX Ace 是 RPG Maker 的 Ruby 世代 —— RGSS1、RGSS2 和 RGSS3 —— 它们保存游戏数据的格式,与基于 JavaScript 的 MV 和 MZ 完全不同。这里没有可读的 JSON,一切都躺在 Data/ 下的 Ruby Marshal 二进制里:XP 是 Map001.rxdata,VX 是 .rvdata,VX Ace 是 .rvdata2,数据库文件和 System 也在其中。已发布的游戏通常把这些文件装进一个加密的 RGSSAD 归档里 —— Game.rgssad(XP)、Game.rgss2a(VX)或 Game.rgss3a(VX Ace)—— 就摆在可执行文件旁边。RuneTranslate 用纯 TypeScript 自己处理这两层。它直接读取归档,不需要装 Ruby,不需要 RPG Maker 编辑器,也不需要单独的解包工具;里面的 Marshal 4.8 数据由自研的读写器解析,它只重写字符串叶子 —— 浮点数、表以及其他每一种对象体都按字节原样重新写出,所以游戏加载到的文件,在结构上就是它出厂时的那一个。在此之上,它提取地图事件对话(XP 打包在事件码 101 里,VX 和 VX Ace 在 401 和 405 里)、Show Choices 选项表、事件名和地图名、数据库 —— 角色、物品、技能、武器、护甲、敌人和状态的名称、称号、描述与备注 —— 以及 System 词汇和属性名。像 \C[1]、\N[2]、\V[3] 这样的控制码在文本送到翻译服务之前会被屏蔽,对话则在导出时自动换行,让它装得进消息窗口。有一点直说:VX Ace 跑的是 Ruby 1.9,每个字符串都带编码标签,所以端到端都是 Unicode。XP 和 VX 跑 Ruby 1.8,把文本存成不带标签的 Shift-JIS 字节串,因此更容易碰上编码边界情况 —— 在这两个版本上,英语和罗马音目标最稳妥。更新的 MV 和 MZ 世代,见 RPG Maker MV / MZ 页面。
Ruby 世代的 RPG Maker 游戏都很长,同样的名词到处重复 —— 写在某个事件里的一个技能名,会再次出现在数据库、战斗日志和商店菜单里。把队伍成员名、城镇名、关键物品和招牌技能加进术语表一次,每一个翻译服务就会在整个 Data/ 里把它们渲染得完全一致。这在 XP 和 VX 上比在 VX Ace 上更要紧,因为它们的 Shift-JIS 文本让你更难注意到一个名字在 40 小时的游戏里中途漂移了。 术语表入门 →
打开游戏文件夹,看一眼 Data/。以 .rxdata 结尾的文件意味着 RPG Maker XP,.rvdata 意味着 VX,.rvdata2 意味着 VX Ace。如果没有 Data/,就到可执行文件旁边找 Game.rgssad(XP)、Game.rgss2a(VX)或 Game.rgss3a(VX Ace)—— 数据就在那个归档里。如果你看到的反而是 www/data/*.json 或 data/*.json,那你手上是 MV 或 MZ;那种情况请看 RPG Maker MV / MZ 页面。
启动 RuneTranslate,点击 New project,把它指向包含游戏可执行文件的文件夹。引擎检测是自动的,并会报告它找到的是这三个版本中的哪一个,以及数据是松散的还是打包在归档里的。加密的 RGSSAD 会被直接读取,其中的 Data 文件解密到一个每项目工作区里 —— 全程不涉及 Ruby 运行时,也不涉及外部解包工具。
选好目标语言,再选一个翻译服务:Google 和免费的 DeepL 选项完全不需要 API 密钥,DeepL API 给出均衡的质量,而 OpenAI、Anthropic Claude、DeepSeek、任意 OpenAI 兼容端点,或通过 Ollama 或 LM Studio 跑的本地模型,能带着上下文处理长对话。源语言默认是日语;任意受支持的源语言都可以按项目设置。
RuneTranslate 把字符串分批发给翻译服务,再把结果写回项目。地图对话、选项、数据库条目和 System 术语都做了分组,你可以一次审校一张地图或一张数据库表,手动编辑任意一行,并重试失败的批次。控制码全程被屏蔽,所以 \C[1]、\N[2] 和 \V[3] 会完好无损地熬过一个来回。
导出会写出一份完整可运行的游戏副本,译好的 Marshal 数据已经就位。对于打包成归档的游戏,归档会被解密成 Data/ 里的松散文件,归档本身则被丢弃 —— 这正是 RGSS 在没有归档时加载游戏的方式。对话在写出时自动换行。结果是一份归你保留、可直接游玩的翻译构建,原件毫发无损。