欢迎光临小豌豆知识网!
当前位置:首页 > 生活技术 > 运动娱乐> 一种游戏关卡编辑方法和编辑器独创技术17767字

一种游戏关卡编辑方法和编辑器

2021-02-25 09:25:15

一种游戏关卡编辑方法和编辑器

  技术领域

  本发明涉及游戏开发技术领域,尤其涉及一种游戏关卡编辑方法和编辑器。

  背景技术

  随着玩家对游戏的画面和玩法的要求越来越高,越来越多的游戏从2D向3D转变。

  在2D游戏中,只需记录敌人的二维坐标和出生时间,主角不会移动,不需要复杂玩法的关卡,所以采用数据表就能实现关卡的编辑。通常的做法是,在数据表的各列分别配置:敌人资源,敌人出现坐标,敌人出现时间,敌人血量,敌人攻击等数据,数据表的各行分别表示为各个敌人配置的上述数据,比如出现在画面的什么位置,什么时候出现,血量和攻击量等。如果需要增加其他信息,可以通过增加新列来实现。

  在3D游戏的关卡中,不但敌人的出现方式、出现位置多样,而且关卡元素、主角和敌人的移动路线也更加丰富。因此,需要编辑的元素更多,更复杂。假设采用2D游戏关卡编辑中使用的数据表的形式去编辑3D游戏关卡中主角的移动路线,就得在数据表中记录下每个主角行动的坐标,还得记录每个坐标与坐标之间行动的速度,视角的朝向等参数,这样几乎会无限扩大数据表的容量。并且,各个关卡元素之间的逻辑关系无法用数据表的形式表达出来,假设需要移动到某个点后,才出现敌人,就无法配置。可见2D游戏关卡编辑中使用的数据表的方式已经无法支撑3D关卡的编辑。

  目前,主流手机通常是由Unity引擎或者Unreal引擎实现3D游戏。在3D游戏关卡编辑过程中,一般可以通过不同的事件驱动来形成一个个关卡数据流。Unity关卡编辑插件:Playermaker插件和Behaviac插件都支持事件触发。但是,Playermaker插件适合程序的需求不大,短平快类的小项目,事件不够多样性,难于满足3D射击游戏编辑元素多、事件多样化的需求。Behaviac是游戏AI的开发框架组件,主要用于游戏内NPC等AI逻辑的事件编辑,不适用于涉及多种关卡元素的(比如障碍,场景可交互元素)却不涉及AI的关卡设计。

  发明内容

  本发明一方面提供了一种游戏关卡编辑方法,包括:

  生成待编辑关卡中的所有事件,所述事件包括元素和行为;

  设置各所述事件是否阻断;

  设置初始事件及所述初始事件的优先级;

  按顺序连接各所述事件,生成关卡文件。

  优选地,所述生成待编辑关卡中的所有事件,包括:

  生成碰撞体事件;

  生成主角事件;

  生成可交互元素事件;

  生成敌人事件;

  生成主角移动事件;

  生成结束条件事件。

  优选地,所述生成碰撞体事件,包括:

  新建“PrefabBorn”事件,在场景中生成碰撞体;

  在场景中调整所述碰撞体的位置、大小;

  保存所述碰撞体后将其在场景中隐藏。

  优选地,所述生成主角事件,包括:

  新建“HeroBornNode”事件,在场景中生成主角的出生坐标;

  移动或旋转所述坐标调节主角出生时摄像机的朝向。

  优选地,所述生成可交互元素事件,包括:

  新建“PrefabBornNode”事件,将可被攻击的道具放置在场景中,并设置所述道具的参数;

  新建“NPCBornNode”事件,将友方角色模型放置在场景中,并设置所述友方角色的行为逻辑;

  新建“PrefabBornNode”事件,将可破碎物体放置在场景中,并设置所述可破碎物体的坐标、破碎后的形状以及触发破碎的方式。

  优选地,所述生成敌人事件,包括:

  新建“ZombieBornNode”事件,并在此事件下新建“ZombieWave”事件,设置当前敌人在场景中的参数及其行为逻辑;

  将所述当前敌人在场景中的参数及其行为逻辑套用于其他敌人。

  优选地,所述生成主角移动事件,包括:

  新建“HeroMoveNode”事件,并在场景中移动坐标至主角移动的目的地,设置主角移动方式、速度和视觉变化方式。

  优选地,所述生成结束条件事件,包括:

  新建“EndNode”事件,设置触发事件的延迟时间,并在该事件上选择关卡胜利或关卡失败。

  优选地,所述按顺序连接各所述事件,包括:

  通过箭头进行各事件之间的连接,箭头的顺序为事件触发的顺序;

  通过逻辑事件进行一对多或多对一事件的连接。

  本发明另一方面提供了一种游戏关卡编辑器,包括:

  控制模块,包括多个子控制模块,用于控制各所述子控制模块的开启以及功能调试;

  事件模块,用于创建事件、设置事件参数以及连接事件;

  信息模块,用于显示当前事件的详细信息以及操作按钮。

  附图说明

  图1为本发明所述的游戏关卡编辑方法流程示意图;

  图2为本发明所述的游戏关卡编辑器结构示意图。

  具体实施方案

  为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案做详细的说明。

  本发明提供的方法可以在如下的终端环境中实施,该终端可以包括一个或多个如下部件:处理器、存储器和显示屏。其中,存储器中存储有至少一条指令,所述指令由处理器加载并执行以实现下述实施例所述的方法。

  处理器可以包括一个或者多个处理核心。处理器利用各种接口和线路连接整个终端内的各个部分,通过运行或执行存储在存储器内的指令、程序、代码集或指令集,以及调用存储在存储器内的数据,执行终端的各种功能和处理数据。

  存储器可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器可用于存储指令、程序、代码、代码集或指令。

  显示屏用于显示各个应用程序的用户界面。

  除此之外,本领域技术人员可以理解,上述终端的结构并不构成对终端的限定,终端可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,终端中还包括射频电路、输入单元、传感器、音频电路、电源等部件,在此不再赘述。

  实施例一

  如图1所示,本发明实施例提供了一种游戏关卡编辑方法,包括:

  S101,生成待编辑关卡中的所有事件,所述事件包括元素和行为;

  S102,设置各所述事件是否阻断;

  S103,设置初始事件及所述初始事件的优先级;

  S104,按顺序连接各所述事件,生成关卡文件。

  本发明提供的游戏关卡编辑方法,以事件为驱动,而且关卡中涉及到的各个元素,主角的各个行为均作为关卡中一个个独立的事件,比如敌人生成是一个事件,主角移动是一个事件,每个事件均可进行单独的参数编辑。并且将这些事件相互关联,产生先后顺序,比如先敌人生成,在主角移动,或者一边主角移动,一边敌人生成。从而实现关卡编辑。

  该方法可编辑的关卡中包括多种不涉及AI的关卡元素(比如障碍,可被攻击的道具和可破碎物)弥补了Playermaker插件和Behaviac插件在关卡编辑中的不足。

  执行步骤S101,生成待编辑关卡中的所有事件。本发明中,将关卡中涉及到的元素、行为均生成关卡中独立的事件,从而以事件为驱动实现对关卡的编辑。

  本发明中,生成的事件包括:碰撞体事件、主角事件、可交互元素事件、敌人事件、主角移动事件和结束条件事件。

  其中,根据关卡模型和想要的效果,在编辑关卡中可设置一些虚拟的碰撞体,用于阻挡敌人的移动,限制主角的路线。

  具体的,生成碰撞体事件可采用如下方法进行实施:

  新建一个“PrefabBorn”事件,点击Add Item,新增一个“Ob_Cube”,“Ob_Cube”即为长方体的碰撞体,点击“CreateObis”,在关卡场景中生成这个碰撞体;

  在场景中移动这个碰撞体的位置,缩放碰撞体的大小,以达到想要的碰撞效果。

  点击编辑器右侧的“Applyobis”,保存之前的设置;

  点击“Clearobis”,清理场景中的碰撞体,把场景中的碰撞体隐藏,以免影响后面的关卡编辑。

  主角事件包括了主角在关卡中的位置,朝向等信息。编辑时,在3D场景中设定主角的出生坐标,和出生时摄像机的朝向,在运行时,会先载入主角。进一步地,如果想让敌人朝着另一个方向移动,也可在想要的位置设置一个不加载模型的虚拟主角,敌人会优先朝着虚拟主角移动。

  具体的,生成主角事件可采用如下方法进行实施:

  新建一个“HeroBornNode”,此时在场景模型中会出现此节点的坐标,移动坐标到想要的位置,旋转坐标,将主角的视角朝向调整好。

  新建一个“HeroBornOneBloodNode”,此时在场景模型中会出现虚拟主角的坐标,移动坐标到想要的位置,敌人会优先选择此目标,从而达到敌人不朝着主角移动,而朝着其他方向移动的效果。

  生成可交互元素事件包括:

  放置关卡中可被攻击的道具,配置相应的参数;

  放置关卡中友方角色,选择角色的模型,设定移动路线的起始点坐标和终点坐标,配置角色使用的道具,如木箱,水桶等,在关卡逻辑上,可定义友方角色被击败后对关卡完成度的影响;

  放置关卡中可破碎的物体,如墙面,木门,设定坐标,通过工具编辑其破碎后的形状,配置触发破碎的方式。

  具体的,放置关卡中可被攻击的道具可采用如下方法进行实施:新建一个”PrefabBornNode”,选择想要放置的物体,比如油桶,在场景中移动油桶的坐标,同时设定油桶的参数,比如油桶的爆炸范围,血量,爆炸伤害。

  放置关卡中友方角色可采用如下方法进行实施:新建一个“NPCBornNode”,选择想要放置的友方角色模型和行为逻辑,比如如果想要一个在搬运木箱的角色,则新建一个“MoveNode”来控制角色移动,在场景中设定移动的初始点、搬运点和返回点;选择搬运的物体如水桶、木箱,在运行时,角色可以从初始点自动移动到搬运点,在搬运点拿起物体,移动到返回点放下物体,再移动至搬运点,如此循环。

  放置关卡中可破碎的物体可采用如下方法进行实施:新建一个“PrefabBornNode”,选择想要放置的可破碎物体,比如可以破坏的墙面,在场景中移动墙的坐标,缩放墙的尺寸。打开墙面的编辑器,编辑破碎后,各个碎片的大小,形状,设定墙的触发器,比如一定时间后,触发墙的破碎。

  生成敌人事件包括:设定敌人的出生坐标、出生方式、模型、贴图、数量、出生间隔、移动速度、攻击和血量加成的倍数。出生后,敌人会通过导航,自动寻找路线朝主角移动;将所述当前敌人在场景中的参数及其行为逻辑套用于其他敌人。

  具体的,生成敌人事件具体可以采用如下方法进行实施:新建一个“ZombieBornNode”,然后在此节点下,新建“ZombieWave”,选择场景中移动敌人的出生点坐标,填写出生的时间,在下拉菜单中,选择想要的敌方模型和出生的方式,填写敌方的数量,如果想要随机值,可设定最大数量和最小数量,如果想要间隔出现,可设定间隔的最小时间和最大时间,如果最小时间等于最大时间,则是固定时间间隔。

  进一步的,模型A,B,C与行为逻辑X,Y,Z可以互相套用,组成AX,BX,CX,AY,BY,CY,AZ,BZ,CZ九种敌人,大大增加了敌人的丰富性。

  生成主角移动事件为:在场景中设定路线的坐标,在关卡中主角可自动按照坐标前进

  具体的,生成主角移动事件可采用如下方法进行实施:

  新建一个“HeroMoveNode”,然后在场景中移动坐标,作为主角移动的目的地,选择跑步还是行走,此选项会影响移动的动作,并填写移动的速度,选择移动时视角的变化方式,如:一直朝前看;自由观看;自由观看,但是到达终点后,朝某个方向看等。

  默认状态下,关卡文件中所有事件结束后,关卡胜利,当所有事件没有结束,但主角血量为0时,关卡失败。关卡胜利和失败都会结束关卡。但是还可以增加关卡结束事件(包括关卡胜利结束事件和关卡失败结束事件),用于在事件进行过程中结束关卡的情况。

  具体的,生成结束条件事件可以采用如下方法实施:新建一个“EndNode”,配置这个事件延迟的时间,在这个事件上选择关卡胜利或关卡失败。在关卡运行时,会延后一定时间触发关卡结束,延后的时间可为0,表示关卡立即结束。

  执行步骤S102,设置各所述事件是否阻断。阻断事件在程序判断时,需要完全结束后才会进行下一个事件。非阻断事件则只需要开始,便可以继续进行下一个事件。

  执行步骤S103,设置初始事件及所述初始事件的优先级。

  从所有的事件里面选择出初始事件,初始事件会在关卡开始时触发,可定义多个初始事件。

  具体的可以采用如下方法实施:在想要的事件上点击Ctrl+鼠标左键,该事件上方会出现“ST”+数字的标记,此数字即为优先级,载入关卡时,初始事件也会按优先级进行排序,优先级高的排序在前面。可点击数字进行优先级的编辑。

  执行步骤S104,按顺序连接各所述事件,生成关卡文件。事件与事件通过箭头连接,箭头的顺序即为事件触发的顺序。

  具体的可以采用如下方法实施:将鼠标移动至事件右边的原点处,按住鼠标,拖动至另一个事件的上方。

  根据实际需求,事件连接的方式可以是一对一,即从一个事件到另一个事件,也可以是一对多或多对一,即从多个事件到一个事件,或者从一个事件到多个事件。如果是一对多或多对一的连接方式,可以新增加逻辑事件,具体为:新建一个“LogicNode”,即逻辑事件,选择这个逻辑事件的方式,如多对一,一对多。以多对一为例,将多个事件先连接到这个“LogicNode”,再将鼠标移动至“LogicNode”事件右边的原点处,按住鼠标,拖动至另一个事件的上方。即可实现多对一的事件触发机制。

  保存上述所有的设置,生成关卡文件。

  实施例二

  如图2所示,本发明实施例提供了一种游戏关卡编辑器200,包括:

  控制模块201,包括多个子控制模块,用于控制各所述子控制模块的开启以及功能调试;

  事件模块202,用于创建事件、设置事件参数以及连接事件;

  信息模块203,用于显示当前事件的详细信息以及操作按钮。

  其中,多个子控制模块包括:Configure,用于开启或关闭关卡设置面板;AutoFocus,用于开启时自动把场景视图的摄像机移动到感兴趣的位置;Root,用于选中关卡的根节点;Current,用于选中当前节点;BlackBoard,用于内置变量面板;Code,用于双击节点打开对应的C#脚本文件;Debug,用于开启或关闭调试模式。

  在使用时,比如,点击Configure,可以打开Configure子控制模块,该模块中从左到右从上到下分别是:加载关卡按钮,保存关卡按钮,刷新默认运行关卡名称,选择加载关卡文件夹内的关卡;其中,关卡名称是指关卡对应的场景名称,游戏模式以及对应参数。

  在事件模块中,右键可以调出创建事件功能框,在功能框里选择想要的事件。按住Ctrl键并点击事件可以设置事件为初始事件,初始事件上方有ST_xx文字。再次点击可以撤销该操作。

  在信息模块中,可以显示当前选中事件的详细信息以及操作按钮。比如,当选中HeroBorn事件时,可以显示设置位置按钮pos。选中ZombieBornNode事件时,可以显示僵尸生成事件的详细信息。

  尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

《一种游戏关卡编辑方法和编辑器.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)