引言
标题里的「富婆妹」指 窗社(Madosoft / まどそふと)的作品 常轨脱离 Creative1, 因男主有个 富婆妹妹 而得名。FD 名为 ハミダシクリエイティブ凸。
虽然标题取得很大,但其实就只是保证人名和部分专有名词一致而已,技术含量约等于 0, 不然这辣鸡机翻看着实在头大,还不如拿 VNR 用腾讯云的 TMT。
分析
从游戏主目录的 hamidashitotsu.pfs
封包可以看出 FD 采用的是 Artemis Engine
(虽然游戏启动界面就写了),提取资源非常简单,
而且文件均采用 UTF-8 编码,免去了 Shift-JIS 之类编码的字库问题。
最关键的是,Artemis 可以 免封包读取,也就避免了和游戏引擎斗智斗勇的环节,
这也解释了为什么 11 月 25 号游戏发布当天就有补丁。
先观察补丁的目录结构,浅显易懂,script
目录下的文件就是需要修改的脚本了。
$ tree ./
./
├── font
│ └── SourceHanCodeJP-Medium.otf
├── script
│ ├── 01_妃愛01_1.ast
│ ├── 01_妃愛01_2.ast
│ ├── 01_妃愛01_3.ast
│ ├── 01_妃愛02.ast
│ ├── 01_妃愛03.ast
│ ├── ...
│ ├── 01_妃愛15_h04b.ast
│ ├── 02_華乃01.ast
│ ├── ...
│ ├── brandlogo.ast
│ ├── pack.ast
│ ├── scene01.ast
│ ├── …
│ └── start05.ast
├── system
│ └── table
│ └── list_windows_ja.tbl
└── 补丁使用方法和说明.txt
4 directories, 219 files
处理
以妃爱线为例,比如 01_2 一开场就把不能推的「里姐」翻成了「毫米」……
打开 01_妃愛01_2.ast
,搜索「毫米」,检查一遍文本,发现批量替换不会产生什么问题,
one-liner 搞定:
sed -i 's/毫米/里姐/g' ./script/*妃愛*.ast
全文完。
备份原文件,修改后的补丁经测试可以正常使用。 考虑到 Artemis 支持热加载,直接在游戏根目录运行对应替换命令即可。
sed -i 's/爱妃/妃爱/g' script/*妃愛*.ast
如果一下揪出机翻同一个名词的好几个版本,可以使用正则表达式:
sed -i -E 's/米利|弥里|毫[米厘]|mm/里姐/g' script/*妃愛*.ast
匹配全部可攻略角色脚本则可以用 wildcard2,同时用正则匹配关键词:
sed -i -E 's/艾蜜莉|阿[梅美米].|雨[里莉]|蜜糖|ami璃|am[aei][lr][iy]/天梨/g' script/0*_*.ast
sed
也可以在一次 shell call 中替换多个关键词:
# 两种方式效果相同
# 注意 -e 是 --expression 的缩写,不是大写的 -E (--regexp-extended)
sed -i 's/常盘/常磐/g ; s/野野./野野花/g' script/0*_*.ast
sed -i -e 's/常盘/常磐/g' -e 's/野野./野野花/g' script/0*_*.ast
感想
Artemis 引擎的处理有点太简单了,再加上热加载、免封包读取和 UTF-8 编码, 阿猫阿狗都能做汉化,虽然机翻质量堪忧,但产量却可以远高于汉化组, 怪不得现在很多 gal 都有机翻……
灌水区
专有名词不完全修正脚本
#!/bin/bash
sed -i -E 's/爱妃|喜林|日[依|赖|航]|比[赖彦]|妃子/妃爱/g' script/0*_*.ast
sed -i -E 's/米利|弥里|毫[米厘]|mm/里姐/g' script/0*_*.ast
sed -i 's/常盘/常磐/g ; s/野野./野野花/g' script/0*_*.ast
sed -i -E 's/艾蜜莉|阿[梅美米].|雨[里莉]|蜜糖|ami璃|am[aei][lr][iy]/天梨/g' script/0*_*.ast
sed -i -E 's/盐[波浦]/诗樱亲/g' script/0*_*.ast
sed -i -E 's/盐/诗樱/g' script/0*_*.ast
sed -i -E 's/锦姐|锦哥/锦/g' script/0*_*.ast
sed -i -E 's/明日/亚澄/g' script/03_あすみ*.ast
#sed -i -E 's/锦[美锦]/亚澄/g ; s/小彩/小锦/g' script/03_あすみ*.ast
sed -i -E 's/智助/智宏/g ; s/凯.|海蝶/会长/g' script/0*_*.ast
sed -i -E 's/鬼/哥哥/g' script/0*_*.ast
sed -i -E 's/大[根子]/萝卜/g' script/0*_*.ast
sed -i -E 's/先生//g' script/0*_*.ast
sed -i -E 's/学长|总裁/前辈/g' script/0*_*.ast
sed -i -E 's/cheki|楚奇/喜欢/g' script/0*_*.ast
echo 'done.'