一种游戏剧情状态管理的实现方法及其系统

文档序号:493308 发布日期:2022-01-07 浏览:3次 >En<

阅读说明:本技术 一种游戏剧情状态管理的实现方法及其系统 (Method and system for realizing game scenario state management ) 是由 刘德建 温荣泉 陈宏展 于 2021-10-22 设计创作,主要内容包括:本发明提供了一种游戏剧情状态管理的实现方法,该方法为:1、输入游戏剧情数据,解析游戏剧情数据生成堵塞时间轴;2、还原游戏剧情数据中的剧情状态数据,并更新堵塞时间轴的进度值;3、等待用户交互开启剧情播放,按堵塞时间轴分发堵塞时间轴对应的剧情状态数据;判断堵塞时间轴对应的剧情状态数据是否分发结束;是,停止结束流程;否,进行步骤4;4、执行剧情状态数据中的剧情指令,继续按堵塞时间轴分发堵塞时间轴对应的剧情状态数据,等待剧情指令执行结束;5、记录剧情状态数据,等待用户交互,根据交互事件更新剧情状态数据与堵塞时间轴的进度值。本发明能快速接入并使用游戏剧情,支持状态管理,开发维护简单高效。(The invention provides a method for realizing game scenario state management, which comprises the following steps: 1. inputting game scenario data, and analyzing the game scenario data to generate a blocking time axis; 2. restoring plot state data in the game plot data, and updating the progress value of the blocking time axis; 3. waiting for the user to interactively start the plot play, and distributing plot state data corresponding to the blocking time axis according to the blocking time axis; judging whether the distribution of the plot state data corresponding to the blocking time shaft is finished; if yes, stopping the ending process; if not, performing the step 4; 4. executing the plot instruction in the plot state data, continuously distributing the plot state data corresponding to the blocking time axis according to the blocking time axis, and waiting for the plot instruction to be executed; 5. recording the plot state data, waiting for user interaction, and updating the progression value of the plot state data and the blockage time axis according to the interaction event. The invention can quickly access and use the game scenario, supports state management and has simple and efficient development and maintenance.)

一种游戏剧情状态管理的实现方法及其系统

技术领域

本发明涉及游戏制作技术领域,特别是一种游戏剧情状态管理的实现方法及其系统。

背景技术

对游戏玩家而言在游戏界面上看到的“元素”千差万别、变化多端但对游戏开发者而言游戏界面上的元素在底层都是一些数据不同的数据所绘制的图片有所不同。因此建立游戏的状态数据模型是实现游戏逻辑的重要步骤。现有生成游戏剧情的技术包括基于配置动态生成游戏剧情、基于Json生成游戏剧情等;现有技术对生成的局限性高,通常只针对特点的游戏剧情进行状态管理,且不支持以堵塞时间轴的方式进行交互控制,不支持剧情还原、不支持跳转到指定剧情节点,拓展困难,无法广泛使用。

发明内容

为克服上述问题,本发明的目的是提供一种游戏剧情状态管理的实现方法,能对戏剧情进行状态管理,且支持以堵塞时间轴的方式进行交互控制,使得游戏剧情支持跳转到指定剧情节点。

本发明采用以下方案实现:一种游戏剧情状态管理的实现方法,所述方法包括如下步骤:

步骤S1、输入游戏剧情数据,解析游戏剧情数据生成堵塞时间轴;该堵塞时间轴为支持堵塞条件的时间轴,其中,堵塞时间轴剧情节点数据未设置堵塞条件节点时,时间轴将按照时间顺序正常运行;当设置了堵塞条件时,播放时间更新到堵塞条件节点时播放时间停止更新,等待堵塞条件满足后播放时间移动至下一个节点的开始位置继续播放;

步骤S2、还原游戏剧情数据中的剧情状态数据,并更新堵塞时间轴的进度值;

步骤S3、等待用户交互开启剧情播放,按堵塞时间轴分发堵塞时间轴对应的剧情状态数据;判断堵塞时间轴对应的剧情状态数据是否分发结束;是,停止结束流程;否,进行步骤S4;

步骤S4、执行剧情状态数据中的剧情指令,继续按堵塞时间轴分发堵塞时间轴对应的剧情状态数据,等待剧情指令执行结束;

步骤S5、记录剧情状态数据,等待用户交互,根据交互事件更新剧情状态数据与堵塞时间轴的进度值。

进一步的,所述解析游戏剧情数据生成堵塞时间轴进一步具体为:

步骤S11、输入游戏剧情数据;该游戏剧情数据中包含多个子剧情数据,游戏剧情数据中记录的数据包括剧情指令及其执行方式、剧情节点时间长度、是否堵塞节点、堵塞条件、是否支持跳过;

步骤S12、创建一个堵塞时间轴;

步骤S13、读取游戏剧情数据中的所有剧情节点数据;将所有剧情节点数据加入一个剧情节点数据队列中;

