我发现在《吃豆人》中有很多关于幽灵AI的参考,但没有一个提到当幽灵被《吃豆人》吃掉后,眼睛是如何找到中央幽灵洞的。

在我的实现中,我实现了一个简单但糟糕的解决方案。我只是在每个角落都用硬编码标明了应该往哪个方向走。

有没有更好的/最好的解决办法?也许是适用于不同关卡设计的通用设计?


当前回答

如果每个正方形都有一个到中心的距离值呢?这样,对于每个给定的正方形,你可以在所有可能的方向上得到相邻正方形的值。你选择最小值的正方形,然后移动到那个正方形。

数值将使用任何可用的算法预先计算出来。

其他回答

简而言之,不是很好。如果你改变了《吃豆人》迷宫,眼睛就不一定会回来。有些四处游荡的黑客就有这个问题。所以它依赖于一个合作迷宫。

这是一个寻径问题。有关流行的算法,请参见http://wiki.gamedev.net/index.php/A*。

Dtb23的建议是在每个角落随机选择一个方向,最终你会发现怪物洞听起来非常低效。

然而,你可以利用它低效的“回家”算法,通过在游戏难度中引入更多变化来让游戏变得更有趣。你可以通过应用上面的方法,比如你的路径点或洪水填充来做到这一点,但这样做是非确定性的。所以在每个角落,你都可以生成一个随机数来决定是走最优路线,还是随机方向。

随着玩家不断推进关卡,你将减少玩家选择随机方向的可能性。这将在关卡速度,幽灵速度,吃药丸暂停等之外为整体难度关卡添加另一个杠杆。你有更多的时间放松,而鬼魂只是无害的眼睛,但随着你的进步,时间会越来越短。

实际上,我想说你的方法是一个非常棒的解决方案,与任何类型的寻径相比,运行时间成本几乎为零。

如果你需要将其推广到任意地图,你可以使用任何寻径算法——例如,宽度优先搜索很容易实现——并在游戏运行前使用该算法计算在每个角落编码的方向。

编辑(2010年8月11日):我刚刚看到了关于吃豆人系统的一个非常详细的页面:the Pac-Man Dossier,既然我已经得到了公认的答案,我觉得我应该更新它。这篇文章似乎没有明确地涉及回到怪物房子的行为,但它指出了《吃豆人》中的直接寻路是以下情况:

继续向下一个路口移动(尽管这本质上是一种特殊情况,即“当有选择时,选择不涉及反转方向的方向,如下一步所示); 在十字路口,看看相邻的出口方块,除了你刚刚出来的那个; 选一个离目标最近的。如果有多个方向同样接近目标,则按以下顺序选择第一个有效方向:上、左、下、右。

这是我能找到的关于它是如何工作的最好的资料。

http://gameai.com/wiki/index.php?title=Pac-Man#Respawn 当幽灵被杀死时,它们脱离实体的眼睛会回到最初的位置。这可以通过将幽灵的目标贴图设置到该位置来实现。导航使用相同的规则。

这是有道理的。也许不是世界上最有效的方法但这是一种很好的方法不用担心另一种状态或者沿着这些线你只需要改变目标。

附注:我没有意识到那些吃豆人程序员有多棒,他们基本上是在非常小的空间和非常有限的内存中创建了一个完整的消息系统……太神奇了。