我为什么开始折腾这个“播种农场”?
就是闲不住。前阵子迷上了一种像素风的农场游戏,但找来找去,不是那种氪金巨坑,就是翻译得一塌糊涂。尤其这个叫《播种农场》的游戏,玩法简单,画风也对胃口,就是语言全是日文夹杂着一点点机翻的英文,那叫一个难受。我看了一眼现有的中文版,那简直是AI发疯,连道具名字都能给你翻出七八个意思来,根本没法玩。
我当时就琢磨,反正周末也没啥事,不如自己动手,把这玩意儿彻底汉化一遍。不是为了分享,纯粹就是为了自己玩得舒服。我这人就这样,一旦决定干一件事,就算要脱层皮,也得给它扒拉干净了。我当时的想法很简单:不就是文本替换吗?能有多难?
准备工具:第一步就差点把我劝退了
我决定了,要汉化一个安卓游戏,第一步肯定是要拿到它的“骨架”。
我先是找到了APK安装包,然后跑去网上搜那些“傻瓜式”的汉化教程。结果发现,网上的东西都太老了,要么工具链早就失效了,要么就是只能解包那种特别简单的老游戏。我试着用了几个在线解包工具,要么报错,要么解开一看,文件结构乱七八糟,根本找不到文本资源在哪里。
那行,硬着头皮,我决定走正规流程:
- 第一件事:我跑去下载了Java环境,然后是万恶的APKTool。
- 第二件事:为了方便查错,我还装了一个叫Android Killer的玩意儿,虽然它名字很嚣张,但用起来是真的麻烦。
光是把这些基础环境配我就折腾了整整一个下午。各种环境变量配置不对,各种路径报错。我当时差点想砸电脑,心想为了个破农场游戏,至于吗?
大海捞针:文本文件到底藏在哪?
环境搭好了,我就开始解包。解包过程倒是顺利,但是!问题来了,我找不到文本文件!
通常游戏文本都在`assets`文件夹,或者干脆就是放在资源包里。我翻遍了文件夹,只看到了一堆图片、音频,还有上万个`.smali`文件——那是代码逻辑,我可不敢乱动。
我当时几乎要放弃了。
但我又回想起来,我以前做过一次简单的APP逆向,知道有些开发者会把文本资源藏得特别深。我当时就静下心来,用关键词搜索工具,对整个解包后的文件夹进行暴力搜索。我搜了游戏里出现频率最高的几个英文字母,比如“FARM”、“SEED”。
你猜怎么着?在一个叫`res/raw`的文件夹里,我发现了一个被加密过的压缩包。我当时心跳都加速了。解密密码居然是游戏的发行年份,简直是白送!打开一看,里面躺着一个巨大的JSON文件,里面密密麻麻全是日文和英文的文本字符串!
那一刻,我感觉自己像个侦探破了案一样。
开始动刀子:翻译和回封装的煎熬
文本是找到了,但数量巨大,足足有五千多行。我不能指望机翻,很多农场特有的词汇机翻出来简直是灾难。我硬着头皮,结合我大学学的那点半吊子日语,开始逐行翻译。
这可不是替换这么简单。我翻译完第一批文件,用UTF-8编码保存,然后开始用APKTool回封装。命令是打下去了,屏幕上跑了一大堆代码,结果……报错了。
错误代码是“Manifest XML文件格式错误”。我压根就没动Manifest!我查了半天,发现是因为我在编辑文本时,不小心改动了某几个特殊字符的格式,导致APKTool在回编时校验失败。
我不得不重新来过,每次只修改一小部分,然后回编测试。这个过程重复了至少十几次,每次签名、安装、打开,崩溃,再回编。
终于,在第三个晚上,我成功地回编并签名了一个可以安装的版本。当我忐忑不安地打开游戏,看到屏幕上熟悉的中文提示“欢迎来到播种农场”时,我激动得差点跳起来。
的结果:值了,就是有点丑
虽然成功了,但新问题又来了:字太长了。我翻译得太实诚了,很多名词在英文界面只占一小块,但用中文一显示,直接就超出屏幕边界了。
没办法,我又花了半天时间,重新调整了所有长文本的措辞,尽量精简,确保它们能在界面上正常显示。那段时间,我走路都在琢磨“如何用四个字表达‘高性能可持续生长有机肥料’?”
我终于有了这个完全属于我自己的《播种农场》汉化版。虽然过程痛苦,工具用得手忙脚乱,但至少现在我玩游戏时,不用再费劲去猜那些道具到底是什么了。
我这人就是这样,不追求完美,只追求“能用”,而且必须是“自己搞出来的能用”。这实践记录,就是我周末折腾出来的一点点成就感。