步骤S14、判断剧情节点数据队列是否为空,是,返回堵塞时间轴,并结束流程;否,进入步骤S15;

步骤S15、从剧情节点数据队列中读取一个剧情节点数据,将剧情节点数据加入堵塞时间轴的当前节点位置;堵塞时间轴的当前时间值向后移动到剧情节点数据中接入的时间值;

步骤S16、判断剧情节点数据中是否记录了堵塞值,该堵塞值为堵塞条件对应的数据值;否,进入步骤S17;是,堵塞时间轴中添加堵塞条件节点,设置堵塞值调整为剧情节点数据中记录的堵塞条件;堵塞时间轴当前时间轴向后移动一个堵塞节点单位时间值,进入步骤S17;

步骤S17、判断剧情数据节点队列中是否还有其它剧情数据节点,是,执行步骤S15;否,返回堵塞时间轴,并结束流程。

进一步的,所述步骤S2进一步具体为:步骤S21、输入剧情数据,从堵塞时间轴中读取堵塞时间轴的进度值,从存储文件中读取剧情状态数据,判断剧情状态数据是否为空,否,进入步骤S22,是,创建一个新的剧情状态数据;并进入步骤S22;

步骤S22、判断堵塞时间轴的进度值是否小于当前剧情进度值,是,进入步骤S24;否,进入步骤S23;

步骤S23、更新剧情状态数据中的当前剧情进度值为堵塞时间轴的进度值,并将剧情状态数据保存至存储文件中,状态同步完成,并结束流程;

步骤S24、从剧情状态数据的剧情指令集合中读取堵塞时间轴的进度值对应的剧情指令数据,读取剧情指令数据中的剧情指令;

步骤S25、判断剧情指令是否有注册了对应的执行方式,是,执行对应的执行方式传入剧情指令数据并传入跳过执行过程参数,等待执行方式执行完成,进入步骤S26;否,直接进入步骤S26;

步骤S26、剧情指令执行完成,更新堵塞时间轴的进度值为堵塞时间轴的下一时间节点,继续执行步骤S22。

进一步的,所述步骤S3进一步具体包括:

步骤S31、输入堵塞时间轴对应的剧情状态数据;

步骤S32、读取堵塞时间轴的进度值;

步骤S33、判断堵塞时间轴是否执行完成,是,堵塞时间轴对应的剧情状态数据分发结束并结束流程,否,读取当前进度值的剧情状态数据;

步骤S34、读取剧情状态数据中的剧情指令数据集合,将剧情指令数据集合中的数据加入一个剧情指令数据队列;

步骤S35、判断剧情指令数据队列是否为空,是,更新堵塞时间轴进度值到下一节点,并执行步骤S33,否,执行步骤S36;

步骤S36、从剧情指令数据队列中读取一个剧情指令数据,执行剧情指令数据;

步骤S37、判断剧情指令数据队列中是否还有其它剧情指令数据,是,执行步骤S36;否,更新堵塞时间轴进度值到下一节点,并执行步骤S33。

进一步的,所述根据交互事件更新剧情状态数据与堵塞时间轴的进度值进一步具体包括:步骤S51、输入用户交互数据,

步骤S52、读取用户交互数据中的剧情进度值记录为目标进度值,从剧情状态数据中读取当前剧情进度值;

步骤S53、从剧情状态数据中读取剧情指令集合中剧情指令数据对应的最大剧情进度值与最小剧情进度值;

步骤S54、判断目标进度值是否大于最大剧情进度值,是,更新目标进度值为最大剧情进度值,进入步骤S55;否,进入步骤S55;

步骤S55、判断目标进度值是否小于最小剧情进度值,是,更新目标进度值为最小剧情进度值,进入步骤S56;否,进入步骤S56;

步骤S56、判断目标进度值是否大于当前剧情进度值,是,更新堵塞时间轴的进度值为当前剧情进度值,进入步骤S57,否,更新堵塞时间轴的进度值为最小剧情进度值,进入步骤S57;

步骤S57、更新剧情状态数据中的当前剧情进度值为剧情测试进度;

步骤S58、判断堵塞时间轴的进度值是否小于当前剧情进度值,否,更新剧情状态数据中的当前剧情进度值为堵塞时间轴的进度值,将剧情状态数据保存至存储文件中,交互事件执行完成,并结束流程;是,从剧情状态数据的剧情指令集合中读取堵塞时间轴的进度值对应的剧情指令数据,读取剧情指令数据中的剧情指令,进入步骤S59;

步骤S59、判断剧情指令是否有注册了对应的执行方式,是,执行对应的执行方式传入剧情指令数据并传入跳过执行过程参数,等待执行方式执行完成,进入步骤S60;否,直接进入步骤S60;

步骤S60、剧情指令执行完成,更新堵塞时间轴的进度值为堵塞时间轴上的下一时间节点。

