Kirikiri2/KAG3下TADV游戏的Web迁移

Kirikiri2/KAG3下TADV游戏的Web迁移。

介绍

TADV是Text Adventure的简称,意为“文字冒险”。这类游戏通常是玩家扮演游戏中的一名角色,通过选项来触发与其他角色之间的剧情。剧情通常由一个主线和若干支线构成。主线剧情通常贯穿整部游戏,就像是小说的主线。支线通常是玩家与其中一名角色之间的深入互动。虽然说得很富有理论的感觉,熟悉的朋友们马上就能猜到我说的其实就是Galgame了。广义上Galgame属于TADV游戏的一种,毕竟Gal是按照角色进行分类的,这和TADV并不冲突。
玩过Galgame的朋友的应该都了解,它们几乎都只在Windows平台上发布,原因是制作工具只面向Windows系统,关键是其中太多的功能都是和Windows库函数紧紧绑定的。由于我本人平常使用MacBook,这些游戏肯定是无法在MacOSX上运行的。解决方法当然也有,无非是模拟一个Windows环境出来,比如安装双系统,安装虚拟机,或者使用Windows模拟器比如Wine。不过这些方法有利有弊,并且使用起来都不怎么方便。为了兼容更多的设备,一个很自然的想法就出现了:能不能将这种TADV游戏移植到Web平台上?
答案当然是可以的。除去交互之类的操作(如NekoPara的E-mote),本身游戏的机制用PPT都可以完成,因此Web化也并不算那么困难?如果我们从头定义一套脚本语义,做一个Web版的TADV游戏引擎并不很困难,但是移植已有引擎上的内容就不那么容易了。这涉及解包、解密、反汇编的工作。这次的开的坑是对一个常见的TADV引擎KiriKiri(中译“吉里吉里”)进行基本的Web移植操作。个人大概算了算,工作量还是很大的。首先要了解KiriKiri游戏脚本的编写方式,然后结合游戏中可以反汇编得到的资料,重新定义一个脚本编译器并结合前端网页进行渲染。个人希望在6个月内有所进展。(Flag高高立起)

动机

在一年前和朋友们闲聊的时候,无意间我们提起了Galgame的话题,对软件只支持Windows系统进行了一顿批判。批判的结果,就是我们为啥不尝试将Galgame放在Web上,并且网上(DMM)也有不少尝试(August社月2017年出品的“あいりすミスティリア!”,当时带了带风潮后突然暴死,隔了一年再次上线。。。迷之操作)。于是乎,一个头脑一热的Galgame移植项目就此开始,目标是当时唯一解包出全部资源的“はつゆきさくら”(初雪樱)。当时处理方法是定义了一套游戏帧的表示方法,然后将解包出来的游戏脚本重新编写成新的脚本。从游戏流程的还原度上,这样的方法没有太大问题。但是一点点将原版内容翻译成新的脚本需要太长的时间,而且脚本与资源没有默认的对应关系。基本上需要人工逐帧地编写脚本,工程量难以接受。
前不久,我把一直没玩的柚子社的千恋*万花玩了一下。千恋万花是2016年出品,比初雪樱晚了4年,整体游戏的功能性还是有较大提升的。最关键的是,制作游戏的引擎,就是KiriKiri引擎,它的制作软件是可以下载到了,并且网上有一些讲解。这就重新燃起了移植游戏的决心。决心归决心,这次尝试的难度还是很大的,弃坑的可能性比较大,唉。

困难点

1. Windows系操作引起的不兼容

TADV游戏中,许多渲染效果以及处理机制与Windows系统的库函数是有很大关系的。并且不是所有的功能都可以很好地用前端页面表示。比较繁琐的是KiriKiri引擎涉及的dll插件们。这需要重新编写插件逻辑,以在需要的时候使用。

2. 官方文档少且还是日语

文档少对开发是很不利的,说直白点的就是完全不知道每个文件是干什么用的,也不知里面写的内容会被怎样解析。仅存的那些文档中,大部分还是日语的,这显然增加了阅读理解的难度。

3. 拿到的游戏都是编译过后的代码,解析与反汇编工作困难

除了猜测,可能只有开发这个引擎的人才知道这些汇编码的含义吧。

4. 资源加载

Web游戏对传输速度有较高的要求,否则那么大的图片、音频的加载时间就会让人无法忍受。这可能是一开始TADV游戏诞生于Windows平台而不是Web平台的一个原因吧。

5. KAG与TJS语言的混合

KiriKiri引擎本身使用一种叫做TJS的语言进行编写,TJS本身类似JavaScript,可以用来编写程序。不过这种代码驱动的游戏脚本又臭又长,很难维护。因此一种基于TJS的简化版本,KAG就出现了。KAG以游戏场景与流程作为主线,使用标签与相关的属性来描述动作。在默认的情况下,它可以简化很多编程的工作。然而它的表现力很有限,还需要很多TJS脚本的辅助。因此,如何将这两者结合到Web上是个需要解决的问题。

结语

这篇像是介绍又不像是介绍,似乎还有一些吐槽的文章简单介绍了TADV游戏移植到Web平台上的一些困难,也分析了几点KiriKiri引擎移植的要点。本文就算是KiriKiriWeb项目的起点吧,后续关于这个项目的进展我也会介绍的。欢迎有兴趣的小伙伴加入。

留下评论