Project1

标题: SOU系统敌人AI收集思路贴 [打印本页]

作者: 九夜神尊    时间: 2010-10-27 19:14
标题: SOU系统敌人AI收集思路贴
准备写VX的ARPG。

现在的开发进程




要挑战RM→ARPG的手感问题。

虽然现在还没有做到敌人这一块,但是现在就开始收集意见了。

构思:

设置方式:


所有的敌人的AI都在这里设置(比XAS里面的设置移动路线简单几百倍)

一回合算5秒钟(整个 就像回合战一样的设置方式),五秒钟内怪物会根据设置生成一个行动。
然后怪物就会执行这个行动。攻击,逃跑就不说了。

技能,技能是整个SOU最深奥的一块,不会的人只需要插入技能脚本就可以了。每个技能有一个攻击范围(模糊的。比如会移动的技能怪物没法算AI),怪物会在这个范围内搜做目标(队友或者自己或者敌人),若技能范围内没有目标,则向最近的一个目标靠近。一直到搜索到目标为止,然后执行攻击,攻击完毕后进行下一次行动策划。
若5秒(一回合)内没有完成,则放弃攻击计划再次策划。

防御,在设置怪物防御动作并不是怪物在那里不动然后降低受伤。而是向最近的一个回复单元移动。

整个分析上所述,可以说让Ruby不堪重负。当然那是高段AI怪物的设定。满屏幕那种怪物电脑就是受得了,玩家也受不了。

普通AI,不启用寻路,简单的根据相对位置决定方向。不启用步行目标搜索,只针对主角。
SOU除了3D,基本上可以实现全部你能想到的。

期待吧……

作者: 冰舞蝶恋    时间: 2010-10-27 20:39
抢到一个宝贵的沙发~~不过貌似已经有过很多ARPG脚本了呢~~喵~
作者: 五彩西瓜    时间: 2010-10-27 20:45
技能有什么难的?
比如把移动速度提高到6+,几步后移除,做成冲锋的样子

早期我做事件版的时候,所有技能都带一个范围,一般以一个事件块做为目标点。
比如有个地狱BOSS:他锤地的时候,把地面上随即几个地方塌陷,冒出火山,每个火山有3*3个范围,  方法是把一个事件移到随即个位置,释放动画,收集这个坐标,和其他事件位置相计算,靠近本事件造成伤害。

AI我当时设置2个,一个是每个敌人单独处理的AI,另一个就是上面那范例说的,但是上面那个是循环运作的,一个敌人处理完后,在处理下一个。

例子:一群10个骷髅,10个法师骷髅,
可以给这群骷髅穿插执行,
第一个骷髅先判定是攻击还是后退,安插一个开关,改变到独立处理中,
如果是进攻可以有向目标冲锋,投掷骨头,如果距离近则一次近战技能,如果后退,独立处理中改变向法师骷髅靠近,或向最近一个骷髅靠近。
然后判断法师,我是做的先判定其他骷髅血少的有哪些,带入变量30~60号中,在判定这个骷髅的位置,如果都不符合,在判断主角的位置,是施展法术,或则召唤或则传送靠近等。
这个方法也可以写成一个阵法,判定与主角的位置和近战骷髅位置,改变自己行动向哪个位置(带入独立处理中向一个地点靠近,比如靠近2号骷髅后面2格,则是每次移动收集2号位置和方向在加减2格就是了)

这个循环很快的,差不多5帧就可以判定完一个骷髅了。所以在游戏中根本看不出来时逐个处理的。XP版的我设置过50个敌人不卡。更多的没尝试。
作者: 九夜神尊    时间: 2010-10-27 21:03
本帖最后由 九夜神尊 于 2010-10-27 21:07 编辑

回复 五彩西瓜 的帖子

Statu   Object  →  soul   灵魂

SOU系统不会使用任何开关以及变量,事件操作。全脚本!
可以自由创建事件,消除事件,动画播放器,带有攻击属性的物品(攻击器)。

