原作分析

2022/5/5

本节文档以 LOVEPOTION SIXTYNINE 为例,分析为什么要选择移植,仅供思路参考

# 概述

本作使用的引擎是 Yu-ris (opens new window) ,这个引擎有多个版本而且不同版本内部差异很大,封包的格式是 .ypf ,特效封包格式是 .ymv ,视频不能封包,以 .mpg 格式直接散落在外面

使用 Yu-ris (opens new window) 比较出名的作品是女装山脉huaji,我推过这作的 ONS 移植版

本作只能在 Windows 上运行,且存在较多 Bug

  • 程序容易崩溃,失去响应

Windows Server 2019 / Windows 10 / Windows 8.1 多个设备出现过这个情况,最大化后最小化再打开还会直接退出

移植制作中因崩溃产生的大量 .crash.dmp 文件,3月前是在另一台电脑做的,光3月份就崩了11次

bug01

程序崩溃时的截图

LV69_DEBUG

甚至偶尔还会失去响应

LV69_失去响应

  • 原作脚本断行,存在逻辑问题

括号打多了

LV69_括号打多了

这里,少打了半句话还被拆成了两行

LV69_少了半句还被拆分成了两行

这里,这句话是莲说的但是少了人物标记

LV69_本来是莲的话给拆分两句,左下还少了人物标记

这里,人物和文本框错位(没有显示人物名称)

LV69_人物和文本框错位

人物名称位置不对

LV69_人物和文本框错位2

  • 对话框小头像丢失

当时没有存图但是这个问题挺多的

  • 特效位置错误

特效跑到边上去了

日常bug的原作

能回想起来的 Bug 差不多就这些了,总之就是原作程序很拉跨

基于这些原因,加上想让作品在全平台运行,再加上自己 Python 水平还凑合,但是汇编完全不会,顺带借这个机会学习一下 Ren'Py ,体会一下 Galgame 的制作流程,于是决定采用移植的方式来做(当然还有其它一些原因,之前的文档有提过)

# 解包

本作可以使用 Crass 解包,虽然文本和演出脚本加密无法拿到,但是顺利拿到了多媒体文件,特效 pac 文件使用了加密的 jpg 文件,请教了 flandre 大佬,他是这么说的,见这里 (opens new window)

“我看了下,这几个文件里包含了不少完整的 jpg 文件,里面的数据直接保存出来就是文件夹里的帧动画。提取出的文件虽然少但它带有 8 位的掩码文件,这样渲染的时候就能做出透明效果了。想保存的话可以试试写点代码直接把文件夹里那些现成的 jpg 黑色像素当成透明,再存成 png。”

# 写脚本

写脚本之前,最重要是选择一个合适的引擎,可供选择的跨平台引擎很多,除了我在本次选择的 Ren'Py (opens new window) ,还有 ONScript (opens new window)krkrz (opens new window)Unity (opens new window) 也是不错的选择

因为我会点儿 Python ,Ren'Py 那边的中文文档挺不错,加上推过几部 Ren'Py 做的还可以的 Gal ,所以决定拿 Ren'Py 来做

没有选择 ONS 和 krkrz 的原因是感觉文档不全(krkrz 似乎只有日语文档,中文文档好像有翻译但是补不全)

如果你对 Python 比较熟悉或者目前对编程并不熟悉,我建议你选择 Ren'Py 作为你的移植引擎

说起来,B站那边有人问会不会考虑cow和kot两个前作的汉化,这两天想了一下,这两作的话,如果后面要开坑的话,应该是不会用 Ren'Py 做了,最近打算去学一下 C# ,要学的还行的话打算拿 Unity 做,打算多体验一下不同的引擎,本次 LV69 项目主要不是为了汉化,而是想通过这种方式,用实际项目驱动学习并推广 Ren'Py ,后面如果还做的话,肯定会优先考虑这两作(因为不大有人会来抢坑可以慢慢学引擎慢慢来填),如果做的话大概率应该会用 krkrz 或者 Unity ,还是像这次一样开源,同样会写一份这样的文档来帮助感兴趣的人来入门

也欢迎各位来汉化这两作,如果真的有人用 Ren'Py 做了前两作的汉化的话我会非常开心huaji~

开坑了的话喊我一声~

# 封包

如果用 Ren'Py 的话,封包好封,别人解包也好解,所以这部分没啥问题

# 测试

可以用 CI/CD 工具做自动化测试,很方便