返回列表 发帖

[历史] [讨论]关于冰墙性质和魔物AI的部分看法

为什么冰墙放斜了怪物能冲过来?为什么单冰可以卡住怪,为什么有时单冰卡会失败?为什么看似把怪封死了,怎么
一个暴风雪就把它吹出来了?冰墙对远程怪似乎无效?冰墙使用中的诸多疑问促使我开了这帖。




由于许多现象是冰墙特性和魔物AI共同作用的结果,涉及的方面比较多,所以看的时候请联系起来看。如果是因为我
的表达能力问题那不妨多看几遍




以下为不完全测试,所以有不完善或者错误的地方,欢迎补充修正。
----------------------------------------------------------------------------------------------------------------------------------------------------------





1,冰墙对移动以及技能的影响

RO里一共有8个方向,上下左右加4个斜角,经过测试对魔物(BOSS例外)每一格冰墙的右上,上,右3个方向是封闭的,
其余5个方向则是开放的。也就是说误判路径的魔物只能从那5个方向进入冰墙,同样进入冰墙的魔物也只能从那5个方向出
去,进入冰墙的魔物如果打算从右上,上,右出去,会失败,这就是卡怪的现象,以上是对于单格冰墙来说的,实际中冰墙
是一排5格子。

结论:单格冰墙会阻挡一般魔物来自右上,右,上3个方向的进入以及从这3个方向出去,另外测试对冰墙中的玩家来说,
      如果试图从这3个方向出去的话会出现很严重的错位。但是可以走得出去。

    对技能的影响:冰墙内的魔物崩裂打不到。以魔物为中心的九格用冰墙完全封死的话暴风雪也打不到等等。
                  (内容不完全,欢迎补充。)


以下是斜冰墙对误判路径的魔物的阻挡测试

图⑴ 魔物经过冰墙         图⑵魔物经过冰墙缝隙
○○○○○○○○○○○    ○○○○○○○○○○○
○○○◆○○○○○○○    ○○○○◆○○○○○○
○○○○①○○○●○○    ○○○○○①○○●○○
○○○○○②○●○○○    ○○○○○○②●○○○
○○○○○○③○○○○    ○○○○○○●③○○○
○○○○○●○④○○○    ○○○○○●○④○○○
○○○○●○○○★○○    ○○○○●○○○★○○
○○○○○○○○○○○    ○○○○○○○○○○○

◆ 魔物初始位置
★ 玩家位置
● 冰墙
①②③④ 魔物的误判路径(解释在魔物AI分析下面)

经过测试,魔物从左上进攻(如上两张图)两种情况下都能穿过冰墙,就是说冰墙起不到阻挡效果
         
          换成魔物从右下方进攻,结果也和上面一样
         
          再换成魔物从右上方进攻,魔物经过冰墙的情况会挡住魔物并使其丢失目标或者绕墙,而冰墙缝隙的话阻挡不了
         
          最后换成魔物从左下方进攻,魔物经过冰墙的情况会被单冰卡住,而冰墙缝隙的话还是阻挡不了
        
          把以上状况和论述冰墙对移动以及技能的影响起来看,发现与理论正好吻合。而且可以发现冰墙缝隙是可以斜穿行的,
          比如从图⑵中②移动到③
          用一些击退技能也是同样的现象。(可以拿邪恶食人花+冰墙雷鸣测试)





--------------------------------------------------------------------------------------------------------------------------------------------------------





2,主动魔物AI共性部分简单分析
            
          无目标的话是闲置状态,当在视野内发现目标的时候则计算追击路径,符合追击条件后进入追击状态
          不符合的话回到闲置状态,追击状态下目标进入普通攻击射程,则进入攻击。
         
          冰墙阻碍的不是视野,可能是影响路径的计算,当路径距离超过一定值时,魔物不会进入追击状态。
          所以对于远程怪,只要你在视野中,且在射程内,那是阻止不了攻击的。只有场景障碍才会阻挡视野,阻挡攻击。



追击中的路径的误判
         
          魔物追击开始时会先计算追击路径,魔物会按上一次计算的路径走下去直到受外界影响(比如受攻击,被念反
          ,目标玩家进入射程等等)或者到达即定地点。不然不会主动改变路径。在这个时候放冰墙魔物会按照之前算
           好的路径走下去并撞上冰墙,这种情况暂称魔物误判路径。(如果魔物是从下往上,从左往右,从左下往右
     上走会被单冰卡住)而其他情况下魔物判断路径时是会视冰墙为障碍并绕过冰墙。
         
          误判路径的情况下,才会造成单冰卡怪和魔物斜穿冰墙等奇怪现象。单冰卡怪失败被魔物绕过来,那就意味着
          当你放下冰墙后由于外界原因魔物重判路径。于是冰墙被魔物AI考虑到,最后魔物绕墙过来了。
         
          当上面斜冰墙测试的时候如果冰墙能被魔物AI考虑到,那这种情况下就不会出现穿墙的现象。

