从零开始折腾失忆安卓汉化:一个老玩家的自我拯救记录
我最初压根没想过要自己动手去搞这个游戏的汉化。这玩意儿本来就是个小众日系文字游戏,我纯粹是看圈子里的人一直喊着要玩安卓版,但官方那边屁事儿多,就是不出,或者出了也是阉割版,收费还贼贵。我寻思,不就是个文件转换加翻译的事儿吗?老子自己来。
我的动手逻辑一直都很简单粗暴。既然要干,就得把所有能用的东西都搬出来。我翻箱倒柜,把我那台老掉牙的Windows 7笔记本给挖了出来,里面还装着我好多年前搞PSP汉化留下来的工具包。这些工具虽然老,但对付这种只改文本的小玩意儿,够用了。
第一步:抓文件和拆包
我得把日文原版的安卓安装包(APK)搞到手。这个过程比想象中麻烦,花了半天时间才在一个犄角旮旯的论坛上摸到源文件,愣是没带病毒。拿到手之后,我就开始执行第一个操作:拆包。
我用那个专门干这活儿的反编译软件,把APK像剥洋葱一样一层层剥开。好家伙,打开一看,里面的文件结构真是一团浆糊。光是资源文件夹就几十个,各种加密文件混在一起。我得找到那个藏着游戏核心脚本和对话文本的宝贝疙瘩。我尝试了几个常见的路径,比如assets或者res,结果发现它妈的这游戏设计者真是人才,把文本文件藏在了一个叫“data/blob”的文件夹里,用一个不知名的加密方式包着,后缀名我都没见过。
- 定位核心文件:这是最耗时间的一步。我尝试了用文本编辑器直接暴力搜索日语关键词,结果电脑跑得像拖拉机。
- 解密尝试:试了三四个常见的解密脚本,全都失败了。发现,它压根就不是常见的AES或者RSA,而是用了一个非常老土的XOR异或加密。我花了两个小时,自己写了个超简单的Python脚本,把那个blob文件硬是给撬开了。
第二步:痛苦的文本提取与翻译
文本撬开后,出来的是一堆乱七八糟的字符,但总算能看到日语原文了。我把这些文件一股脑儿导出来,整理成Excel表格。为啥用Excel?方便对照,也方便让我的几个朋友帮忙校对翻译。我可没那功夫一个字一个字自己敲出来。
真正的痛苦,是从翻译开始的。
这游戏里的对话,句子长得吓人,而且有很多生僻的日式表达。我一边用翻译软件大致搞明白意思,一边又得靠自己那点破日语底子去润色。更要命的是,安卓游戏的文本框大小是固定的。中文一个字占的宽度,比日文要大得多。如果我翻译出来的句子太长,它就会溢出文本框,要么被截断,要么直接让游戏崩溃。
我基本上是翻译十句,就得跑回游戏文件里改一次行宽和字号设置。那段时间,我的眼睛都快瞎了。我学会了一个新技能:在不修改底层代码的前提下,如何通过调整文本文件的格式,硬生生把一个长句子分成两行,并且让它看起来自然。这真是体力活,不是脑力活。
第三步:重建、签名和无数次崩溃
文本内容和长度都搞定后,就是重新打包了。我把修改后的文件塞回原来的位置,然后用那个反编译工具的“重新编译”功能,把它们重新整合回一个新的APK文件。
每次重编译完,系统都会提示少这个文件、那个权限。我得去改那个叫*的文件,把缺失的权限一个个补上去。光是这一步,就让我跑了不下十次。权限问题搞定后,新的问题来了:游戏包没有签名,安卓系统不认它,根本装不进去。
我拿出我的数字证书工具,给这个新的APK文件打上自己的私人签名。签名成功,安装成功!
我怀着激动的心情点开游戏。开头动画完美播放,我心想稳了。结果刚进到第一段对话,妈的,屏幕一黑,闪退了。我骂了一句,知道肯定是哪个字符编码没对。从UTF-8到GBK,再到各种乱七八糟的编码方式,我又折腾了两个通宵,才找到一个能让它稳定运行的编码格式。
最终,当我看到那个熟悉的开场画面,配上流畅的简体中文对话时,那种成就感真是没法说。前前后后差不多花了快一个礼拜的业余时间,从一个完全看不懂的日文包,变成了一个可以在我的旧平板上完美运行的汉化版。虽然过程粗糙,工具老旧,但结果是好的。这就是我喜欢自己动手的原因:不依赖别人,自己想要什么,就自己造出来。