RuneTranslate 现已支持翻译 Godot 游戏
RuneTranslate 现已能将 Godot 3.x / 4.x 游戏翻译成英语及 30 多种语言:打开 .pck(即使它被嵌入在 .exe 中),借助内置的 GDRE Tools 组件反编译已编译的 GDScript 并转换二进制场景,然后列出对白和界面文本。指向游戏文件夹,自动识别,翻译,再导出一份重新打包、可运行的副本。功能刚刚加入,尽力而为——请先验证导出的版本能正常运行。
RuneTranslate 现已能翻译用 Godot 制作的游戏——这款免费、开源的引擎已悄然成为发布独立游戏或同人游戏最热门的方式之一。长期以来,Godot 一直是从外部最难翻译的引擎之一,因为一款已发布的 Godot 游戏就是个密封的盒子:所有内容都放在单个 .pck 归档里(常常直接粘在 .exe 本身的末尾),脚本被编译成 GDScript 字节码,场景则以二进制保存。RuneTranslate 打开这个盒子,读出文本,再把你的译文打包回去。
这是一个新加入的引擎,所以首先要说:如果你把 RuneTranslate 指向一款 Godot 游戏,它却无法识别、无法打开,或者导出的副本无法运行,请告诉我们。文末会详细说明。
Godot 究竟是什么
Godot 是一款免费、采用 MIT 许可的开源游戏引擎(2014 年首次公开发布),近几年人气暴涨——如今它已是 2D 和 3D 独立游戏的主流选择,越来越多的日本同人作品也基于它发布。游戏通常用 GDScript 编写,这是 Godot 自家类似 Python 的语言,并以场景的形式组织——由节点组成的树(这里一个标签、那里一个按钮、这里一个对话框),保存为资源。
当一款 Godot 游戏被导出发布时,这一切——脚本、场景、图像、音频——都会打包进单个 .pck 包文件。这个包要么放在可执行文件旁边,要么(非常常见地)直接附加在 `.exe` 的末尾,于是文件夹看上去就只有一个游戏可执行文件。正是这种打包方式让 Godot 游戏显得难以破解。
为什么 Godot 游戏一直难以翻译
与 Ren'Py 这类由脚本驱动的引擎不同,一款已发布的 Godot 游戏几乎不以纯文本形式暴露任何内容:
- 所有内容都在 `.pck` 里。没有可供编辑的散落脚本或文本文件——而当包被嵌入
.exe时,甚至连一个可让工具指向的可见.pck都没有。 - 脚本是编译过的。GDScript 以编译后的字节码(
.gdc)形式发布——在现代的 Godot 4 中,这些字节码还额外经过压缩——所以嵌在代码里的对白既无法用 grep 搜索,也无法在文本编辑器中打开。 - 场景是二进制的。界面标签和菜单文本存放在以 Godot 二进制资源格式(
.scn)保存的场景文件里,而不是你在编辑器中看到的可读.tscn。 - 大多数游戏不使用翻译文件。Godot 有一套一流的本地化系统(CSV /
.po→.translation),但很多游戏——尤其是较小的同人作品——从不使用它,而是直接把日语硬编码进脚本和场景。因此并没有一张整齐的字符串表可供翻译。
RuneTranslate 现在能做什么
RuneTranslate 将 Godot 视为一等引擎,并为你重建可读的项目。它在底层内置了一份 GDRE Tools(开源的 Godot 逆向工程工具包)副本,用它来:
- 解包 `.pck`——独立的、
data.pck,或嵌入在.exe末尾的包(RuneTranslate 会自动检测嵌入包的特征签名)。 - 反编译已编译的 GDScript(
.gdc→.gd),让代码中的对白和旁白重新变得可读。 - 转换二进制场景(
.scn→.tscn),以便从中提取标签和界面文本。
随后它会扫描恢复出来的项目,列出所有可翻译的字符串——脚本对白以及场景/界面文本——在编辑器中按文件分组,并将引擎标记隐藏在占位符后面,这样翻译服务就绝不会把它弄乱。导出时,它会把你的译文拼接回恢复出来的源代码,并重新打包成一份可运行的游戏副本(具体做法见下文)。
你需要准备什么
- Windows 版 RuneTranslate——免费,所有引擎和翻译服务均已解锁。
- 一个 Godot 游戏文件夹——通常就是游戏的
.exe(包已嵌入其中),或者一个.exe外加旁边的.pck/data.pck。Godot 3.x 和 4.x 均受支持。 - 一种目标语言——英语、西班牙语、法语、德语、葡萄牙语、俄语、中文、意大利语、土耳其语、越南语,以及另外 20 多种。
- 一个翻译服务。免费的 Google Translate 开箱即用;DeepL 有免费额度;OpenAI、Anthropic、本地模型(Ollama / LM Studio)以及任何兼容 OpenAI 的 API 都需自备密钥。Godot 游戏通常对白很多,因此 LLM(OpenAI / Anthropic)或 DeepL 对剧情文本的效果最好。
第 1 步:打开游戏文件夹
启动 RuneTranslate,点击新建项目,将其指向 Godot 游戏所在目录——即包含游戏 .exe 的文件夹(如果单独附带 .pck,也一并包含)。引擎检测会自动运行:它能识别可执行文件末尾的嵌入包签名、散落的 .pck 或一个 Godot 项目。你的原始文件绝不会被修改。
第 2 步:解包并恢复项目
RuneTranslate 会运行其内置的 GDRE Tools 组件来解包、反编译已编译的 GDScript,并把二进制场景转换成可读源代码。随后它扫描恢复出来的项目,列出所有可翻译的行——脚本中的对白与旁白,以及场景中的标签和界面文本——按文件分组。资源路径、节点名称和其他代码标识符都会被过滤掉,让你只翻译玩家真正会看到的字符串。
第 3 步:翻译
选择一个翻译服务并运行。对于剧情驱动的游戏,LLM(OpenAI / Anthropic)最擅长还原角色口吻,DeepL 处理旁白快速而干净,免费的 Google Translate 则适合短小的界面字符串。Godot 游戏常把对白以一长串行数组的形式存放在单个脚本里——一个“剧情数据库”——因此同一个角色名或地名会出现数百次。请一开始就把角色阵容和关键术语加入术语表,让它们在各处显示一致;参见 术语表入门。用 AI 润色器 做一次可选的处理,能修饰机器翻译常留下的生硬措辞。
第 4 步:导出翻译后的版本
点击导出。由于原始脚本是编译后的字节码,RuneTranslate 采用源码覆盖的方式:它把你的译文写入恢复出来的 .gd / .tscn 源代码,从包中删除已编译的 .gdc / 二进制 .scn,让引擎回退到散落的翻译后源代码,再重新打包一个新的 .pck——当包原本是嵌入式时,还会把它重新嵌入 .exe 的一份副本中。你的原版游戏保持不变;你会得到一份独立、可运行的翻译副本。
第 5 步:验证副本能运行
导出的版本依赖 Godot 运行时在加载时编译那些散落的翻译后脚本源代码,所以——和任何新引擎一样——请先运行一次导出的游戏,确认对白和菜单以你的语言显示,再拿去分享。如果某个脚本无法加载,那正是有助于我们加固它的那类反馈(见下文)。
已知限制
- 新加入且尽力而为。在重新分发前,请确认导出的游戏能启动且显示正确。
- 加密的包。有些游戏发布的
.pck用一个烧录在二进制里的密钥加密;这类目前还打不开。 - C# / .NET(Mono)游戏。RuneTranslate 专注于 GDScript;编译进 C# Godot 游戏逻辑中的文本不在支持范围内。
- 绘制在图像中的文本。作为美术渲染出来的标题或徽标是像素,而不是字符串——那是 图像文字翻译 的活儿,而非脚本提取。
- 非拉丁目标语言取决于游戏是否附带能真正渲染它们的字体。
它是全新的——请告诉我们哪里出了问题
Godot 支持是新增功能。Godot 横跨众多引擎版本和打包方式,我们并未见过全部。所以如果你把 RuneTranslate 指向一款 Godot 游戏,它却无法识别、无法解包,或者导出的东西无法启动,请反馈——游戏名称、它的 Godot 版本以及它的打包方式(嵌入式包还是散落的 .pck),正是最能帮助我们尽快加固它的信息。
下载 RuneTranslate,把它指向那款你一直想读的 Godot 游戏,试一试吧。想了解另一款现代引擎,接着看 Unity 上手指南。