本发明还提供了一种游戏剧情状态管理的实现系统,所述系统包括数据解析模块、还原数据模块、剧情分发模块、剧情数据执行模块、以及记录数据模块;

所述数据解析模块,用于输入游戏剧情数据,解析游戏剧情数据生成堵塞时间轴;该堵塞时间轴为支持堵塞条件的时间轴,其中,堵塞时间轴剧情节点数据未设置堵塞条件节点时,时间轴将按照时间顺序正常运行;当设置了堵塞条件时,播放时间更新到堵塞条件节点时播放时间停止更新,等待堵塞条件满足后播放时间移动至下一个节点的开始位置继续播放;

所述还原数据模块,用于还原游戏剧情数据中的剧情状态数据,并更新堵塞时间轴的进度值;

所述剧情分发模块,用于等待用户交互开启剧情播放,按堵塞时间轴分发堵塞时间轴对应的剧情状态数据;判断堵塞时间轴对应的剧情状态数据是否分发结束;是,停止结束流程;否,直接执行剧情数据执行模块;

所述剧情数据执行模块,用于执行剧情状态数据中的剧情指令,继续按堵塞时间轴分发堵塞时间轴对应的剧情状态数据,等待剧情指令执行结束;

所述记录数据模块,用于记录剧情状态数据,等待用户交互,根据交互事件更新剧情状态数据与堵塞时间轴的进度值。

进一步的,所述解析游戏剧情数据生成堵塞时间轴进一步具体为:

步骤S61、输入游戏剧情数据;该游戏剧情数据中包含多个子剧情数据,游戏剧情数据中记录的数据包括剧情指令及其执行方式、剧情节点时间长度、是否堵塞节点、堵塞条件、是否支持跳过;

步骤S62、创建一个堵塞时间轴;

步骤S63、读取游戏剧情数据中的所有剧情节点数据;将所有剧情节点数据加入一个剧情节点数据队列中;

步骤S64、判断剧情节点数据队列是否为空,是,返回堵塞时间轴,并结束流程;否,进入步骤S65;

步骤S65、从剧情节点数据队列中读取一个剧情节点数据,将剧情节点数据加入堵塞时间轴的当前节点位置;堵塞时间轴的当前时间值向后移动到剧情节点数据中接入的时间值;

步骤S66、判断剧情节点数据中是否记录了堵塞值,该堵塞值为堵塞条件对应的数据值;否,进入步骤S67;是,堵塞时间轴中添加堵塞条件节点,设置堵塞值调整为剧情节点数据中记录的堵塞条件;堵塞时间轴当前时间轴向后移动一个堵塞节点单位时间值,进入步骤S67;

步骤S67、判断剧情数据节点队列中是否还有其它剧情数据节点,是,执行步骤S65;否,返回堵塞时间轴,并结束流程。

进一步的,所述还原数据模块的实现方式进一步具体为:步骤S71、输入剧情数据,从堵塞时间轴中读取堵塞时间轴的进度值,从存储文件中读取剧情状态数据,判断剧情状态数据是否为空,否,进入步骤S72,是,创建一个新的剧情状态数据;并进入步骤S72;

步骤S72、判断堵塞时间轴的进度值是否小于当前剧情进度值,是,进入步骤S74;否,进入步骤S73;

步骤S73、更新剧情状态数据中的当前剧情进度值为堵塞时间轴的进度值,并将剧情状态数据保存至存储文件中,状态同步完成,并结束流程;

步骤S74、从剧情状态数据的剧情指令集合中读取堵塞时间轴的进度值对应的剧情指令数据,读取剧情指令数据中的剧情指令;

步骤S75、判断剧情指令是否有注册了对应的执行方式,是,执行对应的执行方式传入剧情指令数据并传入跳过执行过程参数,等待执行方式执行完成,进入步骤S76;否,直接进入步骤S76;

步骤S76、剧情指令执行完成,更新堵塞时间轴的进度值为堵塞时间轴的下一时间节点,继续执行步骤S72。

进一步的,所述剧情分发模块的实现方式进一步具体包括:

步骤S81、输入堵塞时间轴对应的剧情状态数据;

步骤S82、读取堵塞时间轴的进度值;

步骤S83、判断堵塞时间轴是否执行完成,是,堵塞时间轴对应的剧情状态数据分发结束并结束流程,否,读取当前进度值的剧情状态数据;

步骤S84、读取剧情状态数据中的剧情指令数据集合,将剧情指令数据集合中的数据加入一个剧情指令数据队列;

步骤S85、判断剧情指令数据队列是否为空,是,更新堵塞时间轴进度值到下一节点,并执行步骤S83,否,执行步骤S86;

步骤S86、从剧情指令数据队列中读取一个剧情指令数据,执行剧情指令数据;

步骤S87、判断剧情指令数据队列中是否还有其它剧情指令数据,是,执行步骤S86;否,更新堵塞时间轴进度值到下一节点,并执行步骤S83。

