随机化游戏中的AI寻路

时间:2012-05-07 16:51:46

标签: xna path-finding

我是C#的老将,之前从未做过游戏。为了扩大我的视野,我开始教自己基本的XNA内容,试图制作一个简单的2D迷宫型游戏,其中涉及一些典型的敌人射击。我的问题涉及寻找多个敌人。

考虑一下典型的例子:Pacman。

当你在Pacman开始一轮比赛时,鬼魂从盒子里出来并采取不同的看似随机的路径,只有一个例外 - 他们的重点是找到玩家的当前位置。我认为每次玩家移动以获得类似效果时我都可以重新计算每个敌人的路径,但我不希望敌人过多地重叠路径,所以我需要随机扭曲每个计算出的路径以给予某种程度的独特性。敌人。有没有标准的方法呢?

我想我可以看一下它,因为每个敌人本身都是一个障碍,因此没有敌人的路径可能涉及与另一个敌人发生碰撞的路线。如果没有新的路径可以向玩家提供自由运行,我会让敌人继续其现有路径,直到找到可行路径或者碰撞改变当前路径。这可能就足够了,但我是否过多地简化了它?

3 个答案:

答案 0 :(得分:1)

也许你觉得潜在的领域方法很有用......

http://aigamedev.com/open/tutorials/potential-fields/

每个敌人都有一个正的潜在领域,玩家有一个负潜在的领域,如果你填充地图,你可以得到一个敌人不会因为相同的签名费用而重叠太多...当然算法有事情......但也许可以帮助你。

enter image description here

答案 1 :(得分:0)

有趣的想法,但它可能 - 对于简单的Packman示例 - 导致一些敌人无法找到路径。例如,如果packman位于右下角,他只能向北或向西。如果每条路径上都有敌人,那么没有其他敌人可以找到通往他的路径,并且会漫无目的地冻结或漫游。

或许让敌人比游戏中的真正障碍更低“重量”,这样他们仍然可以找到一条路径并提供那个令人满意的时刻,当包装工吃掉一个动力弹丸并且有几个幽灵排成一行。

答案 2 :(得分:0)

我会以概率接近它。

也许像A方式需要20步并且方式b需要30步,然后怪物将在60%的时间内走向A并且B在40%中走向。然后添加一些规则,确保如果路线的可能性比其他路线高出20%,那么怪物总是会采取特定的路线。

这会产生这样一种场景:如果怪物足够近,它们总是采用最接近的方式,在开放区域采取不同的类似方式,并采取不同的方式,在长距离上花费的时间差不多......

然后你需要添加一些方法来过滤掉最奇怪的行为以消除思维,如无理由改变方向,并将实际数字配置为公式:)(顺便说一句,这不是测试只是推测)..