首页 游戏问答 正文

鲁迪安卓汉化

为什么非要自己汉化鲁迪?

我这人有个毛病,看上一个东西,要是没有中文版,就浑身难受。前段时间无聊,在Steam上看到了《鲁迪的奇妙冒险》(Rudy's Fantastic Journey,随便起个名),这游戏画风看着就对胃口,典型的日式独立RPG,但是安卓版在国内根本没汉化,或者说,有几个网站声称有,但进去一看,要么是广告要么是病毒包,简直是TM骗人的。

本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址(www.game519.com)

我当时就来气了。PC版虽然有民间汉化,但谁愿意一直坐电脑前玩这种打发时间的小游戏?我就是想躺在沙发上,用手机慢慢磨。既然没人做,我就想着,老子自己来搞定。说干就干,这事儿就这么开始了,完全是因为一股子执拗劲儿。

我先是跑去把PC版的中文资源文件给出来了。这个不难,就是一堆TXT文件,里面全是对话和道具描述。这些就是我的“弹药库”。

本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址(www.game519.com)

第一次摸底:定位文件

我得把安卓的APK包给搞到手。从外网下了一个最新版的鲁迪安卓安装包。拿到手之后,我没急着反编译,先是把它当作一个普通的压缩包用解压工具给打开了。

我期望能看到像PC版那样,直接就能找到一个叫“Text”或者“Resource”的文件夹,里面塞着TXT或者JSON。结果?文件结构乱七八糟,图片资源倒是挺全,但文本文件全被打包成了几个巨大的,后缀稀奇古怪的文件。一看就知道,不是直接能替换的。

我心里清楚,这玩意儿肯定是经过某种混淆或者加密了。我决定采取更暴力的方法,直接反编译

  • 搬出了老伙计——ApkTool。
  • 把APK文件扔进去,咔咔一顿跑。
  • 跑完之后,生成了一堆Smali代码和资源目录。

看到那些Smali代码,我头都大了,像天书一样。我知道我不是来改逻辑的,我是来改文本的,所以我主要精力放在了资源文件夹里。我开始,用游戏里最常见的几个英文短语作为关键词。我摸到了一个名叫`assets`的目录,里面藏着一个看起来像资源索引的文件,名字挺长,像是Unity或者某个特定游戏引擎的资源文件。

硬啃资源文件与首次失败

确定了目标文件之后,我就开始工具。这种游戏引擎的资源文件,通常需要特定的编辑器才能打开。我在Github上搜了一圈,果然找到了一个能解析这个特定格式资源文件的开源工具。

我把那个大文件塞进工具里,好家伙,里面密密麻麻全是英文和日文的原版文本。这下我的弹药库终于派上用场了!

接下来的活就是纯粹的体力劳动了:

第一步:替换文本。我把PC版对应的中文文本一行一行复制粘贴过去,替换掉原来的英文。我当时还很傻,为了保持长度一致,有些句子我还得调整翻译,弄得语句特别别扭。

第二步:重新打包。文本都弄完了,我用ApkTool又把所有东西回编译回去,生成了新的APK。

第三步:签名安装。由于是修改过的包,必须重新签名,不然安卓系统根本不认。我用自己的调试证书签了名,然后兴冲冲地安装到手机里。

结果,打开游戏,Logo倒是出来了,但一进主菜单,Duang!直接闪退!我草,瞬间心凉了半截。

解决字符编码这个鬼问题

闪退让我琢磨了整整一天。我感觉程序逻辑应该没动,肯定是资源文件出了问题。要么是我的中文字符串太长,导致程序读取偏移量出错;要么就是编码问题。

回去翻了好多论坛,尤其是关于这个特定引擎汉化的帖子。发现很多人都提到一个坑:如果替换的文本里含有特殊的中文符号,或者编码格式变了,就算内容长度一样,也容易导致程序崩溃。

我一拍大腿,我那会儿用的是系统自带的那个记事本工具来复制粘贴的,那玩意儿对UTF-8编码处理得很烂,很有可能就是它搞砸了编码。

我立刻换了一个专业点的编辑器,确保所有替换进去的文本,编码格式都是统一的、纯净的UTF-8。然后我把整个替换过程又重复了一遍,这回我谨慎多了,尽量避免特殊字符。

再次回编译,签名,安装。

这回点开游戏,心里七上八下的。当看到主界面上清晰地显示出“开始游戏”四个字时,我差点没跳起来。赶紧进去跑了一段剧情,对话框里流畅的中文,没有乱码,没有闪退,完美!

为了这个鲁迪的汉化,我整整折腾了五天。虽然过程像受罪,但是看着躺在手机里,能随时打开的中文版,成就感那真是TM没得说。这玩意儿,以后我就是躺着玩,也值了。