Originally published at: https://barz.foo/games/25/
在爆肝两星期(虽然实际可能只有十几个小时)和他山之石的帮助下,我总算是做完了。那么就在这之后来聊聊我这段时候都在做什么吧。
@FooBarz076さんが「禁じられた遊びG」の中国語版を作ってくださいました。ありがとうございます!
@FooBarz076做了一个中国版的 "禁忌游戏G"。 非常感谢您! https://t.co/p7ex77ewQL— 猫ちぐら (@nukochigura) September 1, 2021
引子 – 在 Windows 上打包 macOS 版 RPG Maker MV/MZ 游戏的坑
一开始听说新作发售时我也很激动,然后兴冲冲的跑去 Booth 准备下单才发现 Windows 和 macOS 版是单独卖的。(后来知道了是 Booth 限制了销售的可下载文件每组最大 1G 的原因)嘛反正我也是两个版本都买了。
然后就遇上了经典的“此应用无法打开”的问题。用终端定位到程序的位置之后发现是 nwjs 和几个其他的帮助程序缺了可执行权限。(谁叫 Windows 自带的压缩成 Zipped 文件夹记不住 UNIX 的可执行权限……)
不过我有些懒得给缺的文件一个个加上可执行权限了,我就在 macOS 版的 RPG Maker MZ 上直接生成了个示例项目然后把原来的文件放了进去。(或者原版的 nwjs 也可以,可以在 https://nwjs.io/downloads/ 下载到。以及虽然 ARM 版是第三方编译的但是听说 M1 原生支持的版本已经在路上了,咕咕。)

用右键点击(或者双击触摸板,要不然按住 Control 再点击也行)一个 App,你就能看到“显示包内容”选项。

然后依次导航到 Contents/Resources
目录,里面的 app.nw
目录就是游戏本体啦。从游戏的目录里复制到 nwjs 里面相同位置的目录就可以了。
所以要打包 macOS 版的 RPG Maker 游戏的话,最好还要有个 Mac 。(虽然你在 Windows 上用像是 7zip 或者开 WSL 来打包应该就能保留可执行权限了,zip 本身是能存储的。)
制作 macOS 上的 ICNS 图标
其实也很简单,用 macOS 自带的预览导出一下就可以了。

如果找不到 ICNS 格式的话,试试在选择格式事按住 Option 键。
然后替换掉上面 Contents/Resources
目录里的 app.icns
和 document.icns
就好了。

至于那个版本和版权声明是 nwjs 自己的,要改的话就要改 Resources 里面那些 .lproj
里面的文件了,考虑到没装 Xcode 我这次就偷个懒了。
汉化方式的规划
对我现在才开始写我是怎么汉化的……
在我开始之前,GN 上似乎有个在做的汉化版的样子。(别看了我也没帐号,道听途说来的)然后托有帐号的朋友拿了一份 0.15 汉化版给我。
因为作者之前有在 Twitter 上说在做英文版的样子,我带着好奇心问了问语言切换是怎么实现的:

嗯,用开关实现的,然后在选项里用插件添加一个切换开关的开关。结果就是事件里到处都是相同的过程……

而翻了翻收到的汉化的文件,可以发现有些文件里有这样的注释:
// Generated by Translator++.// Do not edit this file directly.
顺藤摸瓜找到了 Dreamsavior 的 Translator++,以及 GitHub 上有人做了这个翻译软件的汉化。那个人应该就是换掉了里面的英文文字。
不过看来这个翻译软件只能翻译直接展示文字的部分,插件参数里的文字就没有顾及到。例如这个游戏里两侧的文字是用插件生成图像再显示的,那个汉化的作者就没有翻译到。
然后我就想起来了我之前用过的那个 DK Localization MZ ,正好最近的更新修了我之前发现的那个生成网页版会爆炸的问题(虽然要用 Windows 去生成它需要的 Stamp 才能起作用),于是我就继续用那个了。
STEP 1 – 界面

这个插件的核心就是把原文件里以大括号包围的文字识别成标签,然后再用另外的文件中的文字替换掉其中的内容。所以你才会在各种地方看到一堆大括号,例如这里的系统用术语的部分在我的翻译目录里是这个样子的:
{ "languages": { "en": "English", "zhcn": "简体中文(中国)", "ja": "日本語" }, // 中略 "gallery": { "galleryTitle": "画廊", "recollections": "过场回想", "cg": "CG" }, "customOptions":{ "tiniesLine":"在侧边显示小人字幕", "tutorials":"操作提示", "titleCall":"标题画面语音" }, "shoeOptions":{ "Loafers":"穿上鞋和袜子", "Socks":"脱鞋", "Barefoot":"露出赤足", "backToRecollections":"返回回想列表" }, "choices":{ "yes":"确定", "no":"取消", "save":"打开存档界面" }, "extraGames":{ "extra": "新的漫游世界", "erikaUniverse" : "艾丽卡的宇宙", "another" : "新的世界+" }}
插件里的文字也可以如此如法炮制,于是经过一番处理的标题画面大概就是这个样子:



STEP 2 – 剩下的文本

就是编辑器资料库里的 Common Events 这部分。(因为编辑器语言会影响生成的项目的默认语言,其实就是初始的 System.json 不一样的原因我一般都会用英文。不过这回因为有的插件没有写英文的参数和帮助,保存的时候可能会丢所以我有换成日文一阵子。)
因为程序员的三大美德之一就是偷懒嘛,所以我就想看看哪里有可以偷懒的空子,就用 Visual Studio Code 打开了游戏目录里的 data
目录。(别的有格式化和语法标记的代码编辑器应该也可以。)
在格式化完代码以后,大概可以从里面找到一些共通的部分。例如普通的文字对话大概是这样的:
//这部分的 parameters 里分别表示头像的文件名和索引、文字的显示位置和要显示的角色的名字(这个是 MZ 新增的)。{ "code": 101, "indent": 1, "parameters": [ "", 0, 0, 2, "{actors[1].name}" ]},// 假如对话不止一行的话,就重复下面这个结构。{ "code": 401, "indent": 1, "parameters": [ "\\F[48]{Map007.EV055.page0.[40]}" ]}
游戏里用到的其中一个插件是这样的:
//这部分的 parameters 里分别表示插件的名称和要使用的命令。{ "code": 357, "indent": 3, "parameters": [ "SoR_GabWindow_MZ_Left2", "PushGab", "呼び出し[おしゃべりポップアップ]", // 你应该知道这是哪个插件了吧? { "arg0": "101", "arg1": "{CommonEvents.CE065.[0]}" } ]},// 下面这两个是在编辑器里显示的摘要,所以放着不动也不会有影响,事实上你在编辑器里保存的时候它就自己更新了。{ "code": 657, "indent": 3, "parameters": [ "顔グラフィックを表示するアクターID = 101" ]},{ "code": 657, "indent": 3, "parameters": [ "メッセージ文字列 = This entire city is my plaything." ]}
所以如果可以的话,你可以用某种可以处理 JSON 的语言把这样的结构里面的文字提取出来,然后批量替换成插件使用的标签。

不过有两个小坑可能需要注意:
- 不知道为什么英文的事件总会比日文多出几行,所以我在移除按开关区别的分支的时候留下的是英文版的分支,然后再在日文的文本中加一些空格行来填上差的那些行。以及如果没有内容的话插件会直接把标签显示出来,所以不能直接插空字符串。
- 如果在外部修改了游戏的数据的话,MZ 的编辑器会问你是否要读取外部的更改,如果确认的话你编辑器里没保存的修改就会被覆盖回去。所以在外面修改数据文件前记得保存是个好主意。
那么我在翻译的时候大概就像这个样子:

STEP -1 – 测试
就是一遍一遍的打开看看哪里没翻译到和空行加的对不对之类。

左上角那个是插件提供的功能,在对话的时候按下指定的按键和方向键就可以即时切换语言了。(我是设置到 Tab 上了) 不过切换的时候可能会把名字漏掉,其它的地方也没法用,算是个聊胜于无的功能吧。

最终的效果就像这个样子。(标题栏那个 rmmz-game 其实也是可以修改的,修改游戏目录的 packages.json
就好。但是测试的时候会用 RPG Maker 自带的另外一套 nwjs 所以就没有效果了。)
说了这么多那汉化呢?
我应该在有些地方发过了的样子?
因为有人和我说覆盖完以后游戏会报错,然而我复现不出来……所以如果你也遇上了相同的状况又有完整的购买信息的话(booth.pm 的订单历史记录或者确认邮件)的话,可以找 Foo 拿带汉化的本体的 OneDrive for Business 链接。(嗯?)
对着游戏目录覆盖就行。(Windows 就是 EK_MZ,macOS 右键 .app 选择显示包内容,然后依次打开 Contents/Resources/app.nw
目录,但是真的有人用 Mac 玩嘛(笑))
如果一切 OK 的话,第一次启动时会提示你选择语言(当然也能再从主菜单的选项里选。)

结语
猫ちぐら 的这两部其实都挺不错的,可能有人更喜欢前作那种选择探索然后有不同分支的风格,或者只是因为前作免费?
这一次 灯(トモシビ) 的插图也很漂亮,虽然日常被低俗…… 以及语音加分。(声优自己也玩过哦,可以去犬塚いちご 她的 YouTube 频道 看看。)
虽然他可能不认识我,但还是要感谢 GN 用户 rilongshen 的汉化给了我进一步研究的动力。(还不是因为朋友在 GN 问他没搭理不然我就可以鸽了(x)
果然比起文学作品我还是更适合写文档。(?)