教程:用通用汉化引擎汉化一个任意Renpy游戏
到目前为止,本通用汉化引擎依然需要配合预翻译包才实现汉化,这适合不大称得上“通用”,的确虽然用本通用汉化引擎可以大幅度降低汉化Renpy游戏的难度,但依然还是需要一些细节处理,才能得到理想的结果,自从这个帖子发布以来,我看到很多朋友自行汉化自己喜爱的游戏的兴趣浓厚,而且大家的动手能力也似乎都有一定水平,所以我觉得可以尝试做一期教程,让大家可以学会用这个通用引擎来自行汉化一些我未提供预翻译包的游戏。但是,毕竟游戏采用的技术各有各的复杂度,很难一套流程就能解决100%的难题,所以大家的预期不要太高,本教程的操作方法不可能对所有游戏有效,通常只适用于一些技术相对简单,实现套路很常规的视觉小说类游戏。当然本引擎的上限也是非常高的,例如实验室老鼠2这样的技术性超高的游戏,它也能实现到比较理想的效果,但这就需要深入研究技术细节,这就不是本期教程的内容了,本期还是先从入门开始,先汉化一些最简单的游戏。
本教程选取的范例游戏是
Stellar Dream [Winterlook]
1. 首先下载安装游戏,打上你喜欢的MOD,运行一下游戏确保正常
2. 在覆盖汉化包之前,首先要弄清楚这个游戏是采用了Renpy 7.x版本还是8.x版本,因为这两个版本分别采用的是Python 2.7和Python 3.9的编程语言,这两个版本的Python在语法上就是互不兼容的,所以必须采用选用对应的汉化代码
打开游戏目录下的lib目录,查看lib目录里的内容,如果你看到有一个"Python2.7"的文件夹,则说明使用的是Renpy 7.x版本的引擎,如果看到有"Python3.9"的文件夹,则对应是Renpy 8.x版本的引擎,对于Stellar Dream这个游戏,它的lib目录是这样的:
View attachment 4245194
说明它采用的是Renpy 7.x版本的引擎,这时我们先打开我们从
首帖下载的通用包,打开后看它的lib目录下的内容如下:
View attachment 4245196
可以看到通用包里包括了Pythen2.7与Python3.9版本的所有文件,所以这个通用包是可以通用于Renpy 7.x与Renpy 8.x游戏的。
但这里我要注意到一个细节:由于版本游戏原本的Renpy版本过旧的原因,其lib下的目录结构与新版的Renpy 7.x不一样!所以在将通用包的内容覆盖上去之后,我们需要将
py2-windows-x86_64这个目录,改名为老版本的
windows-x86_64,游戏才可以正常运行!这一步并非所有游戏都需要,采用较新版本引擎的游戏直接覆盖即可。
到这里,我们将通用包解压到游戏目录下,然后删掉原本的windows-x86_64目录,将py2-windows-x86_64目录改名为windows-x86_64目录,删除那个StellerDream-32.exe避免错误使用,通用包安装完成。
3. 安装引擎包,引擎包我上传在
本层附件里,打开后有7.x和8.x两个目录,选择游戏对应的目录(本游戏应当选择7.8.3),打开后,将里头的renpy目录复制到游戏目录,覆盖掉游戏自身的renpy目录即可。
4. 运行“设置为中文”脚本,在文件夹里双点这个脚本文件运行即可,看到黑窗提示后,进入游戏,无论汉化正常与否,退出游戏即可。
5. 打开游戏的game目录,你会看到两个自动生成的文本文件,"game_names.txt"与"game_variables.txt"。这是两个比较重要的文件需要我们参与处理,下面分别讲解这两个文件的用法:
game_names.txt记录了汉化引擎在游戏中检测出来的人物(不一定检测完整),每一行记录了一个名字,对于在这个文本里记录的所有名字,有以下功能:
- 句子中的这些名字在翻译前被替代为ZSTD1101这类的符号,交给云端翻译,然后再将译文中的ZSTD1101还原为名字的译文,所以这些名字的翻译在每次翻译中都将保持统一
- 替换符号后可以节约翻译调用次数,例如句子“Hi, Mike"与句子"Hi, Jack"都将被替换为"Hi, ZSTD1101",所以将作为模式只被翻译一次,每次套用不同的名字将不再调用云端翻译。
对于Steller Dream来说,其自动检测的名字列表如下:
Code:
Robot
Pilot
Tom
Cook
Rose
Celine
Amber
Waiter
Victoria
Qhov'iny
Ingrixa
Guard
Queen Marena
Boruda
Canary
Merchant
Prisoners
Scout
Female Scout
Announcer
Vr'ina
Estina
Caste
Mayor
Losca
Helgi
First
Kix
Marvin
注意当中并非所有名字我们都希望替换成特殊符号,这样会使机翻无法理解单词的含义而影响句子的翻译质量,对于我们不想作为专有名词而进行替换的名字,我们修改game_names.txt在这些名字前加"!"告诉翻译引擎,不要将该名字转换为专有名词,修改后的game_names.txt如下:
Code:
!Robot
!Pilot
Tom
!Cook
Rose
Celine
Amber
!Waiter
Victoria
Qhov'iny
Ingrixa
!Guard
Queen Marena
Boruda
Canary
!Merchant
!Prisoners
!Scout
!Female Scout
!Announcer
Vr'ina
Estina
Caste
!Mayor
Losca
Helgi
!First
Kix
Marvin
保存game_names.txt,现在可以正式开始游戏了,运行StellerDream.exe开始运行游戏。
View attachment 4245235
前面说到另一个重要的文件game_variables.txt,该文件内记录了翻译引擎所遇到过的游戏中要求翻译的变量。在首次运行后,该文件的内容大致如下:
Code:
{
"[jackname]": false,
"[text]": false,
"[marianame]": false,
"[config.version]": false,
"[message!tq]": false,
"[page]": false,
"[casscen3101]": false
}
方括号内为变量名,最后的布尔值代表着是否直接使用变量原始内容,true代表直接返回原始内容,false代表将该变量的内容翻译为中文
有时一些变量的内容被翻译为中文会导致游戏出错弹出,这时可以打开该文件,最后一个被添加的变量通常就是导致出错的变量,将其改为true有可能可以修复错误。
到这个程度,游戏汉化就完成了,运气好你就已经可以一直玩下去,但,由于没有使用任何预翻译内容,所有的翻译请求都调用云端免费接口,而免费接口难免不稳定,在调用失败的时候,你就会看到显示的是英文原文,翻译失败的句子每次重新显示都会尝试再次翻译,翻译成功的句子将会写盘,下次遇到直接调用本地翻译结果。
另,由于我们没有覆盖和修改除了引擎之外的任何游戏文件,所以,当这个游戏下次升级时,你只需要直接将新版游戏的game目录覆盖过来即可,游戏与汉化包没有任何重复文件,所以不用担心会破坏汉化,而新版的新内容全部都是云端自动翻译,所以完美兼容。
如果你实在忍受不了免费接口经常失败,本引擎也支持你自行购买付费API令牌,搜彩云科技开放平台,注册登录,并购买令牌后,在游戏的game目录下创建一个caiyun_token.txt的文本文件,在首行贴上你的令牌字符串即可。即使你提供了付费API令牌,翻译引擎也依然首先调用免费的接口,仅在免费接口失败的情况下,再用付费接口进行重试。BTW:我和彩云没有半毛钱关系,他们没给我任何好处。