天天动画片 > 八卦谈 > Galgame解包汉化入门教程

Galgame解包汉化入门教程

八卦谈 佚名 2024-04-30 00:35:05

大家好,机缘巧合下,自己尝试解包汉化了一款Galgame,《重返蓝鲸岛》。

游戏发布以及视频教程地址:

https://www.bilibili.com/video/BV1sd4y1V7fs/



下面简单介绍下解包和汉化的方法。由于我也是第一次做,所以水平有限,只能带大家入门。如果看完我的视频和专栏能够有更多人投入Galgame汉化工作,让更多的中国玩家能够不受语言阻隔玩上优质游戏,那么本视频和专栏就有意义了。

后续都以《重返蓝鲸岛》举例。这次的汉化其实不能说是汉化,因为官方有中文版,但是不带语音。后续升级的语音版本只有日文语言有。所以我才想尝试将中文版的台词和日文版的语音结合,制作中文语音版。不过实际上我也是把几十万的台词一句一句替换的,所以和真正的解包汉化过程是一致的,只是省去了翻译的工作(其实中文版还缺两块,是我自己翻译的...)


<1> 解包

解包如果成功,那么可以说整个工作就成功了一半。这里我也只做了一款游戏,经验有限,所以我只给大家列举一些工具,大家可以自行尝试。


  • XP3Viewer —— KiriKiri

  • KrkrzExtract —— KiriKiri

    https://github.com/xmoezzz/KrkrzExtract

  • GARbro —— KiriKiri、Yu-Ris等

    https://github.com/morkt/GARbro

    https://github.com/AyamiKaze/GARbro(从原始仓库fork,2021年最后更新)

  • AssetStudio —— Unity

    https://github.com/Perfare/AssetStudio


打开重返蓝鲸岛的目录,能够看到文件结构如下,其中主要的文件大小(字节)都集中在xp3文件中。

对比中文版和日文语音版,一个600MB,一个1.6GB,看起来就应该是差语音文件了。


使用二进制比较工具,其实只有xp3文件有差异,而这个看大小就是资源文件,应该是所有资源文件都打包到这里面了


Google了一下,xp3文件是日本脚本引擎KiriKiri使用的文件,通常用于制作视觉小说; 存储可能包含文本,图像,音频和其他数据的资源文件; 用于打包在游戏过程中加载的游戏资源。

也搜索了一下对应的解包工具,XP3Viewer已经十年了,没人维护不再适用。新项目GARbro经测试可以使用。

选择提取xp3文件,先尝试不加密


发现提取直接成功了,nice,到这里就成功一半了。小厂游戏格式比较简单,如果有些游戏进行了加密,就需要自行尝试加密方式。


然后再尝试打包,打包后新的data.xp3文件,打开游戏也正常,代表操作可逆,证明了文件修改的可行性。注意打包时要保证目录结构以及加密方式(如果有的话)和原先一致。


<2>定位资源文件

第二步就是要找到我们需要的文件,比如这个例子,我最开始的想法是找到日文版的语音文件,看是否能够移植到中文版中。所以我将中文版、日文版都解包后再进行二进制比较,能够看到字体、图片等多项差异。其实从这个目录名字中就能看出来:音乐、图片、声音、视频等的位置。


其中sound文件夹下的应该就是语音文件了


然后system文件中应该是游戏的程序文件


可以看到Config.tjs文件中就有标题、语言、字体等设置,这个语法看着像JS。嗯,js up貌似就写过很简单的,不记得了。



这个Menus.tjs看着像菜单界面,看起来菜单里面的文本是直接硬编码在程序中的。


一开始没找到语言文件,以为是个文本文件,后来发现是在scenario目录下,其中是台词,然后日文版多的参数看起来就是语音文件的播放了。


所以这么看下来,将语音移植到中文版中工作量会比较大,需要注意语音播放时机、文件名等问题,而且由于语音文件不能直接看到,是否出错也不好检查,还需要再去播放。在浏览过程中发现软件版本中文版是2,日文版是3,代码逻辑也有不少差异,应该是因为原先没有制作语音相关的功能。比如语音音量调节等,中文版就没有。所以修改思路,尝试将中文台词替换到日文版中,这样只需要将所有能看到的中文都移植到对应的位置,理论上就OK了。每一步操作都可以在文本编辑器中直接检查,也方便。

确定思路后,那么也就是说要修改的文件应该就是scenario目录下的这些台词文本文件。可能配合要修改一些config之类的代码文件,来加载中文字体。


<3>汉化/修改文件

将中文台词替换到日文版文件中,保存,重新打包,进行测试。


测试发现,替换生效,但是字体应该是有问题,所以存在乱码。


搜索字体,找到加载的位置,可以看到在Config中有配置,在Override文件中仍会加载字体


将中文版中的字体文件,拷贝到相应位置,并增加中文字体的加载。


之后就正常了。


后面尝试将人名汉化,但是又发现,台词的人名部分,汉化后没有加载。


然而中文版的xp3文件就能正常显示,说明哪里肯定有差异。


再找差异文件,原来”黑发の女性“是个变量,真正定义内容的地方在”namae.ks”,所以台词文件中的人名保留日文,在namae文件中修改名字为中文即可。


再测试就正常了,顺道也改了一些字体设置。


所以之后就是做一些重复的工作,将将近100个台词文件中每一句台词都修改完。

再往后发现设置中的选项是直接画在图片上的,不能用文本汉化。那么久掏出PS进行修图吧,选一个类似的字体,叠在原先的图片位置上进行汉化。树莓人(数字媒体专业)必备技能。


<4>重新打包测试

将需要的文本、图片等所有资源,都搞完以后,重新打包进行测试。发现一些小bug,无伤大雅,可以参照下一章节进行问题定位。

总之测试完成后就大功告成了。


<5>问题定位

想要定位问题不可避免的要读代码了,不过就这个游戏来看,代码量比较小,代码结构也比较清晰,所以基本上使用文本搜索Find in files功能就能定位到想要找到的代码(比如NotePad++,VSCode等文本编辑器都有此功能,也可以使用linux下的find命令),也不需要debug调试。

举两个栗子:

1. 我想要在启动页面仿照其他汉化组,增加汉化说明页

所以我搜索了启动页的logo图片rogo.png,找到其调用位置


在后面加上我自己制作的图片


游戏启动就会播放了

2. 第二个问题是我发现load以后游戏程序的主标题会重置为“重返蓝鲸岛”,而不是我配置中设置的文本

由于只有load会有这个问题,new game就不会,所以猜测是哪里有bug。从load的文件一步步边猜边找,最终找到了load后会执行MainWindow的InternalRestoreFlags方法,其中caption变量的赋值没有直接使用Config文件中我设置的System.title。所以我直接按照主窗口初始化的逻辑,从System.title变量取值


问题就修复了


<6>总结

总得来说,整个汉化过程中,如果不考虑修改bug,其实还是比较简单的。只要选对了工具,能够正常解包,那么就成功一半。之后只要对需要的文本、图片等资源进行汉化即可。只有需要修改原有逻辑的地方才需要通过代码定位,相对复杂一些。但是只要善用Find in files,找到资源使用的位置,然后认真仔细地找即可,没有太多复杂的代码设计。



本文标题:Galgame解包汉化入门教程 - 八卦谈
本文地址:www.ttdhp.com/article/55919.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们