Project1

标题: 请教AI回避弹幕的算法? [打印本页]

作者:  眠     时间: 2017-6-6 11:32
标题: 请教AI回避弹幕的算法?
请问大家有没有研究过弹幕游戏,毕竟这里看到还是有不少东方爱好者。

有人对花映冢中,敌方AI可以一定程度自动躲避弹幕的算法有所研究吗?

能否请教一下大致上应该怎么实现吗?
作者: fux2    时间: 2017-6-6 11:58
http://video.tudou.com/v/XMjEyMzk5OTUwNA==.html

很久很久以前自己做过一个红魔乡的躲避AI(外挂形式
不过严格上来讲不算AI,而是辅助,因为不是完全由AI操作,是根据弹幕的方向和坐标来预估接下来的位置,从而进行本机的微调。
大体移动还是靠人……

作者: yang1zhi    时间: 2017-6-6 11:59
那种游戏一般敌人都是规则式行动的。

不知道这样做可以不可以。
把敌人做两层,外面一层打中不受伤,判断回避
里面那层打中受伤
作者: 柳之一    时间: 2017-6-6 20:06
本帖最后由 柳之一 于 2017-6-6 20:21 编辑

“”无敌“”算法:当玩家按下发射弹药键的时候,此瞬间弹道盘面已知,弹道轨迹都是函数,敌方unit自己的体积和移动速度可以算出安全空间,甚至5秒后的安全位置,直到当前盘面不能完全闪避,就根据伤害权重来选择最小伤害的移动路径,或者使用自己的闪避技能。


补充:
但是这样损耗机器性能,总打不到敌人也窝火。

敌人unit肯定有碰撞检测,假设是一个 半径1cm的圆环Collider,撞击这个圆环就会收到伤害,那么给unit再加上一个外圈Collider,半径是5cm,这个当做敌人警戒视野,当进入碰撞器时(即进入警戒视野的时候),unit开始移动,避开此子弹的轨迹。好处是,半径越小,给计算机带来的负担也小,但是敌人也越傻。半径大,敌人也越来越聪慧。这个半径值恐怕就是楼主说的一定程度。


综合结论:
小兵战的时候,半径小一些。boss战的时候大一些就行。
作者:  眠     时间: 2017-6-10 06:03
fux2 发表于 2017-6-6 11:58
http://video.tudou.com/v/XMjEyMzk5OTUwNA==.html

很久很久以前自己做过一个红魔乡的躲避AI(外挂形式

这个效果在我的想象中,会不会产生一种身体与大脑的行动不一的不协调感呢?因为每次移动,实际的结果可能是被修正过的,反而会产生使人混乱的感觉。
不过不实际操作过的话也许也无法明白。
我特意观察了视频,修正看起来是无时无刻都在进行的,还是说那个高频的自机晃动是操作者的习惯吗?
作为一个辅助,这个的利弊大概因人而异。
作者:  眠     时间: 2017-6-10 06:08
yang1zhi 发表于 2017-6-6 11:59
那种游戏一般敌人都是规则式行动的。

不知道这样做可以不可以。

唔 第一点在早期的梦幻小妖精中,应用倒是很明显。

另外,我不是太读懂你的建议。
作者:  眠     时间: 2017-6-10 06:15
柳之一 发表于 2017-6-6 20:06
“”无敌“”算法:当玩家按下发射弹药键的时候,此瞬间弹道盘面已知,弹道轨迹都是函数,敌方unit自己的体 ...

十分感谢你的回复。

第一个算法看到的时候,就感觉到这是我想要的最优解思路。最近一直没有什么时间去完善,本来还打算迟点放上一下生存测试的结果。

碰撞其实就用一般的方形就好了。
除了内部一个代表自机,在外部也加一个代表警戒距离。

进入警戒的敌弹,才过一次AABB检测。

负荷也大为减少。

我用的不是UNITY,不知道引擎的思路是否不太一样。


作者: fux2    时间: 2017-6-10 23:00
 眠  发表于 2017-6-10 06:03
这个效果在我的想象中,会不会产生一种身体与大脑的行动不一的不协调感呢?因为每次移动,实际的结果可能 ...

自机晃动是个判定BUG,不过影响不了太多。
作者: 芯☆淡茹水    时间: 2017-6-13 10:38
侦测全屏子弹轨迹来决定运动方向实现回避,如果这样判断的敌人太多的话,貌似会很卡。也可以侦测距离本单位一定范围内的子弹要好点。
再说,如果是100%的精确规避,除非无缝弹幕无法规避,平时的时候每发子弹都打不中敌人,那也没有玩的意思了。
可以模糊判断,一定几率“马虎”了,不执行规避;一定几率“计算错误”,规避失败;或者减小侦测范围,躲过第一发子弹,但被第二发子弹命中。




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