跳到主要内容

喵氏二代事件ARPG系统附加战斗评分系统

[box=RoyalBlue]导言[/box] 默认回合制太拙?想做个自由的ARPG系统?不会脚本?甭担心,事件做ARPG照样杠杠滴!

项目描述
系统完善度★★★☆
学习难度★★★
学习时间30分钟-1小时
范例工程逐梦 v1.4 开源版

img

img

新系统特性

第一代事件ARPG系统: https://rpg.blue/thread-245657-1-1.html

相比起第一代,最明显的是第二代的制作工序要简单得多。第一代的判定事件基本位于战斗地图,第二代则将所有的判定事件全部移植到了公共事件内,当然这是有代价的。第二代的编写方法让敌人的数量受到了限制,你在制作系统之前必须考虑游戏中一次战斗需要多少敌人并尽量让敌人数量限制在这个范围内,画地图的时候必须考虑这个地图会不会发生战斗并把敌人NPC提前设置好。

其次,第二代的运行效率要比第一代高出几倍。第二代系统将第一代的“时刻判定坐标”修改为“只有当技能发动时才判定坐标”,并且进行一个技能判定的时候,其他技能判定不会多余地一起运算,所以相同电脑下,第一代的系统只要多弄几个技能就会让FPS掉到16,第二代系统在多个纯事件系统同时运行的情况下,最低也只掉到36FPS,再次看来性能上是一个飞跃。

要点

难度十分高,要求作者要非常熟练地掌握事件,并具备逻辑运算思维。范例中的技能是十分有限的,所以作者必须有举一反三的能力,运用到自身能够充分拓展,才能让系统具备自己的个性。

开始

首先打开公共事件,看到…………………………

img

是不是很吓人……其实这也就只是6个玩家技能。如果你要给玩家添加更多的技能就不止这么多了……

咳……刚刚是我吓你的,其实除去上一篇教程的血条之外,这个系统最最核心的只有3个:

img

这仨事件支撑起整个技能判断,用来判断所有技能的CD(冷却),GCD(公共冷却)和按键判断,没有这仨你弄什么技能都免谈。

除了这个核心,很重要的组成还分三部分:

第一部分:技能命中判定

img

第二部分:技能效果

img

第三部分:战斗的关键节点命令

img

这些咱们一个个慢慢来。

先从核心开始讲起,打开“公共CD总控”公共事件,这是系统循环判断的开头,目的是达到每次技能施展都存在间隔,保证技能施展衔接不会显得太突然。

img

注释:

①条件开关:进入战斗首先执行一次。嗯,这里其实是我疏忽的地方。按理说第一招是不存在GCD的,避免这种情况你可以在战斗开始前先把“结束公共CD”的开关打开。

②开关操作:GCD计时结束后,开启正式的技能按键判断。

然后找到“技能施展按键总控”公共事件,和事件菜单一样,里面采用的是集中式的写法。

img

注释:

①条件开关:注意了注意了。

②取消僵直:根据实际需要设置,照目前进度来看你还不需要这个,请无视吧。

③条件分歧:根据实际需要设置,这里是判断玩家是否中了控制技能时去行动能力。

④条件分歧:熟悉按键是事件党必备。这里的按钮X对应键盘上其实是A。除此之外,按钮A对应键盘Z和Shift,按钮B对应一切退出键,按钮C对应一切确认键,按钮Y对应键盘S,按钮Z对应键盘D,按钮L对应键盘Q,按钮R对应键盘W。

⑤条件分歧:这里要有一次按键判断是因为游戏中爪的必杀技触发按键是S→S→A+S,默认判定是玩家按两下S之后会打开“爪必杀可施展”开关,此时玩家若同时按下A和S就会满足必杀技的所有施展条件。

⑥标签跳转:从此处跳转到对应的地方继续进行下一步。

下面的事件应该很明了了,至于一些判断“段数”的分歧下面再细讲。 现在制作好触发条件,假设接下来技能已经完整地释放了,要做的就是给技能设置一个冷却的时间。那么就要在技能施展成功之后加上这个指令:

img

此时对应技能的CD会被初始化并开始计时,同时GCD也会开始计时,GCD计时则说明系统已经形成了一个环形,ARPG就是基于这个环形运行的。

至于怎么设置技能CD咱来看到“CD总控”的公共事件。

img

注释:

①条件分歧:判断玩家是否使用了技能。

②条件分歧:技能CD长度。

③开关操作:计时完毕后从新初始技能并可以再次使用。

完成了以上,看回“技能施展按键总控”公共事件。

img

只要添加上“当××CD开关为OFF时”的条件分歧,就可以实现技能CD了。帅呆了有木有!(大雾)

接下来是系统效果第一部分——技能范围判定。

看到那堆施展条件,看着挺多,归根结底也就两种类型:近身型和范围型。

如果你对RM的坐标系还没有概念,请记住:左上角为原点,越往右X越大,越往下Y越大。

这里都是公式计算,我不讲多,稍稍给大家梳理一下。

近身型:

img

如果角色朝向下,近身攻击应该在角色下方一格,那么敌人只有站在这个位置才算是命中。

在角色下方一格,说明敌人的X坐标与玩家X坐标相等,且敌人的Y坐标比玩家Y坐标大1,于是如果满足这些情况,技能就算命中了。

非常要注意的是,这只是其中一个面向判断,你还需要把剩下的3个面向写出来。

范围型:

img

假设技能范围为3格,那么就是以玩家为中心,XY坐标分别减去3,如果敌人的XY坐标大于得数,再将玩家的XY坐标从新代入并加上3,如果敌人的XY坐标小于得数,说明敌人站在了技能范围内,技能命中。如果不想从新代入,减去3之后加6也可以,得数是一样的。