进一步的,所述剧情数据执行模块的实现方式进一步具体包括:步骤S91、输入剧情指令数据,读取剧情指令数据中的剧情指令;

步骤S92、判断剧情指令是否有注册了对应的执行方式,否,剧情指令执行完成并结束流程,是,进入步骤S93,

步骤S93、执行对应的执行方式传入剧情指令数据;

步骤S94、判断是否同步执行执行方式;否,等待异步执行方式执行完成,返回执行成功事件;剧情指令执行完成;是,返回执行成功事件,剧情指令执行完成。

本发明通过将游戏剧情状态转换为剧情状态数据进行管理,配合堵塞时间轴的剧情控制方法,可以简单高效的管理剧情状态;减少了游戏剧情状态管理与交互逻辑开发消耗,缩短了游戏剧情开发周期,加快了开发进度。且使用本发明中游戏剧情具有统一的调用风格,更少的游戏剧情相关文件与代码,更易维护,后期维护成本更低。

本发明为游戏提供了剧情状态数据的管理方法、堵塞时间轴的交互方法,支持按时间线播放剧情、设置剧情至任一时刻进行播放、支持剧情状态的保存与还原、支持将剧情跳转至任意进度值;任意类型的游戏项目均可通过本发明快速接入并使用游戏剧情,支持状态管理,开发维护简单高效,且支持自定义拓展剧情指令,适配游戏剧情的各种使用需求。

附图说明

图1是本发明的方法流程示意图。

图2是本发明的方法中进行数据解析生成堵塞时间轴对应的剧情状态数据流程示意图。

图3是本发明的堵塞时间轴的数据结构示意图。

图4是本发明的剧情状态数据的结构示意图。

图5是本发明还原剧情状态数据、更新堵塞时间轴的进度值流程示意图。

图6是本发明的方法中按堵塞时间轴分发剧情状态数据流程示意图。

图7是本发明的方法中进行执行剧情状态数据中的剧情指令的流程示意图。

图8是本发明的记录剧情状态数据流程示意图。

图9是本发明的根据交互事件更新剧情状态数据与堵塞时间轴的进度值流程示意图。

图10是本发明的系统原理框图。

具体实施方式

下面结合附图对本发明做进一步说明。

本发明可应用于所有类型游戏剧情的状态管理过程包括但不限于剧情跳过、剧情还原、跳转到指定剧情节点等。和常规的游戏剧情的开发不同,本发明通过将游戏剧情的描述信息进行提取生成堵塞时间轴支持基于堵塞时间轴的剧情交互逻辑,通过将游戏剧情的每个状态以剧情指令数据的形式进行记录支持设置游戏剧情跳转到任意进度值。

请参阅图1所示,本发明的一种游戏剧情状态管理的实现方法,所述方法包括如下步骤:

步骤S1、输入游戏剧情数据,解析游戏剧情数据生成堵塞时间轴;该堵塞时间轴为支持堵塞条件的时间轴,其中,堵塞时间轴剧情节点数据未设置堵塞条件节点时,时间轴将按照时间顺序正常运行;当设置了堵塞条件时,播放时间更新到堵塞条件节点时播放时间停止更新,等待堵塞条件满足后播放时间移动至下一个节点的开始位置继续播放;

步骤S2、还原游戏剧情数据中的剧情状态数据,并更新堵塞时间轴的进度值;

步骤S3、等待用户交互开启剧情播放,按堵塞时间轴分发堵塞时间轴对应的剧情状态数据;判断堵塞时间轴对应的剧情状态数据是否分发结束;是,停止结束流程;否,进行步骤S4;

步骤S4、执行剧情状态数据中的剧情指令,继续按堵塞时间轴分发堵塞时间轴对应的剧情状态数据,等待剧情指令执行结束;

步骤S5、记录剧情状态数据,等待用户交互,根据交互事件更新剧情状态数据与堵塞时间轴的进度值。

下面结合一具体实施例对本发明作进一步说明:

步骤S1、输入游戏剧情数据,解析游戏剧情数据生成堵塞时间轴;该堵塞时间轴为支持堵塞条件的时间轴,其中,堵塞时间轴剧情节点数据未设置堵塞条件节点时,时间轴将按照时间顺序正常运行;当设置了堵塞条件时,播放时间更新到堵塞条件节点时播放时间停止更新,等待堵塞条件满足后播放时间移动至下一个节点的开始位置继续播放;

请参见图2所示,所述解析游戏剧情数据生成堵塞时间轴进一步具体为:

步骤S11、输入游戏剧情数据;该游戏剧情数据中包含多个子剧情数据,游戏剧情数据中记录的数据包括剧情指令及其执行方式、剧情节点时间长度、是否堵塞节点、堵塞条件、是否支持跳过;

步骤S12、创建一个堵塞时间轴;

