能迂回,会绕路的开源游戏AI:解决怪物撞墙卡死角

加拿大游戏工作室ABitAwake开源新模型EnemyAI,使游戏敌人自动追踪玩家并避开障碍,提升游戏挑战性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

贾浩楠 发自 凹非寺
量子位 报道 | 公众号 QbitAI

作为一个游戏玩家,有一天你发现了游戏中的bug:

竟然可以把怪拉到墙角卡住!

于是整个游戏成了白送局,一刀999,本来要1个小时的关卡5分钟就打通了,很爽对吗?

       

爽完之后呢?是不是有无可言状的空虚和罪恶感?一个好游戏就这么废掉了。

游戏开发者本意是想让玩家历经磨难、欲罢不能,但愚蠢的游戏bug毁了一切。

最近,一家来自加拿大的初创游戏工作室:A Bit Awake,开源了新模型——Enemy AI,可以让游戏中的敌人自动追踪玩家路径,并主动避开墙角、岩石等环境障碍,提升整个游戏的挑战和可玩性。

如果你在做游戏开发,那么这个项目可能会对你有很大的帮助。

从0开始,先写一个卡墙角的蠢AI

首先,我们先在Godot引擎中建立一个使用KinematicBody2D碰撞节点的敌对单位,并且使用State Machine来设置它的状态。

写出最简单的、只会向玩家直线移动的敌人追踪状态: 

玩家逃跑路径的设置与追踪

为了提高追踪算法的表现,先要给玩家角色的移动线路上设置标记。

这样一来,如果敌人无法看到玩家,就会自动搜寻是否有玩家留下的移动轨迹并向这个轨迹移动,就像警犬一样。

接下来要确保痕迹信息真实有效地留在路径上,这里用到了一个带计时器的Node2D场景。我们将轨迹产生间隔设为0.1秒。

调试时,如果你想让路径轨迹可见,只需要加一个ColorRect节点。

现在你的敌人已经激发出内心嗜血的本能,对玩家穷追不舍了!

物理障碍的设置

接下来我们还需要让敌对AI清楚追踪路径上有哪些要避开的障碍物。

首先要给敌对单位添加一个RayCast2D节点,同时还要设置环境中的物理层,让AI知道它与痕迹点之间(Ray)有哪些障碍。

在Godot中选出Project栏,在Project Settings中找到LayerNames选项,根据你的游戏选择2D或3DPhysics。

命名不同的的物理层后,要将这些物理层应用到不同的目标(比如岩石、墙、关闭的门等)之上,在Property Inspector栏中的Collision选项中将目标设置为某一定义好的物理层。

将目标的物理层设置好以后,我们还要更新敌人的RayCast2D节点,使它能够判断眼前的障碍物能否通过。

最后一步,将以上的步骤同步在敌人单位的追踪状态算法中:

好了,现在你的敌对AI如果在追踪路上遇到了障碍物丢失痕迹目标,它会逐个检查玩家的路径痕迹,并试图建立与痕迹点的连线,一旦成功就会马上开始追踪。

至此整个算法完成,实现简单,但对游戏质量有大的提升,希望能够帮到做游戏开发的你。

代码开源链接:

https://abitawake.com/news/articles/enemy-ai-chasing-a-player-without-navigation2d-or-a-star-pathfinding

作者系网易新闻·网易号“各有态度”签约作者

—  —

2020年是个天文大年,4月8日有全年最大的超级月亮,6月有横跨中国的日环食,8月有英仙座流星雨,10月还有两年一次的火星冲日,12月有双子座流星雨。

我们邀请美国国家地理极致中国探享家刘允和天文爱好者们,组建了一个天文航天亲子社群,群里除了交流天文航天知识,还会组织一系列讲座、线下观星、航天探访活动。

如果你家有小朋友,也热爱天文航天,一起来玩啊:

天文航天亲子社群招募中,一起来玩吧~

关注AI发展现状,抓住行业发展机遇

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值