只要需要产生伤害就必须创建一个攻击器,攻击器有自己的移动方式,攻击频率,攻击范围,攻击次数,生命时长
以及前前后后的一切,一个技能可能创建N个攻击器,每个攻击器同样可以再产生攻击器。攻击器的属性
和chartaire相同,可以移动,受阻,穿透也可以寻路。同样可以播放动画。

由于太灵活,所以使用起来只有会脚本的人才能写出来。

对于 Game_Event  Game_Player  Game_Companion(同伴) 采用同样的处理方式。

除了技能的制作,别的东西都要搬到RM的界面里。让即使不懂脚本的人也能使用!

PS。我再仔细看看你的骷髅法师。
作者: px.凤翔九天    时间: 2010-10-27 22:16
sou系统是神马?
作者: 红灯    时间: 2010-10-27 23:07
表示非常期待这个系统,ARPG的手感和敌人的AI表示鸭梨很大,从楼主表述的内容来看,如果此系统真能完善,ARPG游戏系统会有个突破。敌人备注那块也可以用来设置行为。国外有个ARPG系统利用的就是备注来设置相关敌人AI和攻击技能。
作者: 九夜神尊    时间: 2010-10-27 23:37
回复 红灯 的帖子


    手感方面,给我做动作图的神马知道。
stetus.active  状态+行动。摒弃网格!细节可以到微调每一帧动画。
唯一的缺点就是技能太难做,一个技能就是一个脚本页,甚至上千行脚本。



作者: 五彩西瓜    时间: 2010-10-27 23:45
我想大概你没怎么明白我的意思,总结下
你考虑的问题是敌人过多的时候,计算起来比较卡的问题。
我觉得可以循环处理,一个敌人AI判定完成后在判定下一个,打需要10帧,5个也就2.5秒处理间隔而已。
这个说细了内容就很多,讲的艰难。说几个抛砖引玉吧:
我做的时候有敌人呆滞问题,比如敌人超过50个,一个事件处理时间太长,敌人就呆在那等半天。   我就增加2个公共事件穿插在敌人处理事件中(敌人全局AI)  1,是把敌人编组,每一组由一个并行处理事件处理。  由于敌人随机的,所以还需要2来保证分配组的合理性。    2,是把所有敌人分配一个攻击序列,一个组中,序列号最大者,处理事件该目标的事件,这个序列分配很复杂,有浮动序列和固定序列,   固定序列负责分组,浮动序列负责攻击先后。
固定序列是按生成敌人时,随机分配的技能所决定,这个分组很有技巧的,我一时也说不完,大致就是把激活的敌人按数量比如10个敌人为一组,组先各分一个最大的数值,在分一个最小的数值,在分最大,在分最小…………,这样到最后,每组都为从高到低的排列了,好处是不会出现速度快的挤在一个组里,而是攻击快的攻击慢的都分在一个组里,相互穿插。这个处理也就1帧,而且是在激活一个敌人或则死亡一个敌人后处理,所以不费处理事件。
浮动就是像英雄无敌5那样排列方法,每处理完一个敌人后,则会按照固定序列增加相应数值,序列最大的优先处理,还可以根据和角色的距离,等来分配浮动序列。。。

  当时我做的时候,敌人还会持续施法等,还可以被中毒减速等状态,也能够狠好的运行。
做出大菠萝那样的智能,绝对可以的。
作者: 九夜神尊    时间: 2010-10-28 00:06
回复 五彩西瓜 的帖子

看明白了点,很实用而且是我没想到的好办法。
我还没想过把敌人按特征分组处理。
先这样,花一晚上时间想改怎么统一处理。
估计又是一个管理器。(这系统管理器一堆)
作者: SOU    时间: 2010-10-28 17:37
…………我只不过想吐槽系统的名字罢了
不过以5秒为一个回合会不会太长了?
作者: 九夜神尊    时间: 2010-10-28 18:19
回复 SOU 的帖子


    遇得到你!
然后5秒钟一回合的意思是怪物每个行动计划有5秒钟时间去执行。至于能不能成功,失败了怎么办那是另一回事。
作者: 沉影不器    时间: 2010-10-30 21:19
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1