步骤S13、读取游戏剧情数据中的所有剧情节点数据;将所有剧情节点数据加入一个剧情节点数据队列中;

步骤S14、判断剧情节点数据队列是否为空,是,返回堵塞时间轴,并结束流程;否,进入步骤S15;

步骤S15、从剧情节点数据队列中读取一个剧情节点数据,将剧情节点数据加入堵塞时间轴的当前节点位置;堵塞时间轴的当前时间值向后移动到剧情节点数据中接入的时间值;

步骤S16、判断剧情节点数据中是否记录了堵塞值,该堵塞值为堵塞条件对应的数据值;否,进入步骤S17;是,堵塞时间轴中添加堵塞条件节点,设置堵塞值调整为剧情节点数据中记录的堵塞条件;堵塞时间轴当前时间轴向后移动一个堵塞节点单位时间值,进入步骤S17;

步骤S17、判断剧情数据节点队列中是否还有其它剧情数据节点,是,执行步骤S15;否,返回堵塞时间轴,并结束流程。

请参见图3所示,所述堵塞时间轴包括:堵塞时间轴的进度值和时间节点集合,所述时间节点集合由多个时间节点组成,每个时间节点包括时间长度、进度值、以及堵塞条件;请参见图4所示,所述剧情状态数据包括:当前剧情进度值和剧情指令集合,剧情指令集合由多个的剧情指令数据组成。

解析转换后的数据生成堵塞时间轴的示例如下:

堵塞时间轴上,堵塞时间轴中添加堵塞条件节点,设置堵塞值调整为剧情节点数据中记录的堵塞条件:

时间0节点播放进场动画,时间长度为5;

时间5节点添加了堵塞条件等待用户点击,时间长度为1;

时间6节点添加了主角播放动作A动画,时间长度为2;

时间6节点添加了NPC1播放动作B动画,时间长度为2;

时间7节点添加了NPC2播放动作C动画,时间长度为2;

则播放堵塞时间轴时的效果:

0时刻开始播放进场动画,播放了5单位时间;

等待用户点击,播放时间值跳到6时刻;

主角播放动作A动画、NPC1播放动作B动画;

时间播放到7时刻时,NPC2播放动作C动画。

本发明中堵塞时间轴的定义为支持堵塞条件的时间轴。如果未设置堵塞条件节点时,时间轴将按照时间顺序正常运行;当设置了堵塞条件时,播放时间更新到堵塞条件节点时播放时间停止更新,等待堵塞条件满足后播放时间移动至下一个节点的开始位置继续播放。

本发明中堵塞条件的定义包括但不限于角色到达指定位置、用户点击界面、用户与某个角色交互等。

步骤S2、还原游戏剧情数据中的剧情状态数据,并更新堵塞时间轴的进度值;

请参见图5所示,所述步骤S2进一步具体为:步骤S21、输入剧情数据,从堵塞时间轴中读取堵塞时间轴的进度值,从存储文件中读取剧情状态数据,判断剧情状态数据是否为空,否,进入步骤S22,是,创建一个新的剧情状态数据;并进入步骤S22;

步骤S22、判断堵塞时间轴的进度值是否小于当前剧情进度值,是,进入步骤S24;否,进入步骤S23;

步骤S23、更新剧情状态数据中的当前剧情进度值为堵塞时间轴的进度值,并将剧情状态数据保存至存储文件中,状态同步完成,并结束流程;

步骤S24、从剧情状态数据的剧情指令集合中读取堵塞时间轴的进度值对应的剧情指令数据,读取剧情指令数据中的剧情指令;

步骤S25、判断剧情指令是否有注册了对应的执行方式,是,执行对应的执行方式传入剧情指令数据并传入跳过执行过程参数,等待执行方式执行完成,进入步骤S26;否,直接进入步骤S26;

步骤S26、剧情指令执行完成,更新堵塞时间轴的进度值为堵塞时间轴的下一时间节点,继续执行步骤S22。

步骤S3、等待用户交互开启剧情播放,按堵塞时间轴分发堵塞时间轴对应的剧情状态数据;判断堵塞时间轴对应的剧情状态数据是否分发结束;是,停止结束流程;否,进行步骤S4;

本发明中剧情指令的定义包括但不限于显示角色、设置角色的位置旋转或大小、角色的动作播放、角色寻路、角色换装、角色特效播放、摄像机镜头的移动缩放或抖动、剧情UI显示等。

请参见图6所示,所述步骤S3进一步具体包括:

步骤S31、输入堵塞时间轴对应的剧情状态数据;

步骤S32、读取堵塞时间轴的进度值;

步骤S33、判断堵塞时间轴是否执行完成,是,堵塞时间轴对应的剧情状态数据分发结束并结束流程,否,读取当前进度值的剧情状态数据;

步骤S34、读取剧情状态数据中的剧情指令数据集合,将剧情指令数据集合中的数据加入一个剧情指令数据队列;

