怎么说,这事儿是从我去年休假在家闲得蛋疼开始的。那时候把家里翻箱倒柜找老游戏玩,结果就翻出了《忠臣的末路》这货。这游戏剧本扎实,情感细腻,就是年代太久远了,而且它只有日文原版。当年啃生肉(指未翻译版本)啃得那个费劲,各种查字典。当时我就琢磨,这么好的剧本,为啥就没一个靠谱的汉化版?网上那些零散的汉化包,不是字体乱码就是对话缺失,看着贼难受。
本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.me
一旦心里有个疙瘩就非得把它解开。当时我拍板了,不行,我得自己动手把这事儿办了。既然要搞,那就要搞一套能稳定运行,字库完整的版本出来,也就是大家现在看到的这个汉化版本。
我先是把老一套工具都搬了出来。PE工具箱、文本抓取器、调试工具,一样不缺。一开始最大的麻烦就是它的资源文件。这游戏估计是用上世纪末某个小众引擎做的,资源包打包得特别死,像个铁疙瘩。我对着它的执行文件,硬是跟了快一个星期,才算是初步摸清楚它的文件结构。发现文本部分全塞在一个巨大的动态链接库文件(DLL)里,而且还做了简单的异或加密。
我当时就骂娘了,这开发商为了防盗版真是操碎了心,这加密手段虽然不复杂,但是藏得深。我用调试器跟了好几遍内存,才确定了密钥。把文本勉强dump(导出)出来一看,好家伙,全是Shift-JIS编码。这倒是预料之中,但关键是,这个老游戏对中文字符集的支持几乎是零。
解决字库问题:从文本地狱到点阵重塑
我发现它在程序里是写死了一套点阵字库的,给西方字符留了位置,但压根没有给像中文这种宽字符留空间。我试着把翻译好的中文文本硬塞回去,结果就是经典的“方块乱码”,程序也经常因为内存溢出直接崩溃。这下明白了,不能光改文本,还得替换字库,甚至要重写它的文字显示逻辑。
这才是真正的大工程。我琢磨着要不要用FreeType库自己“注入”一个新的字库进去,但这游戏机制太老了,操作起来各种冲突。我一拍桌子,决定采用最土但也最稳妥的办法:点阵字库替换。
第一步:确定原版字库规格。我硬是把原版程序里那个点阵文件抠出来,确认了它定死了是12x16像素的点阵,没有商量的余地。
第二步:定制中文字库。我找了套和它原始点阵大小一致的宋体点阵模板,然后用点阵编辑器,把我们常用的几千个简体字,一个一个像素地制作成这个规格。那段时间,我眼睛都快瞎了,简直是活体“打字机”。
第三步:调整显示函数。字库做好了,还得让游戏认它。我用工具把游戏的显示函数进行了修改,让它去读取我新做的字库地址,同时还必须调整文本显示的偏移量。因为中文笔画多,如果不调整,两个字会挤在一起,看起来糊成一片。
字库这个大山搬开后,才是翻译工作。剧本量实在太大了,我一个人肯定吃不消,前后找了两个圈子里的朋友帮忙,对着日文原文一句一句抠。翻译过程中最大的痛苦是,这游戏里的文本逻辑非常碎,很多对话是“变量+文本片段”动态拼接起来的。翻译的时候不能只看单个句子,必须考虑到它在游戏里的具体情境,稍微翻错一点,剧情就会变得驴唇不对马嘴。
发布与维护:永无止境的“更新日志”
第一次放出测试版,社区里反馈的问题简直像雪片一样飞过来:这里有错字,那里缺行,有人说在某个特定的剧情分支里,存档功能会闪退。我当时就明白了,做这种老游戏的汉化,你得把它当成一个完整的软件开发周期来对待,光翻译完只是万里长征第一步。
我现在给大家分享的这个“更新日志”,就是我还在继续修修补补的记录。这活儿一旦开了头,就停不下来。你看那些商业大公司,软件一发布就觉得万事大吉,后续维护跟不上,bug一大堆。我们这种自己折腾的小项目,反而更能感受到维护的重要性。
比如在最新的版本里,我已经解决了之前因为中文字符串长度溢出,导致几处关键剧情卡死,程序无法继续运行的问题。那个贼难受的开场OP动画,我也重新压制了一下,让它在现在WIN10或者WIN11系统环境下不再跳帧或者黑屏。
虽然这只是个小小的汉化包,但它承载了我对那个时代的喜爱。看着大家能流畅地玩上自己喜欢的内容,那种成就感,比拿多少项目奖金都实在。这周估计还能修几个玩家反馈的文本显示小问题,等着我下一波更新。