祝贺珠瀬壬姫诞辰28周年

时隔四年,又是2月29日。google今天打出了纪念罗西尼诞辰220周年的logo。曾经翻过wiki,生在这一天的人里,最有名的就是他了。也有些生日设定为2月29日的虚拟人物。其中有一位经过推算,还跟我同年生的,就是珠瀬壬姫@Muv-Luv Alternative。一个月前把头像换成了她,以祝贺今年有生日。鉴于在Alternative的世界里,珠瀬壬姫在十年前的original hive攻略作战中战死,这里题目就写成“诞辰”了(汗)。可怜age似乎都忘了这个生日,到现在还没给壬姫的生日图……这里就上一张CG好了。

开工破解rUGP

去年下决心从英杰传那个坑里爬了出来,今年就一头扎进了Muv-Luv Alternative汉化这个深坑。实在是读的时候被震撼了,觉得这样的神作在天朝默默无闻太可惜了,于是决心为布道出一份力。age社不乏名作:君が望む永遠扬名立万,Muv-Luv系列作为招牌产品创造了业界的高峰,化石の歌和君がいた季節也非泛泛之作。然而这个在日本颇有人气的galgame大社,在天朝却不算出名。一方面是因为动画化太少,至今只有君望的一部TV和两部OVA;另一方面是因为age社的rUGP引擎以难以破解著称,一直未有人汉化原作游戏。结果就是,对不会日语的天朝人民来说,至多是看看君望那缩水的动画版,其他只能望而却步了。

去年年底开始在网上搜索,希望找到MLA汉化的组织。看到澄空有相关讨论,于是前去投奔报名日翻。开始在版面发帖,一直无人回应。上个月忙完预备审查干脆站短骚扰,总算找到了负责人。敢情汉化一直在坑,近两年其实没人在干。也罢,这也无妨,本来我就想着即使我一个人也要干的(虽然工作量尤其日翻的工作量实在无法承受)。于是拿了部分文本正式加入。

然而终究还是对程序方面放不下心。据说目前有一个前人做的程序可以把汉化后的文本封回去,然而字体颜色还有问题。另外可能的话有些图片希望替换,目前尚未实现。从近处说,不了解自己手头的工具我还是放不下心;从远处说,如果搞明白了rUGP引擎,或许有可能进一步解决君望等作的汉化问题。所以,最近半个多月,一直在解析age社的资源文件.rio的格式。

万幸的是,总算找到了一部分前人的工作成果。有个ID为hikobae/hiko_bae的日本人,早在06年就写了一个MLA的CG、背景和文本的解压程序,并且公布了代码。再翻翻看,发现他之前还写过一个解压Muv-Luv的CG和背景的程序。能用的,自然要尽量拿来用。

下载了代码就发现坑确实很深。hikobae公布的这两组代码,除去功能重合的部分,代码文本有100KB,而且是几乎没注释的100KB。这些代码还只解决了一小部分资源提取问题,包括提取主要的CG、背景的格式,以及提取执行脚本中的文本。立绘和差分没有提取,音频没有提取,甚至CG和背景的也有一部分没有提取。仔细看了代码之后更觉得坑深。一部分对象是用一bit一bit的变态方式编码的(不是逐byte而是逐bit);一部分对象的编码用了看不出特定理由的异或和四则运算的变换;总共近百种对象只有二十来种给出了解压算法。

路要一步一步走,总之先从模仿开始。开始先把基本操作的代码改写了一遍。算法保持不变,优化了代码,改进了接口,并且把杂糅的代码风格统一为我习惯的C++风格。然后开始搞图片。毕竟这个东西不那么琐碎,也有相对成熟的算法了,相对搞执行脚本要容易。经过数日的奋战,总算是有所进展。在hikobae的工作的基础上,简化了Cr6Ti类型的数据解析函数,扩展了CRip008类型的可读取对象种类,纠正了CBg2d类型中的错误操作,并初步修正了CG、背景对象的特征辨认。目前做了一个在.rio文件中自动辨识CG、背景对象并解压的程序。目前的情况是,解压MLA、MLA全年龄、MLAC01、MLAC02、君がいた季節FR均已成功,但是解ML Altered Fable失败,还需要进一步调试。看起来很有希望做一个age系列通用的CG、背景的提取器——这个东西似乎还没人做出来过。

必须说hikobae的代码给了我很大帮助。一方面我不需要hook程序去抓底层解密/解压算法了;另一方面hikobae对对象结构的解析尤其指出树状结构和给出ReadClassList函数,让我得以更好地把握全局。实际做做程序发现还挺有趣的,反向解析和做研究很像,很需要想象力,大胆假设小心求证。同时,换位想想.rio数据打包的设计思路,对我这个技术弱人来说也挺长见识的。