步骤S35、判断剧情指令数据队列是否为空,是,更新堵塞时间轴进度值到下一节点,并执行步骤S33,否,执行步骤S36;

步骤S36、从剧情指令数据队列中读取一个剧情指令数据,执行剧情指令数据;

步骤S37、判断剧情指令数据队列中是否还有其它剧情指令数据,是,执行步骤S36;否,更新堵塞时间轴进度值到下一节点,并执行步骤S33。

步骤S4、执行剧情状态数据中的剧情指令,继续按堵塞时间轴分发堵塞时间轴对应的剧情状态数据,等待剧情指令执行结束;

本发明中剧情数据的定义为剧情交互所需的数据的集合,一个剧情数据中可以包含多个子剧情数据,剧情数据中记录的数据包括但不限于剧情指令及其执行参数、剧情节点时间长度、是否堵塞节点、堵塞条件、是否支持跳过等。

请参阅图7所示,步骤S4进一步具体包括:步骤S41、输入剧情指令数据,读取剧情指令数据中的剧情指令;

步骤S42、判断剧情指令是否有注册了对应的执行方式,否,剧情指令执行完成并结束流程,是,进入步骤S43,

步骤S43、执行对应的执行方式传入剧情指令数据;

步骤S44、判断是否同步执行执行方式;否,等待异步执行方式执行完成,返回执行成功事件;剧情指令执行完成;是,返回执行成功事件,剧情指令执行完成。

步骤S5、记录剧情状态数据,等待用户交互,根据交互事件更新剧情状态数据与堵塞时间轴的进度值。

请参阅图8所示,所述步骤S5中记录剧情状态数据进一步具体包括:输入剧情指令数据,读取剧情指令数据中的剧情指令,判断剧情指令是否有注册了对应的执行方式,否,则记录完成,结束流程;是,则将此条剧情指令数据加入剧情状态数据的剧情指令集合中,更新剧情状态数据中的当前剧情进度值,将剧情状态数据保存至存储文件中,记录完成,结束流程。

请参阅图9所示,其中,所述根据交互事件更新剧情状态数据与堵塞时间轴的进度值进一步具体包括:步骤S51、输入用户交互数据,

步骤S52、读取用户交互数据中的剧情进度值记录为目标进度值,从剧情状态数据中读取当前剧情进度值;

步骤S53、从剧情状态数据中读取剧情指令集合中剧情指令数据对应的最大剧情进度值与最小剧情进度值;

步骤S54、判断目标进度值是否大于最大剧情进度值,是,更新目标进度值为最大剧情进度值,进入步骤S55;否,进入步骤S55;

步骤S55、判断目标进度值是否小于最小剧情进度值,是,更新目标进度值为最小剧情进度值,进入步骤S56;否,进入步骤S56;

步骤S56、判断目标进度值是否大于当前剧情进度值,是,更新堵塞时间轴的进度值为当前剧情进度值,进入步骤S57,否,更新堵塞时间轴的进度值为最小剧情进度值,进入步骤S57;

步骤S57、更新剧情状态数据中的当前剧情进度值为剧情测试进度;

步骤S58、判断堵塞时间轴的进度值是否小于当前剧情进度值,否,更新剧情状态数据中的当前剧情进度值为堵塞时间轴的进度值,将剧情状态数据保存至存储文件中,交互事件执行完成,并结束流程;是,从剧情状态数据的剧情指令集合中读取堵塞时间轴的进度值对应的剧情指令数据,读取剧情指令数据中的剧情指令,进入步骤S59;

步骤S59、判断剧情指令是否有注册了对应的执行方式,是,执行对应的执行方式传入剧情指令数据并传入跳过执行过程参数,等待执行方式执行完成,进入步骤S60;否,直接进入步骤S60;

步骤S60、剧情指令执行完成,更新堵塞时间轴的进度值为堵塞时间轴上的下一时间节点。

本发明基于通过数据解析模块生成堵塞时间轴对应的剧情状态数据。当收到用户开启剧情后,剧情分发模块按堵塞时间轴分发剧情状态数据,剧情数据执行模块执行剧情数据中的剧情指令。通过还原数据模块实现还原剧情状态数据、更新堵塞时间轴的进度值;记录数据模块,记录剧情状态数据、更新剧情状态数据等,实现完备的游戏剧情状态管理控制系统。

数据解析模块,该模块提供解析数据生成堵塞时间轴对应的剧情状态数据的能力,实现将统一的剧情数据解析为堵塞时间轴对应的剧情状态数据,为剧情分发模块提供数据源。

还原数据模块,该模块提供还原剧情状态数据、更新堵塞时间轴的进度值;

剧情分发模块,该模块提供按堵塞时间轴分发剧情状态数据的能力,实现从剧情状态数据中提起剧情指令数据集合并进行分发,推动剧情指令的执行。