[ 本帖最后由 ysp319 于 2009-9-26 08:20 编辑 ]

原帖由 flydreamcyx 于 2009-9-26 01:13 发表
讲得蛮通俗的
LZ表达很不错啦

关于怪的行动路线
在怪物自己移动前,先要产生算路
先斜线移动到直线走能攻击当时玩家所站格的最近的行/列
再改为直线向能攻击到算路产生时玩家所站点的格行进
到达后如果未 ...

又去测试了一下,看来我的3秒论可能是错误的.魔物应该是按你说的方式移动.
如果能找移动速度足够慢的魔物,那测起来就很方便了,编辑掉.

[ 本帖最后由 ysp319 于 2009-9-26 07:53 编辑 ]

TOP

原帖由 flydreamcyx 于 2009-9-26 01:13 发表
讲得蛮通俗的
LZ表达很不错啦

关于怪的行动路线
在怪物自己移动前,先要产生算路
先斜线移动到直线走能攻击当时玩家所站格的最近的行/列
再改为直线向能攻击到算路产生时玩家所站点的格行进
到达后如果未 ...

测试完看来魔物的重算路径的方法是按你所说的方式来进行的.

不过"再改为直线向能攻击到算路产生时玩家所站点的格行进"这点我认为不正确
魔物移动路径的算法应该是一样的.不会因为自身射程而有差异,都是按照射程为1进行计算.
就算是远程怪也是一样,毕竟对程序来说要根据魔物的射程和视野来逐条写AI是很麻烦的
事.至于现实中为什么远程怪不会先走到玩家身边再攻击而是进入射程就攻击,我认为这个
是优先级的问题.攻击优先于算路.一旦玩家进入射程.就会使远程怪进入可攻击射程后就
开始攻击而不是走到底.

[ 本帖最后由 ysp319 于 2009-9-26 11:53 编辑 ]

TOP

关于LS的第六点,实际是这样的:
怪物分3种状态.1是闲置.2.是追逐.3是攻击
根据不同怪物的AI.在这3种状态下会释放不同的技能.一般来说被打无法反击会飞的怪都是在闲置中添加了受攻击使用瞬移这条指令.而单冰卡怪打怪不飞的情况实质是被单冰卡住的怪是处于追逐状态的.
因为怪算路的时候不会把自己所处的那格考虑进去.这样会造成怪算好路径开始追击却无法移动的情况
而大部分会飞的怪在追逐和攻击状态都是不飞的.所以可以单冰卡杀.而用冰墙封死的话.怪算路后不满足追逐条件会回到闲置状态.这时候攻击就会触发闲置下的瞬移而使怪飞走.

对于远程怪.其实算法和近程怪一样.都是算路径满足条件后开始追击.最重要的一点:触发攻击状态的唯一条件是目标视野内且进入普通攻击射程.而且这点优先于算路.也就是说.当满足攻击条件就开始攻击.在条件满足的情况下,攻击优先于追逐,追逐优先于闲置.所以远程怪不会傻傻地走到玩家身边才开始攻击.进入射程就开始攻击了

冰墙影响的是算路.不影响视野.这点对所有怪来说都是一样的.
举个例子研3暗神射.如果你进入射程.且在视野内.那必然遭攻击.因为攻击条件已经满足了,而且攻击是最优先选择,那自然冰墙怎么封都是无用的.即便算路失败也不会处于闲置中.所以对远程怪来说冰墙是会影响它算路,不过你一旦进入视野且在射程内.那照样攻击.

就你的举例女妖:女妖是近程怪.被冰墙封死后.,算路条件不满足,由于是近程那么攻击条件也不满足.那自然处于闲置中.而女妖的闲置中无攻击玩家的技能.玩家不会被技能攻击.
再另一种情况.单冰卡的女妖是处于追击中.如果女妖有追击技能.而玩家处在技能锁定范围内.那自然会中招.这就是玩家被怪追.怪会放技能攻击的现象.但是实际上怪物不是处于攻击状态下而是追击状态.
最后强调一下冰墙不影响视野只影响算路.

[ 本帖最后由 ysp319 于 2009-9-26 15:57 编辑 ]

TOP

斜了也能卡.只要怪物是试图往右,上,右上这3个方向都有可能卡住.
一般不会主动放斜的.都是失误直的没放好放斜了

TOP

针对冰墙修改怪物AI的案例就是BOSS属性怪的修改了.
1.5版的AI应该不是针对冰墙作的修改.那是否有什么影响就不好说了.

TOP

返回列表