本发明涉及游戏开发技术领域,更具体地,涉及一种可视化脚本编辑器的设计系统和方法,其可应用于手机游戏、网页游戏、客户端游戏等,尤其使用在可视化脚本编辑游戏逻辑的游戏中。
背景技术:
一般的游戏开发,脚本都是通过程序直接在ide上编码实现,然后再运行测试代码,其基本流程为:程序人员→安装集成开发坏境→游戏编码。可以看出,程序直接编码的方法存在以下缺陷:
1、该方法只能通过非常熟悉代码开发的程序人员来完成,使得开发游戏逻辑只能局限于程序,而不能够让策划、美术人员参与到游戏开发中,导致了独立开发团队脱离不了程序。
2、程序人员是在获得策划需求后在集成开发环境中进行开发的,一般策划需求都是通过伪代码写入文档,非常的不直观且表述往往不够严谨。相反地,策划人员如果用可视化脚本编辑,那么不仅仅可以很直观形象地表述了需求,甚至可以直接可视化编辑出可以直接运行的脚本,而不需要经过程序开发这个环节。省了编写程序这一翻译伪代码为具体代码的环节,不仅优化了开发流程,而且缩短了开发周期。
3、程序编辑出的代码一般只适用于当前的游戏,大部分逻辑无法抽离出来复用到其它的项目中,造成严重的浪费。
技术实现要素:
为了解决上述技术问题,使策划、美术人员更好地参与到游戏开发中,从而更好地分工合作、优化流程、缩短开发周期,方便形象化可视化理解游戏具体需求,增强代码可重用性和可扩展性,本发明提供一种可视化脚本编辑器的设计系统和方法,本发明解决其问题所采用的技术方案是:
本发明提供了一种可视化脚本编辑器的实现方法,该方法包括以下步骤:
a、创建流程节点,并建立与流程节点对应的图形化标识;
b、将流程节点连接成可视化脚本,并执行流程;
c、将可视化脚本数据进行序列化存储。
进一步地,流程节点包括:事件节点、控制结构节点、变量节点和函数节点,其中,事件节点用于响应游戏事件,控制结构节点用于实现游戏逻辑,变量节点用于获取变量类型,函数节点用于实现函数功能。
进一步地,每种流程节点的结构包括流程输入端口、流程输出端口、参数变量输入端口和返回变量输出端口中的至少一个。
进一步地,事件节点包括外部输入事件节点、系统事件节点和自定义事件节点。
进一步地,步骤b中的将流程节点连接成可视化脚本包括:从需要执行的事件节点开始,将事件节点的流程输出端口连接至下一个需要执行的流程节点的流程输入端口,然后将当前流程节点的流程输出端口连接至下一个需要执行的流程节点的流程输入端口,直至当前流程节点不具有流程输出端口,则可视化脚本连接完成。
进一步地,步骤b中的执行流程包括:
b1、在游戏运行时的每帧更新中,判断是否有外部输入事件、系统事件、自定义事件,如果有,则分发具体事件到可视化脚本中对应的事件节点开始执行;
b2、从事件节点开始,依次执行可视化脚本中连接好的每一个流程节点。
进一步地,步骤b中的执行流程还包括执行当前流程节点的内部流程,内部流程包括:首先,当前流程节点的流程输入端口执行当前流程节点对应的功能函数;如果当前流程节点有参数变量输入端口,则先执行参数变量输入端口获取输入值的函数,将获取的该输入值作为参数保存到参数变量输入端口中,作为功能函数的输入参数值;功能函数执行完毕后如果有返回值,则将该返回值传入返回变量输出端口以供给其它需要该返回值的流程节点获取;最后,执行流程输出端口连接的下一个流程节点的流程输入端口的函数。
进一步地,步骤c包括:将可视化脚本数据序列化存储到存储文件中,从而将流程节点内部和连接对象状态信息存储到存储文件中。
进一步地,步骤c还包括:在游戏运行中通过从存储文件中反序列化对象的状态,并重新创建对象以供使用。
此外,本发明还提供了一种可视化脚本编辑器的设计系统,该系统包括:
创建模块,用于创建流程节点,并建立与流程节点对应的图形化标识;
执行模块,用于将流程节点连接成可视化脚本,并执行流程;
存储模块,用于将可视化脚本数据进行序列化存储。
本发明的有益效果为:
1.有利于策划、美术人员参与到游戏开发中,从而更好地分工合作、优化流程、缩短开发周期。
在游戏开发中可以抽离出部分代码开分发给其他职位的人员使用可视化脚本编辑器编辑脚本,比如角色的ai或者通用的接口组件等。甚至只需要稍微懂得程序知识的策划、美术人员就可以参与到开发游戏。通过将部分工作合理地分配到策划美术人员进行,而不需要一直苦等程序的功能实现,这样能够更好地促进不同职位的人员分工,整体上缩短开发周期。
2.方便形象化可视化理解游戏具体需求。
通过可视化脚本编辑来替代伪代码,能够更加形象直观地理解需求。通过可视化脚本编辑器编辑出来的脚本也可以直接用于游戏逻辑中,在一定程度上可以避免重复开发。
3.增强代码可重用性和可扩展性。
可视化脚本编辑器是通过对流程节点的组合,通过将可视化脚本数据进行序列化存储和复用,流程节点可以抽离导出文件到其它项目中直接使用,从而增强了代码可重复使用的特性,也便于通过编辑器扩展脚本。
附图说明
图1为本发明的一种可视化脚本编辑器的实现方法的步骤流程框图;
图2示出了本发明所述流程节点的结构的一实施例;
图3a示出了本发明所述事件节点的结构的一实施例;
图3b示出了本发明所述事件节点的图形化标识的一实施例;
图4a示出了本发明所述控制结构节点的结构的一实施例;
图4b示出了本发明所述控制结构节点的图形化标识的一实施例;
图5a示出了本发明所述变量节点的结构的一实施例;
图5b示出了本发明所述变量节点的图形化标识的一实施例;
图6a示出了本发明所述函数节点的结构的一实施例;
图6b示出了本发明所述函数节点的图形化标识的一实施例;
图7为本发明一种可视化脚本编辑器的实现方法的执行流程的优选实施例流程图;
图8为本发明一种可视化脚本编辑器的设计系统的结构框示意图;
图9为本发明一种可视化脚本编辑器的设计系统的具体应用实施例。
具体实施方式
下面参照附图和实施例对本发明作详细描述,其中具体的实施例不应理解为对本发明范围的限制。
参照图1,在一个实施例中,根据本发明的一种可视化脚本编辑器的实现方法,包括以下步骤:a、创建流程节点,并建立与流程节点对应的图形化标识;b、将流程节点连接成可视化脚本,并执行流程;c、将可视化脚本数据进行序列化存储。
在一个优选的实施例中,流程节点是指包括变量读写、事件分发、函数执行和控制结构等某一个具体功能抽象出来的可执行流程的节点。根据实现具体功能的不同,流程节点可包括:事件节点、控制结构节点、变量节点和函数节点,其中,事件节点用于响应游戏事件,控制结构节点用于实现游戏逻辑,变量节点用于获取变量类型,函数节点用于实现函数功能。图2示出了流程节点的结构的一实施例,其中,流程节点的名称可由具体功能名称来定义,并且每种流程节点的结构包括流程输入端口(flowinput)、流程输出端口(flowoutput)、参数变量输入端口(valueinput)和返回变量输出端口(valueoutput)中的至少一个。
图3a示出了本发明所述事件节点的结构的一实施例,可以看出,事件节点通常为流程中的开始节点,相当于程序中的事件响应,根据其响应事件的类型不同,可包括用户输入事件节点(例如,响应鼠标、键盘、按钮点击)、系统事件节点(例如,start、update、lateupdate、碰撞事件)和自定义的事件节点。图3b示出了事件节点所对应建立的图形化标识,其具有响应外部点击事件的功能。
图4a示出了本发明所述控制结构节点的结构的一实施例,可以看出,控制结构节点相当于程序语言中的控制结构语句,根据其控制类型的不同,可包括条件节点(例如,if、switch)、循环节点(例如,for、foreach)、协程节点和等待节点等。通过控制结构节点可以实现所有能够想到的复杂的逻辑,例如,可以使用协程让当前流程节点挂起,也可以输出日志或者调试接口在当前流程节点中断调试,非常便于组合所需要的各种逻辑。图4b示出了控制结构节点所对应建立的图形化标识,其具有实现条件判断(即if控制结构)控制逻辑的功能。
图5a示出了本发明所述变量节点的结构的一实施例,可以看出,变量节点相当于脚本中的成员变量,根据其获取变量类型的不同,可包括自带原生类型节点(例如,int、float等)、游戏对象变量节点和泛型节点等。图5b示出了变量节点所对应建立的图形化标识,其具有获取整数类型(int)数值功能。
图6a示出了本发明所述函数节点的结构的一实施例,可以看出,函数节点相当于脚本中的成员函数,根据其实现函数功能的类型,可包括有参数有返回值的函数节点、有参数没有返回值的函数节点、没有参数有返回值的函数节点和没有参数没有返回值的函数节点。图6b示出了函数节点所对应建立的图形化标识,其具有将两整数相加的运算功能。
在一个优选的实施例中,步骤b中的将流程节点连接成可视化脚本包括:从需要执行的事件节点开始,将事件节点的流程输出端口连接至下一个需要执行的流程节点的流程输入端口,然后将当前流程节点的流程输出端口连接至下一个需要执行的流程节点的流程输入端口,直至当前流程节点不具有流程输出端口,则可视化脚本连接完成。
在一个优选的实施例中,步骤b中的执行流程包括:b1、在游戏运行时的每帧更新中,判断是否有外部输入事件、系统事件、自定义事件,如果有,则分发具体事件到可视化脚本中对应的事件节点开始执行;b2、从事件节点开始,依次执行可视化脚本中连接好的每一个流程节点。具体的执行流程如图7所示。
在一个优选的实施例中,步骤b中的执行流程还包括执行当前流程节点的内部流程,内部流程包括:首先,当前流程节点的流程输入端口通过反射或者内部实现控制逻辑执行当前流程节点对应的功能函数(function);如果当前流程节点有参数变量输入端口(即功能函数需要传入参数),则先执行参数变量输入端口获取输入值的函数,将获取的该输入值作为参数保存到参数变量输入端口中,作为功能函数的输入参数值;功能函数执行完毕后如果有返回值,则将该返回值传入返回变量输出端口以供给其它需要该返回值的流程节点获取;最后,执行流程输出端口连接的下一个流程节点的流程输入端口的函数。
本发明通过建立与流程节点对应的图形化标识,通过对可视化脚本编辑和执行,替代了传统的利用程序进行游戏开发的固有模式,方法简单而且直观,使策划、美术人员容易参与到游戏开发中,从而更好地分工合作、优化流程、缩短开发周期,可以更方便形象化可视化理解游戏具体需求。
在一个优选的实施例中,可视化脚本编辑是在脚本编辑器中编辑流程节点和连接流程节点,编辑完的流程节点需要将流程节点内部和连接对象状态信息存储到特定文件中。因此,步骤c具体包括:将可视化脚本数据序列化存储到存储文件中,从而将流程节点内部和连接对象状态信息存储到存储文件中;然后,在游戏运行中通过从存储文件中反序列化对象的状态,并重新创建对象以供使用。
将可视化脚本数据进行序列化存储可通过序列化工具来实现。序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。在c#中使用[system.serializable]该特性来标注该类是可以序列化的。在unity游戏引擎中对于类中某些对象不可以序列化的,可以通过继承iserializationcallbackreceiver接口,实现接口下的两个方法onbeforeserialize和onafterserialize,unity会在序列化对象之前回调onbeforeserialize,在反序列化后调用onafterserialize,这样就可以在该两个接口中实现对某些不可序列化的对象进行特殊的序列化和反序列化操作。
通过将可视化脚本数据进行序列化存储和复用,流程节点可以抽离导出文件到其它项目中直接使用,从而增强了代码可重复使用的特性,也便于通过编辑器扩展脚本。
此外,本发明还提供了一种可视化脚本编辑器的设计系统,如图8所示,为该系统的结构框示意图,该系统包括:创建模块,用于创建流程节点,并建立与流程节点对应的图形化标识;执行模块,用于将流程节点连接成可视化脚本,并执行流程;存储模块,用于将可视化脚本数据进行序列化存储。
为了更好地理解本发明提出的方法和系统,参照图9,下面介绍利用可视化脚本编辑器实现通过按钮控制物体的旋转功能。(1)在标识为ui_event的可视化脚本中,首先,通过外部输入事件节点对应的图形化标识uibutton(button)响应按钮点击;然后,通过函数节点对应的图形化标识$sperecanrot=vale和not分别对按钮点击响应数值化和取反操作;最后,将取反操作后的变量spherecanrot输送到变量节点对应的图形化标识$sperecanrot中进行保存;(2)在标识为update的可视化脚本中,首先,通过系统事件节点对应的图形化标识onupdate响应系统更新动作;然后,控制结构节点对应的图形化标识switchcondition对保存在$sperecanrot中的变量spherecanrot进行判断,当其判断结果为true时,输出执行函数节点对应的图形化标识rotate;最后,图形化标识rotate根据预设实现物体的旋转功能。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。