首页> 新闻> 正文

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

2020-04-15      作者:[db:作者]

奥菲寺贾浩南量子比特报告|公开号码QbitAI

作为一名游戏玩家,有一天你在游戏中发现了一个漏洞:

可以把责任推到墙角卡住了!

因此,整个游戏变成了免费游戏,花费999元。通过检查站需要1小时5分钟。很酷,不是吗?

完成后会发生什么?有什么难以形容的空缺乏和内疚吗?一个好游戏是如此无用。

游戏开发者的初衷是让玩家历尽艰辛,永不止步,但愚蠢的游戏bug毁了一切。

最近,一个来自加拿大的游戏工作室启动了一个新的模式,Enemieai,它允许游戏中的敌人自动跟踪玩家的路径,并主动避开环境障碍,如角落和岩石,从而提高整个游戏的挑战性和可玩性。

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

从0开始,先在墙角写一个愚蠢的人工智能。

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

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

玩家逃跑路径的设置和跟踪

为了提高跟踪算法的性能,必须首先标记玩家角色的移动线路。

这样,如果敌人看不到玩家,它会自动搜索玩家留下的任何移动轨迹,并向这条轨迹移动,就像警犬一样。

接下来,为了确保跟踪信息真正有效地留在路径上,这里使用了带有计时器的Node2D场景。我们将轨道生成间隔设置为0.1秒。

在调试期间,如果希望路径跟踪可见,只需添加一个ColorRect节点。

现在你的敌人已经激起了他们嗜血的本能,正在追逐玩家!

物理障碍的设置

接下来,我们需要让敌人的人工智能清楚地跟踪路上要避开哪些障碍。

首先,在敌方单位中添加一个RayCast2D节点,同时在环境中设置物理层,让人工智能知道它和跟踪点(Ray)之间存在什么障碍。

在Godot中选择“项目”列,在“项目设置”中找到“图层名称”选项,并根据您的游戏选择“2D”或“三维物理”。

命名不同的物理层后,将这些物理层应用于不同的目标(如岩石、墙壁、紧闭的门等)。),并在属性检查器列的碰撞选项中将目标设置为定义的物理层。

在设置目标的物理层之后,我们还将更新敌人的RayCast2D节点,这样它就可以判断我们面前的障碍物是否可以通过。

最后,在敌方单位的跟踪状态算法中同步上述步骤:

好了,现在如果你的对手人工智能遇到障碍并且失去了跟踪目标的能力,它会一个接一个地检查玩家的路径轨迹,并尝试与轨迹点建立联系。一旦成功,它将立即开始跟踪。

此时,整个算法是完整的,易于实现,但它大大提高了游戏的质量。我希望它能帮助你开发这个游戏。

代码开放源代码链接:

https://abit awake . com/news/articles/敌方ai-chasing-a-player-without-navigation 2d-or-a-star-path finding

-完毕-

量子比特签了合同。

请密切关注我们,首先了解最新的技术发展。