平时就喜欢躺沙发上玩点东西,电脑前坐久了腰受不了。之前在电脑上玩那个《美德》,故事是挺对胃口的,但PC版非得坐在桌子前,感觉那味儿就不对了。寻思着,既然有安卓版本,为啥不自己给它弄个汉化,然后躺床上慢慢玩?
起心动念:躺着玩,才是正道
这游戏汉化包网上早就有了,但那些汉化大多都是针对PC版本的。安卓版那边的汉化,要么是老版本,要么就是缺斤少两的机翻。既然大家都没好好干,那我就自己动手折腾一下,把最新的PC汉化文本移植到安卓版上。
说干就干,我先去把最新的安卓安装包(APK文件)找来了。这玩意儿就像个密封的罐头,要动里面的东西,得先把罐头打开。
- 第一步,获取干净的原版APK。找了个相对靠谱的地方抓下来,确保没有被人插其他乱七八糟的东西。
- 第二步,找到PC版最新的汉化文本。这个是核心,感谢那些早期的汉化大佬们把字都翻译好了,我只要当个搬运工就行。
拆包翻找:像个老鼠找米一样
光有罐头和米不行,得知道米放在罐头哪个位置。我把那个APK文件往工具里一扔,它立马就露馅了。安卓游戏,特别是这种用Unity或者Ren'Py做的,它的文字和图片资源通常都藏在特定的文件夹里。
我的目标很简单:找到那些控制对话、剧情的脚本文件。这游戏多数的文本都在LUA脚本或者特定的JSON文件里。我一个个文件夹翻过去,费了点劲,终于在一个叫“Assets”的地方找到了看起来像资源包的文件。这些文件名字都奇奇怪怪的,什么`*`,一看就知道是Unity的套路。
然后就是破译这些资源包。我得把这些包给“烤”出来,让它把里面的文本文件吐出来。这个过程说白了,就是用工具把它们变成能看懂的文字。
定位文本是最大的麻烦:
- 很多时候,文本不是纯文本格式,而是混在代码里的。
- 版本不同,文本的ID和行数可能都对不上。
- 我把PC版的文本文件拿过来,一对比,果然,安卓版的文件结构跟PC版的不完全一样,像是一堆打散了的积木。
我花了好几个晚上,对着两个版本的代码,一行一行地比对,把PC汉化文本中新增或者修改的部分,重新整理,确保它们能够匹配安卓版游戏脚本里对应的ID和位置。这活儿真是又枯燥又费眼睛,感觉比上班还累。
移植塞入:修修补补一团麻
文本对齐了,接下来就是把这些翻译好的文字,像灌香肠一样,重新塞回安卓游戏包里去。这个环节最大的坑,就是字符编码问题。
很多老游戏或者这种独立游戏,它对中文支持不太友直接把UTF-8编码的中文文本塞进去,游戏启动可能直接就崩溃,或者显示出来一堆乱码的问号。我试了好几种编码格式,GBK、ANSI、UTF-8带BOM的都试了一遍,发现,它吃的是某种特殊的UTF-8格式,我得用工具强行转码。
把文件替换回去后,新的问题又来了——字体问题。安卓版可能压根儿就没带中文字体,或者带的字体很小。如果不解决字体问题,就算文字正确显示了,也会因为缺少字符集,导致某些生僻字变成方框。
字体处理:
- 找了一个能支持大部分中文常用字的字体文件(TTF格式)。
- 把这个字体文件塞进资源包里,并且修改游戏设置文件,告诉它:“以后显示中文,都用我这个新的字体。”
- 还要考虑到中文显示的长度。汉字比英文占地方,一行字在英文里正换成中文可能就溢出屏幕了。我必须得微调一下显示对话框的大小,或者对某些特别长的台词进行手动换行处理。
重新打包与大功告成
所有文件都调整文本也重新塞回去了,字体也换了。现在要做的,就是把这个被我动过手术的APK,重新“封印”起来。
安卓系统很敏感,你随便改动了安装包里的东西,它会觉得这个包被人动了手脚,不安全,拒绝安装。我必须给这个修改后的APK文件重新签名。
找了个签名工具,生成了一个新的证书,对着APK文件一顿操作,重新打上了我的私家印章。这下,安卓系统就认了,觉得这是个新的、合法的安装包。
我赶紧把这个新的汉化版APK传到我的大平板上,安装,启动!
第一次启动,黑屏,立马崩了。赶紧回头去翻日志,发现是某个资源文件在替换的时候路径写错了。修复路径,重新签名,再次安装。
第二次启动,成功进入主界面!点击开始游戏,对话框里的中文清晰可见,字体大小合适,没有乱码,没有方框。我赶紧躺到沙发上,舒服地拿着平板,美滋滋地开始我的美德之旅。前前后后折腾了差不多五天,总算是把这件麻烦事给搞定了。
虽然这听起来很麻烦,但自己动手,丰衣足食。看着自己亲手移植的汉化包在平板上流畅运行,那份成就感,可比直接下载别人做好的大多了。