10. 文本导出
文本导出是很重要的一步,而且需要和翻译互相配合,尽快修改其中的问题。
由于这个游戏的控制符很复杂,而且脚本格式也复杂,所以关于文本导出成什么样子我也考虑了很久。
文本导出有几个要点:
1、 要尽量和游戏显示差不多
2、 保持每个文本、每一段落的文本量适宜
3、 方便翻译
4、 方便导入
首先分文本很简单,sce.pac本来就分成若干的子文件,每一个子文件对应一个文本。
然后是分段落,我将每一段落定成一屏幕文本,也就是遇到换页符(g)就分段。
(但是事后发现有一个问题,就是我忘记了跳转指令,尤其是剧本结束的跳转指令,造成有一些段落包含了两个内容。由于此类情况不多,翻译也没有提出,我也是在最后测试的时候发现的。)
然后换行之类的按照上一节的分析,进行换行。只是L没有进行处理。按宽度折行则变成了按字数折行,效果基本可以接受。
有时候会多个00指令显示一句话,所以需要在这些话中加分隔符,我选择了#作为分隔符,并没有加入00指令的地址。
关于这个问题我以前应该讨论过,在段号或者分隔符里面写地址的,可以选择若干段进行导入,但是每次导入都要用原始数据,对于某些简单的脚本结构导入程序写起来也方便。
不写入地址的,必须全段导入,分隔符也不能误删或者误增,优点就是可以在修改版的基础上再次导入。导入程序要和导出程序一样,全指令都要分析。
这个可以进行衡量,不过如果地址很多的话,会造成导出文本变很大,所以在这个游戏中我没有采用。
导出的代码写得有些许复杂,而且各人有各人的写法,这里就不提了。有兴趣的话去看源代码。在FuckSce中。
另外我要说一下,文本导出之后其实也要做一些处理,比如查重复,其实这个游戏有不少重复文本,由于交给了不同的翻译造成了译文不相同。不但浪费了翻译的资源,也给人前后不统一的感觉。
检查重复其实不难,但问题是检查出来之后怎么办呢?我感觉这个功能要和Agemo editor融合,所以到现在都一直没有写代码。
其实我觉得这个功能蛮通用的,不知道有人写过没有。