范围技能没有面向,所以不需要考虑面向问题。

范例工程只有这两种类型,你肯定想问“如果远程攻击怎么做?” 我只说说公式:

依然假设玩家面朝下,远程攻击是敌人与玩家站在了一条直线上,那么敌人的X坐标是与玩家X坐标相等的。

其次,玩家面向下开枪不可能身后中弹,于是你需要判断敌人的Y坐标是否大于角色的Y坐标。

除此之外,你还可以模仿范围技能的写法给远程攻击设定一个射程,超过射程的敌人不命中。

系统效果第二部分——技能效果。

该系统内,技能只要命中就直接调用公共事件,这样会缩短命中判断的事件长度,方便作者debug。

img

img

注释:

①开关操作:打开敌人僵直,防止敌人被击时依然可以攻击玩家。

②褐色字体:有关于敌人和玩家的动作表现。

③变量操作:这里是敌人扣血。敌人的血量是采取变量扣血的,至于怎么设置敌人的血量往后会讲到。

④增加HP:这里是指技能消耗。范例游戏中所有技能消耗的都是HP,如果你的游戏存在SP或MP,可以改一改。

⑤慑:这是对特殊技能BUFF(状态)进行消除。因为该技能效果为“让敌人定身,但受到任何伤害都会解除状态”。

⑥这里是打开技能CD计时,“CD上限”的变量是用作可变CD技能的,因为范例中“牙”的技能有这个设定:

img

⑦开关操作:如果技能存在如“定身”这类的特殊效果,这个开关则是用来控制敌人的表现的。

⑧GCD控制:记得前面提到的“环”么?“环”的结尾就是这里了。只要技能成功发动,就又会回到GCD的判定。这就成了一个完整地圆环,看到这里你应该可以清楚地了解到这个系统是怎么运行的了。

技能效果还是根据自身需要来设置的,所以你的事件基本功还是很重要的。

剩下第三部分——关键节点命令

关键节点分为“战斗开始”“战斗结算”和“战斗败北”,应该很好理解吧?那咱们按顺序来讲。

首先是战斗开始,这个事件主要不在公共事件内。先关闭数据库,在左下角地图列表找到“系统测试图”,地图上有一个行走图为016-Thief01的事件,这里是我当初用来测试系统的,找到“开启战斗”的选项,那么里面的指令就是对战斗开始的准备。

img

注释:

①变量操作:此变量是对敌人的实际HP进行设定,技能命中是扣的是这个变量的数字。

②变量操作:此变量是确定敌人的最大HP,但这个变量在ARPG系统中无用(除非敌人有回血技能),范例里是用于血条系统计算HP百分比的。

③公共事件:初始化ARPG系统的UI,详见公共事件“UI显示”。

④开关操作:正式进入战斗的开关。

“战斗结束”在公共事件内判定,在地图上执行。找到“战斗胜利”公共事件,里面有个判断敌人是否死亡的事件。如果你的游戏存在多个敌人,照着多做几个判断就对了,不过记得加上控制敌人死亡表现的开关。

除此之外,范例工程中满足胜利条件后,会打开“战斗结束”的开关。做什么用的呢?关闭数据库,找到刚刚那个开启战斗的事件,然后翻到第三页。

img

注释:

①公共事件:UI的消失,详见公共事件。

②场所移动:可以让UI消失的不那么突然,顺便重置玩家位置。

③公共事件:数据初始化,详见公共事件。

最后,战斗败北。请看到“游戏结束”公共事件。

img

注释:

①条件分歧:某支线即使战斗失败也不会Gameover的判断。

②条件分歧:必败战不会Gameover。

③条件分歧:特殊剧情不会Gameover。

_(:з」∠)_这就是全部的系统设置。那么敌人在哪?

在系统测试图看到那只狗了么?那个就是战斗NPC。不过有一点千万要注意!千万要注意!千万要注意!很重要说三遍。这个NPC的事件ID必须是1!如果你的系统敌人有N个,那么ID必须是1、2、3、……、N。为什么?因为技能命中判定指定的就是这几个ID,所以当你确定一张地图内一定会发生战斗时,在其他事件放上去之前一定要先预定好几个战斗NPC。

好了,打开那个NPC,第一页是空的。这是不发生战斗的情况。看到第二页。

img

注释:

①出现条件:战斗开启时才会执行。

②移动规则:一般情况下都是这样,除非敌人比较特殊原地不动。

③触发条件:如果移动规则是“接近”,而且敌人攻击模式是近身,那么就要“与事件接触”。注意不是“与主角接触”,至于为什么,你设置成“与主角接触”然后在游戏中站着不动就知道了。

④条件分歧:防止敌人被击时依然能够攻击玩家。

⑤指令:敌人的攻击表现。

剩下的几页都是敌人被玩家用控制技能控制时的表现。因为范例中玩家技能比较少,所以多用了几个事件页来更精致地表现敌人被控。如果你的技能稍多或者敌人稍多,可以在控制技能命中敌人时打开一个总开关,这样可以让事件页好看一些,不过记得每个敌人对应一个被控制的开关,因为如果开关通用会发生一个被控全部停下的现象。

以上就是全部的ARPG系统剖析,有些人在ARPG战斗结束后喜欢加上战斗评分,那么该怎么设置呢?

看到公共事件“战斗评分”,这些我不解释应该都懂,主要是计算公式各位需要明白怎么算。

结束

于是你也有能力做出一款ARPG啦(~ ̄▽ ̄)ノ很开心否?还是看不懂?…………