折腾的起因:手痒想玩日系游戏,奈何语言不通
就是喜欢自己动手搞定那些别人觉得麻烦的事。之前看了一部日系游戏的介绍,名字就叫《Dark Elf》,画风和剧情都对胃口,但问题来了,官方只放了日文和英文的PC版,安卓手机上想玩,要么是纯英文的,要么干脆没有。我就想,反正闲着也是闲着,不如自己把这安卓版给汉化了,也算是给跟我一样喜欢这游戏的朋友们谋个福利。
第一步当然是找原材料。我费了老大劲,在几个国外论坛上捞到了一个最新版的安卓APK文件。当时拖到电脑里一看,文件包不小,估计里面的资源文件挺复杂的。我心里就有数了,这肯定不是那种把文本文件简单放在一个txt里让你随便改的低端货。
第一次拆解:工具上阵,摸清底细
想汉化,第一件事就是得把这个APK文件给扒开,看看里面到底藏着什么玩意儿。我启动了我的老伙计——那个专门用来反编译和重新打包的工具集。把APK文件一拖进去,工具就开始吭哧吭哧地工作,很快就把所有的资源文件和程序代码给拆解出来了。
这一拆,我发现这游戏用的是某个挺常见的视觉小说引擎(为了避免麻烦,咱就不说具体名字了),这种引擎的文本文件,通常都是编译过的脚本文件,藏得比较深。我开始在拆出来的文件夹里一顿翻找,目标是`assets`或者`res`目录。翻了半天,找到了几个看着像脚本的`.rpyc`文件。但这种是编译好的,直接改肯定不行。
没办法,我只能把注意力转向了更底层的语言包。最终在某个资源文件夹深处,我定位到了一堆`.json`格式的文本配置和一堆看起来是加密的脚本。这可把我气坏了,游戏厂商为了防止盗版和修改,真是花了不少心思。
- 定位难点:原始文本被混淆了,直接搜索关键词根本找不到。
- 初步解决:我用了一个专门解密视觉小说脚本的小工具(也是找了半天才找到的),把那堆加密脚本文件给跑了一遍。
跑完之后,呼一下,几百个明文的文本文件就出来了,里面密密麻麻全是日语和少量的英文。这下好了,总算是把文本给揪出来了。
文本替换:乱码和字库才是大麻烦
文本是有了,接下来就是翻译和替换。我找了几个朋友一起帮忙,把这十几万字的日文给翻译成了中文。翻译完后,我满怀信心地把所有的中文字符替换回了原来的文本文件里,然后准备重新打包。
重点来了,这才是汉化的核心难点。
我用工具把所有文件重新组装回了APK格式,然后签名,安装到我的安卓测试机上。一打开游戏,图标出来了,点进去——白屏!或者说,文字区域一片空白,背景图倒是能显示。我当时就想,糟了,肯定是字库没搞定。
这种国外游戏,原版字库里压根就没有中文汉字的支持,就算你把文本替换成了中文,系统也认不出,它就直接显示空白或者方块乱码。
为了解决这个问题,我不得不再次拆开文件包,找到原版字体文件(通常是`.ttf`或者`.otf`格式)。我找了一个支持全套简体中文的开源字体,把它命名成跟原版字体一模一样的文件名,然后替换进去。但是,有些引擎为了压缩文件大小,字体文件会做特殊处理,直接替换进去会导致整个程序崩溃。
折腾了整整一个晚上,我尝试了三种不同的中文字体,每次替换都要重新打包、签名、安装、运行。试到第四种的时候,终于,画面一闪,游戏里原本是日文的地方,清晰地显示出了漂亮的简体中文!当时那种成就感,比发工资还让人高兴。
收尾工作:打包、签名和分享
文本和字体这两个大山都搬走了,剩下的就是一些收尾工作,但也不能马虎。
- 图片本地化:有些UI界面,比如标题画面、按钮上的“开始游戏”之类的,是直接嵌在图片里的。我得用图像编辑工具把这些日文图片提取出来,把日文擦掉,换上中文,再重新塞回APK里。这活儿虽然费眼睛,但技术难度不大。
- 最终测试:我跑了几个关键的存档点,确保所有对话、物品说明、系统提示都正常显示中文,并且没有出现程序闪退的情况。
一切搞定之后,我把最终的汉化APK文件压缩看着这个完全由自己一手捣鼓出来的、可以在手机上顺畅运行的《Dark Elf》中文版,心里真是踏实。虽然这过程坎坷,费时费力,但这就是我们这些喜欢折腾的人的乐趣所在。我把这个成品包传到了我的分享渠道上,希望更多人能玩得开心。毕竟独乐乐不如众乐乐,我的实践记录,能帮助到别人,那才是真正的价值。