RFC3:WebGAL 流程图技术解决方案(草案)

Mahiru
2024-1-20

第一次提交版本,2024年1月20日。

总体方案

WebGAL 在游戏运行的过程中记录流程图解锁情况。用户必须首先在WebGAL编辑器中使用流程图编辑器编辑流程图。

章节注册

使用流程图编辑器,将流程图的节点和流程图中要继续的位置对应起来。比如类似于

{
    "节点1":{
        "sceneName":"xxx.txt"
    }
}

这里的意思是,用户点击了这个节点后,游戏回到 xxx.txt 继续。

舞台状态和 backlog 被重置到流程图解锁时的状态

渲染算法

是一个图(图是一种数据结构)的遍历,从根开始,使用 BFS ,每一层被渲染为视图中的一行,并使用箭头连接父章节和子章节。

点击节点就是读档,读的是这个结点解锁时的状态。

如何存储

在每个 scene 开始的时候,假如我们发现该 scene 被注册到了图,那么就记录这个 scene 进入时的初始状态(舞台状态、Backlog什么的),解锁对应的结点。

“记录”这个过程,就是存一个状态快照,这个状态快照我们宣称其是章节,跳转到某个章节就是读取这个快照。

由于图中的每一个结点就是一个状态快照,所以为了防止存读档效率下降,将单个存档作为单个 key 存储已经势在必行。并且,章节的状态快照不记录 Backlog,所以跳转章节后清空 Backlog。

注册个人线

允许注册多个流程图。流程图的属性里面可以设置个人线的相关配置。