libGDX: 在横版卷轴游戏中实现AI

我正在开发一款2D横版卷轴游戏。

描述:

我使用的是libGDX及其AI扩展。游戏将在安卓平台上发布(AI不应消耗过多的资源)。我的地形不是基于网格的,而是一个程序生成的多边形高度图(没有洞穴)。enter image description here

有三种类型的敌人(NPC)——近战、远程(子弹)和混合战斗。

实体有三种移动方式——向左、向右和跳跃。有些实体还可以像图片中那样在地面上悬浮。我考虑过在离地形有一定高度的节点上进行路径规划,但如果玩家跳跃,近战敌人可能无法找到路径(我没有测试过,但我猜测会这样)。

我见过很多基于网格的游戏的例子,但没有适合我这种情况的。

请原谅我的知识不足,我刚开始接触AI开发几天前才开始的。

问题:

  • libGDX的AI是否与(几乎)无限的世界兼容?

  • 我应该如何设置节点?

  • AI可以用来计算子弹的方向以击中玩家吗?


回答:

首先,我不了解libGDX,但如果你想要一个无限的世界,你需要编程实现。这意味着你需要随机生成地形,并在不需要时从内存中销毁它。如果你想无限地向左和向右移动,你需要在内存满时有效地将世界存储在硬盘上。对于你的多边形,你只需要存储节点和一些数字作为对周围元素的引用,这样你就可以让你的角色返回。

其次,因为你的游戏是二维的,路径选择非常简单,你不需要路径查找算法。因此,你不需要节点或类似的东西。你需要的是类似碰撞盒的东西,这样你的敌人就知道何时会碰撞。AI只需要知道你的角色是在左边还是右边,以及是否可以直接到达。这只是简单的几何计算。如果可以跳过其他敌人,就好像他们可以穿过敌人一样进行路径规划。

最后,子弹方向的计算只需使用线性代数来获取从你的角色到敌人的直线。你只需要计算它是否与其他敌人或地形相交,就可以知道你的角色是否会被击中。

这里唯一的AI方面是确定敌人的行为。这可以通过状态机来实现,敌人有如瞄准等待跟随射击等状态。根据你的角色离多远或是否可达,状态会发生变化。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注