livemaker引擎游戏汉化流程
前言
前一阵子偶然上dlsite上瞅一眼,发现关注的好多社团都把自己的作品给下架了,不过比较喜欢的社团帰りの会2居然更新了新作,我记得每部作品流程都不长,突发奇想看看能不能自己试着汉化一下他们社团的作品,查了一下发现游戏是livemaker引擎做的,于是就开始找有没有大佬做相关的教程,Google了一下果然有,于是就开始折腾起来了,为了方便以后自己查询,写了这篇blog,主要基于CyanidEEEEE和shy2052两位大佬的教程与自己的摸索总结。
汉化准备
Pylivemaker github 成熟的livemaker解包工具
FontCreator 非开源字体编辑软件
fontObfuscator shy2052修改版 github 快捷制作字体
任意一款支持UTF-8的文字编辑器 笔者用的EmEditor
GraphicsGale 官网下载 用于编辑游戏内使用的图片素材
安装Pylivemaker
安装编译环境Python
Pylivemaker是基于python写的,所以需要安装Python,下载适合你系统的最新版即可
注意安装后需要配置环境变量,不想用代码配置的话请再次启动下载的python安装包,选择Modify
,将所需要的选上,包括pip
在cmd中使用python --version
可查询版本,如果提示python不是一个有效指令就说明没有配置好环境变量
使用pip安装Pylivemaker
pip是Python官方自带的应用商店,可使用pip install
指令安装相应软件
使用以下指令安装Pylivemaker
1 | pip install pylivemaker |
如果提示pip不是有效指令,请尝试安装最新的Python,或是检查上一步中Modify
是否选择安装了pip
,也可以试试使用python -m ensurepip --default-pip
重新配置pip
开始汉化
解包游戏文件
livemaker游戏文件一般都直接封装在exe
文件中,因此直接对exe
文件解包即可
有的exe可以直接作为压缩文件解压,我这个不行,所以我用的GARbro解的包
不过pylivemaker是支持解包的,但是它没有用户交互界面,因此需要使用cmd进行操作,先使用cd 游戏文件路径
进入游戏文件文件夹后,使用如下指令进行解包
1 | lmar x game.exe -o game_files |
game.exe
是游戏文件的名称,不要打错,game_files
是解包后的文件夹名称,可以随便起
提取原始文本
目前我找到有两种方法,得到的文件也不一样,哪个方便用哪个
提取为csv
解包后的文件夹中,应该有很多.lsb
格式的文件,文本就被打包在其中,一般来说最大的那个就是文本文件,返回cmd,使用cd指令进入解包后文件夹,使用如下指令即可解包出文本文件
1 | lmlsb extractcsv --encoding=utf-8-sig 你想要解包的文件名.lsb 随便起.csv |
Pylivemaker会将lsb
中的文本块部分抽出整合进一个单独的utf-8-sig
编码的csv
中,使用文本编译器打开csv文件后,你会发现首行会有ID,Label,Context,Original text,Translated text
这么一行格式提示,以每个,
作为分隔符分成五部分,告诉你每行文本的格式,Pylivemaker给你整合好的文本在每行原文后都已经为你留好了,
,在它后面填上翻译后的文本即可
注意!如果原文使用了” “并且分成了几行,汉化文本也需要按照他的原文格式书写,原文分成几行你就分几行,两行比如
1 | pylm:text:00000224.lsb:76:0,,,"ところでお前、 |
提取为Ins
直接使用指令
1 | lmlsb extract 你想要解包的文件名.lsb |
即可将这个lsb
中所有的文本块按块全部拆成单独的Ins
文件,更改每个Ins
文件中的文本即可,笔者认为效率没有提取成csv
高,因此没有用这种方法
将汉化好的文本封回去
在汉化完全部需要汉化的文本后,下一步就是要把汉化好的文本替换原文封回去了
刚刚使用extractcsv
提取为csv
格式的使用以下指令封回去
1 | lmlsb insertcsv --encoding=utf-8-sig 你解包的文件名.lsb 刚刚起的名.csv |
直接使用extract
提取为Ins
的使用以下指令封回去
1 | lmlsb batchinsert 你解包的文件名.lsb |
报错
不管是使用哪种方法,不出意料的话你会收到cmd一大堆的报错
仔细观察报错内容,你会发现它提示你某个字不是一个有效的CP932
编码的字符
这是因为livemaker里使用的是CP932(JIS)
编码的字符,很多汉字在里面是找不到的
为了解决编码问题,我查到的教程都是使用的替换文字法
解决汉字编码问题
原理
很多汉字不是都在CP932(JIS)
编码里找不到吗?那就换一种方法,我们来自己制作一种字体,把CP932(JIS)
编码里存在的部分用不到的生僻字的字形替换成我们要用到的汉字,然后再把汉化好的文本里相应的汉字替换成对应的生僻字,安装好自己做的字体后,相应的生僻字不就会显示成想要的汉字了吗?字体制作
- 字体生成
笔者使用的了shy2052修改后的fontObfuscator,可以快捷的生成想要的字体文件
在github上将代码打包下载下来,在base-font
文件夹中放入一个字体文件作为替换汉字字形的原型,将config.py
中的原始字体改成自己放入的字体,打开data
文件夹,hanzi.txt
中为替换后的汉字,kanji.txt
中为替换前的生僻字,大佬已经将自己整理好的很多都内置在里面了,可以按需更改,注意保持两个txt中字符数量相等。打开make_LiveMaker_font.py
,按自己的需求更改里面引用的替换的字符列表和名称,运行代码后将会在文件同路径下生成修改后的字体文件 - 修改属性
刚刚得到的字体是不能直接安装使用的,因为fontObfuscator生成的字体编码并不能在日文环境下使用,因此需要使用FontCreator对字体进行进一步的修改
使用FontCreator打开刚刚生成的字体文件,在最上面一栏选择字体-属性,在第一面下方的区域部分里有编码页的字符范围这一项,你会发现JIS/日文(932)
这一项并没有打上勾,所以此时的字体是无法在日文环境下使用的。打上勾后再修改一些你想要修改的,比如字体名称版本等等后确定保存导出字体即可
很多教程都是将字体名称修改成系统自带的MS Gothic
字体,然后安装覆盖系统自带的字体,但由于livemaker自带更改字体的功能,我汉化的游戏中也有相应的选项,所以我并没有将字体名称修改成系统自带的部分字体进行覆盖
- 字体生成
替换汉化文本内容
已经解决了字体的问题,与之对应的就是需要将已经汉化好的文本内不属于CP932编码的汉字替换成相应的生僻字就行,为了方便,我让Copilot给我写了个能够生成汉字和生僻字的对应表(因为我不会写python)
1 | import openpyxl |
使用前需要使用pip install openpyxl
安装需要的库
运行后即可在fontObfuscator根目录下生成一个记录了对应关系的xlsx文件,根据前面cmd的报错信息一个一个替换即可
如果是程序大佬还能根据xlsx文件写一个批处理文件一键替换,可惜我不会
替换完成后再重新封包就不会报错了
游戏图片素材编辑
我汉化的游戏使用的图片格式是.gal
,一般应用无法加载和编辑,通过GARbro也只是能看到内容,这个时候就要使用GraphicsGale了,在GraphicsGale中打开.gal
文件,导出为png格式编辑完后可以再通过GraphicsGale转换回.gal
文件,注意部分图片存在α通道,编辑图片时注意不要落下
游戏选项编辑
部分内容比如游戏选项文本设定等通过extractcsv
指令是提取不出来的,这个时候需要通过以下指令将其转换成可以读得懂的xml
(虽然我还是读不懂)
1 | lmlsb dump --encoding=utf-8 你想要解包的文件名.lsb --mode xml --output-file 随便取.xml |
找到想要修改的部分,记住所处的LineNo="XXX"
,使用如下指令编辑
1 | lmlsb edit 你想要解包的文件名.lsb XXX |
不过好像通过extrac
t指令提取的Ins
里直接可以改呢
游戏菜单编辑
理论上使用extractmenu
指令是可以提取出lsb
文件中菜单相关部分的内容的,具体指令如下
1 | lmlsb extractmenu --encoding=utf-8-sig 你想要解包的文件名.lsb 随便起.csv |
不过我试着对很多lsb
文件使用都提示没有找到菜单内容,该部分有待补充
测试封包
由于livemaker有优先读取外部文件的特性,你可以将修改好的文件以在exe
中的相对位置放在游戏根目录下,直接运行游戏即可生效
记住一定要安装字体并且在游戏中更改为自己制作安装的字体
安装字体前
安装字体后