剧情数据执行模块,该模块提供剧情指令执行的能力,实现执行剧情指令,将剧情指令中描述的数据应用到场景中的过程。

记录数据模块,该模块提供记录剧情状态数据、更新剧情状态数据的能力,实现剧情状态数据读取、保存、应用等剧情管理能力。

请参阅图10所示,本发明还提供了一种游戏剧情状态管理的实现系统,所述系统包括数据解析模块、还原数据模块、剧情分发模块、剧情数据执行模块、以及记录数据模块;

所述数据解析模块,用于输入游戏剧情数据,解析游戏剧情数据生成堵塞时间轴;该堵塞时间轴为支持堵塞条件的时间轴,其中,堵塞时间轴剧情节点数据未设置堵塞条件节点时,时间轴将按照时间顺序正常运行;当设置了堵塞条件时,播放时间更新到堵塞条件节点时播放时间停止更新,等待堵塞条件满足后播放时间移动至下一个节点的开始位置继续播放;

所述还原数据模块,用于还原游戏剧情数据中的剧情状态数据,并更新堵塞时间轴的进度值;

所述剧情分发模块,用于等待用户交互开启剧情播放,按堵塞时间轴分发堵塞时间轴对应的剧情状态数据;判断堵塞时间轴对应的剧情状态数据是否分发结束;是,停止结束流程;否,直接执行剧情数据执行模块;

所述剧情数据执行模块,用于执行剧情状态数据中的剧情指令,继续按堵塞时间轴分发堵塞时间轴对应的剧情状态数据,等待剧情指令执行结束;

所述记录数据模块,用于记录剧情状态数据,等待用户交互,根据交互事件更新剧情状态数据与堵塞时间轴的进度值。

所述解析游戏剧情数据生成堵塞时间轴进一步具体为:

步骤S61、输入游戏剧情数据;该游戏剧情数据中包含多个子剧情数据,游戏剧情数据中记录的数据包括剧情指令及其执行方式、剧情节点时间长度、是否堵塞节点、堵塞条件、是否支持跳过;

步骤S62、创建一个堵塞时间轴;

步骤S63、读取游戏剧情数据中的所有剧情节点数据;将所有剧情节点数据加入一个剧情节点数据队列中;

步骤S64、判断剧情节点数据队列是否为空,是,返回堵塞时间轴,并结束流程;否,进入步骤S65;

步骤S65、从剧情节点数据队列中读取一个剧情节点数据,将剧情节点数据加入堵塞时间轴的当前节点位置;堵塞时间轴的当前时间值向后移动到剧情节点数据中接入的时间值;

步骤S66、判断剧情节点数据中是否记录了堵塞值,该堵塞值为堵塞条件对应的数据值;否,进入步骤S67;是,堵塞时间轴中添加堵塞条件节点,设置堵塞值调整为剧情节点数据中记录的堵塞条件;堵塞时间轴当前时间轴向后移动一个堵塞节点单位时间值,进入步骤S67;

步骤S67、判断剧情数据节点队列中是否还有其它剧情数据节点,是,执行步骤S65;否,返回堵塞时间轴,并结束流程。

所述堵塞时间轴包括:堵塞时间轴的进度值和时间节点集合,所述时间节点集合由多个时间节点组成,每个时间节点包括时间长度、进度值、以及堵塞条件;所述剧情状态数据包括:当前剧情进度值和剧情指令集合,剧情指令集合由多个的剧情指令数据组成。

所述还原数据模块的实现方式进一步具体为:步骤S71、输入剧情数据,从堵塞时间轴中读取堵塞时间轴的进度值,从存储文件中读取剧情状态数据,判断剧情状态数据是否为空,否,进入步骤S72,是,创建一个新的剧情状态数据;并进入步骤S72;

步骤S72、判断堵塞时间轴的进度值是否小于当前剧情进度值,是,进入步骤S74;否,进入步骤S73;

步骤S73、更新剧情状态数据中的当前剧情进度值为堵塞时间轴的进度值,并将剧情状态数据保存至存储文件中,状态同步完成,并结束流程;

步骤S74、从剧情状态数据的剧情指令集合中读取堵塞时间轴的进度值对应的剧情指令数据,读取剧情指令数据中的剧情指令;

步骤S75、判断剧情指令是否有注册了对应的执行方式,是,执行对应的执行方式传入剧情指令数据并传入跳过执行过程参数,等待执行方式执行完成,进入步骤S76;否,直接进入步骤S76;

步骤S76、剧情指令执行完成,更新堵塞时间轴的进度值为堵塞时间轴的下一时间节点,继续执行步骤S72。

所述剧情分发模块的实现方式进一步具体包括:

步骤S81、输入堵塞时间轴对应的剧情状态数据;

步骤S82、读取堵塞时间轴的进度值;