现在还只是开始,复现和修正hikobae的全部发现还需要很多时间和精力(人家前后也搞了三年的)。此外,寻找立绘和差分类型并进行解压也是一个任务,毕竟也有人做到过。更进一步地,音频等data的提取,可能必须要用OllyDbg重新解析程序了。有些让我吃惊的是即使hikobae的成果也没有被充分继承,这五年间居然只有一个hook内存英化文本的补丁出来。看来着手于此的人确实太少吧。我反正也不急,就慢慢解析慢慢玩吧。

White Album 2(其一)

打完White Album 2(以下简称WA2)已经是半个月以前的事情了,感想文却迟迟写不下去。不是因为没啥可写,而是因为感触太多。人生有时就是这么巧:刚想着把某些东西写下来作为2011年的总结,就在WA2里读到了这些东西。踏入galgame的领域八年多,这还是第一次体会到强烈的代入感。百感交集之间,年终总结和感想文就都耽误了。想来想去,自己的闷骚就不写了,只写写读WA2的感受好了。熟悉我的人,大约也能看到其中哪些部分有我的影子。倒不是说我经历过和WA2类似的故事,而是说我的某些现在或过去的心理状态和剧中人物重合了:一半是春希,一半是かずさ。

WA2是LEAF社制作的PC平台18禁galgame。2010年3月,游戏的序章独立发售,名为White Album 2 ~introductory chapter~,简称IC,阅读量约15小时,演出了一段高中校园三角恋故事。2011年12月底,游戏的完结篇closing chapter发售,简称CC,阅读量大约超过70小时,讲述了IC的三年后以及五年后的故事。作品得到了玩家极高的评价,甚至有人说是galgame史上空前的。 它会不会成为一个空前的里程碑,还需要更多的时间来考验。不过它是神作这一点,大概已经毫无疑问了。更值得赞叹的是,它的成功并不是来自题材的新奇性,像 Muvluv系列或者Baldr系列或者AB2社作品,而是深入挖掘了恋爱题材,尤其是校园部分。在一个二十年来已经被业界做烂的题材上做出全新的高 度,难能可贵。

White Album 2的故事,基本上来讲就是个三角恋。高中生的北原春希、小木曽雪菜和冬馬かずさ,怀着各种思绪组成临时组合参加校园祭并完成了经典的演出。然而,三人间的关系随即以雪菜的告白为契机崩坏,IC以かずさ远走维也纳结束。CC的开始已经是三年后,怀着沉重负罪感的春希和雪菜一直保持着微妙的距离。以かずさ在欧洲的成名等事件为契机,停滞的时间开始流动。最后则是隐藏的终章,IC的五年后。かずさ因音乐会回到日本,三人间五年来悬而未决的关系,开始清算。

这个故事大纲没什么新奇的。出彩的地方,在人物心理的挖掘和故事的叙述手法上。一方面,人物性格中的多种要素,其中的纠结和一致性,人和人之间的冲突,有丰富的表现。在任何一条线里,雪菜和かずさ都是无法回避的两个名字,展现的人物心理因而更复杂也更有真实感。另一方面,讲故事的技巧上,大约借鉴了近年来有很多成功范例的悬疑类galgame,紧凑而引人入胜。故事的叙述顺序做了很多有意的安排,包括IC通第二遍和第三遍时会加入新的剧情片断。WA2充分体现了这类galgame以剧本为根基的特点,纯粹从故事构成和人物塑造上说,远胜我读过的很多小说。更妙的是WA2根本不是小说,其中有意识地利用了很多galgame独有的表现手法,配役和视觉效果自不必说,还包括信息丰富的背景音(比较考验听力…),以及出色的歌曲,等等。当然,这些要素压缩了纯文字所对应的巨大的想象空间,不过对我这个对声音有爱好的人来说,却是个可喜的特点。

暂时先写个简单的推介吧,整理整理再写更具体的内容。也可以避免剧泄。借用Fate中servant能力的评分方式,剧本是EX级的(IC部分可以做galgame的教科书了吧…),画面大约是A-,配役EX,音乐是A+(我心目中的EX只有Symphonic Rain…),H的话大约也算A吧。没有短板,这也是在批评空间拿高分必须的。截止今天,批评空间样本数611,中间值高达96,在十几年来所有样本数大于5的作品中高居榜首。虽然随着样本数的增加分数可能会再下降些,但是现在这个成绩相当令人惊叹了。