步骤S83、判断堵塞时间轴是否执行完成,是,堵塞时间轴对应的剧情状态数据分发结束并结束流程,否,读取当前进度值的剧情状态数据;

步骤S84、读取剧情状态数据中的剧情指令数据集合,将剧情指令数据集合中的数据加入一个剧情指令数据队列;

步骤S85、判断剧情指令数据队列是否为空,是,更新堵塞时间轴进度值到下一节点,并执行步骤S83,否,执行步骤S86;

步骤S86、从剧情指令数据队列中读取一个剧情指令数据,执行剧情指令数据;

步骤S87、判断剧情指令数据队列中是否还有其它剧情指令数据,是,执行步骤S86;否,更新堵塞时间轴进度值到下一节点,并执行步骤S83。

所述剧情数据执行模块的实现方式进一步具体包括:步骤S91、输入剧情指令数据,读取剧情指令数据中的剧情指令;

步骤S92、判断剧情指令是否有注册了对应的执行方式,否,剧情指令执行完成并结束流程,是,进入步骤S93,

步骤S93、执行对应的执行方式传入剧情指令数据;

步骤S94、判断是否同步执行执行方式;否,等待异步执行方式执行完成,返回执行成功事件;剧情指令执行完成;是,返回执行成功事件,剧情指令执行完成。

所述记录剧情状态数据的实现方式进一步具体包括:输入剧情指令数据,读取剧情指令数据中的剧情指令,判断剧情指令是否有注册了对应的执行方式,否,则记录完成,结束流程;是,则将此条剧情指令数据加入剧情状态数据的剧情指令集合中,更新剧情状态数据中的当前剧情进度值,将剧情状态数据保存至存储文件中,记录完成,结束流程。

所述根据交互事件更新剧情状态数据与堵塞时间轴的进度值进一步具体包括:步骤S101、输入用户交互数据,

步骤S102、读取用户交互数据中的剧情进度值记录为目标进度值,从剧情状态数据中读取当前剧情进度值;

步骤S103、从剧情状态数据中读取剧情指令集合中剧情指令数据对应的最大剧情进度值与最小剧情进度值;

步骤S104、判断目标进度值是否大于最大剧情进度值,是,更新目标进度值为最大剧情进度值,进入步骤S105;否,进入步骤S105;

步骤S105、判断目标进度值是否小于最小剧情进度值,是,更新目标进度值为最小剧情进度值,进入步骤S106;否,进入步骤S106;

步骤S106、判断目标进度值是否大于当前剧情进度值,是,更新堵塞时间轴的进度值为当前剧情进度值,进入步骤S107,否,更新堵塞时间轴的进度值为最小剧情进度值,进入步骤S107;

步骤S107、更新剧情状态数据中的当前剧情进度值为剧情测试进度;

步骤S108、判断堵塞时间轴的进度值是否小于当前剧情进度值,否,更新剧情状态数据中的当前剧情进度值为堵塞时间轴的进度值,将剧情状态数据保存至存储文件中,交互事件执行完成,并结束流程;是,从剧情状态数据的剧情指令集合中读取堵塞时间轴的进度值对应的剧情指令数据,读取剧情指令数据中的剧情指令,进入步骤S109;

步骤S109、判断剧情指令是否有注册了对应的执行方式,是,执行对应的执行方式传入剧情指令数据并传入跳过执行过程参数,等待执行方式执行完成,进入步骤S110;否,直接进入步骤S110;

步骤S110、剧情指令执行完成,更新堵塞时间轴的进度值为堵塞时间轴上的下一时间节点。

本发明中堵塞时间轴的定义为支持堵塞条件的时间轴。如果未设置堵塞条件节点时,时间轴将按照时间顺序正常运行;当设置了堵塞条件时,播放时间更新到堵塞条件节点时播放时间停止更新,等待堵塞条件满足后播放时间移动至下一个节点的开始位置继续播放。

本发明中堵塞条件的定义包括但不限于角色到达指定位置、用户点击界面、用户与某个角色交互等。

本发明中剧情指令的定义包括但不限于显示角色、设置角色的位置旋转或大小、角色的动作播放、角色寻路、角色换装、角色特效播放、摄像机镜头的移动缩放或抖动、剧情UI显示等。

本发明中剧情数据的定义为剧情交互所需的数据的集合,一个剧情数据中可以包含多个子剧情数据,剧情数据中记录的数据包括但不限于剧情指令及其执行参数、剧情节点时间长度、是否堵塞节点、堵塞条件、是否支持跳过等。

本发明适用于所有类型游戏剧情的状态管理与交互过程,包括但不限于2D游戏中的游戏剧情的状态管理与交互流程、3D游戏中的游戏剧情的状态管理与交互流程、AR、VR游戏或应用中的游戏剧情的状态管理与交互流程、其它类型游戏中的游戏剧情的状态管理与交互流程。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

29页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种次世代游戏的核心任务剧情操作、指引系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类