我发现很多关于Pacman中鬼的AI的参考资料,但没有一个提到了在Pacman吃掉鬼后,它们的眼睛是如何找回中央鬼洞的。
在我的实现中,我使用了一种简单但可怕的解决方案。我仅仅硬编码了每个拐角应该采取的方向。
是否有更好或最佳的解决方案?也许有一种通用的解决方案,适用于不同的关卡设计?
我发现很多关于Pacman中鬼的AI的参考资料,但没有一个提到了在Pacman吃掉鬼后,它们的眼睛是如何找回中央鬼洞的。
在我的实现中,我使用了一种简单但可怕的解决方案。我仅仅硬编码了每个拐角应该采取的方向。
是否有更好或最佳的解决方案?也许有一种通用的解决方案,适用于不同的关卡设计?
实际上,我认为你的方法是一个相当棒的解决方案,与任何寻路算法相比几乎没有运行时间成本。
如果您需要将其推广到任意地图,则可以使用任何寻路算法-例如,广度优先搜索很容易实现,并使用它来计算每个角落应编码的方向,然后再运行游戏。
编辑(2010年8月11日):我刚被引用到了一篇关于Pacman系统的非常详细的页面:《Pac-Man档案》,既然我在这里有采纳的答案,我觉得我应该更新一下。文章似乎没有明确涵盖返回怪物屋的行为,但它说明了Pac-Man中直接的寻路算法是以下步骤的情况:
我已经用一种通用的方法解决了这个问题:在关卡开始之前,我会从怪物出生点做一些“泛洪填充”操作;迷宫中每个不是墙壁的方块都会得到一个表示其距离怪物洞口有多远的数字。因此,当眼睛停留在一个距离为68的方块上时,它们会查看哪个相邻的方块距离为67;然后就朝那个方向走。
如果你想寻找一种替代传统路径规划算法的方法,你可以看看(名字相当恰当的)Pac-Man Scent Antiobject模式。
在启动时,你可以在迷宫中散布怪物洞口的气味,并让 "眼睛" 跟随气味回家。
一旦气味设置好了,运行时成本非常低。
编辑: 不幸的是,维基百科文章已被删除,所以请使用WayBack Machine……
任何简单可行、易于维护、可靠并且性能足够好的解决方案都是一个好的解决方案。听起来你已经找到了一个好的解决方案......
路径查找解决方案可能比您当前的解决方案更加复杂,因此更有可能需要调试,而且速度也可能更慢。
我认为,如果它没有出现故障,就不要修理它。
编辑
在迷宫固定的情况下,您当前的解决方案是好的/优雅代码。不要误将“好”或“优雅”等同于“聪明”。简单的代码也可以是“好”的和“优雅”的。
如果您有可配置的迷宫级别,那么在最初配置迷宫时进行路径查找可能是最简单的解决方案。最简单的方法是由迷宫设计者手动完成。只有当您有大量迷宫...或用户可以设计它们时,才值得自动化这一过程。
(另外:如果路线是手工配置的,迷宫设计师可以通过使用次优路线使级别更有趣...)
在最初的Pacman游戏中,幽灵通过他留在地图上的"气味"来找到黄色吃豆人。 幽灵会随机徘徊直到找到气味,然后他们只需沿着气味路径向玩家移动即可直接找到玩家。每次Pacman移动时,“气味值”会减少1。
现在,一个简单的反转整个过程的方法是有一种“幽灵气味金字塔”,它的最高点位于地图的中心,然后幽灵就只需朝着这个气味方向移动即可。
假设您已经拥有追逐pacman所需的逻辑,为什么不重复使用它呢?只需更改目标即可。这似乎比尝试使用完全相同的逻辑创建一个全新的例程要少做很多工作。
我找到的这是关于它如何实际工作的最好的来源。
http://gameai.com/wiki/index.php?title=Pac-Man#Respawn 当幽灵被杀死时,它们的无形眼睛会返回其起始位置。这只需要将幽灵的目标瓷砖设置为该位置即可。导航使用相同的规则。
这实际上很有道理。也许不是世界上最有效的方法,但这是一种非常好的方式,可以不必担心另一个状态或任何类似的问题,你只需更改目标即可。
旁注:我没有意识到那些吃豆人程序员有多么棒,他们基本上在非常小的空间内用非常有限的内存制作了整个消息系统……这太神奇了。
每个正方形的值都是距离中心的距离,这样对于给定的每个正方形,您可以获得所有可能方向上的相邻正方形的值。选择具有最低值的正方形并移动到该正方形。
使用任何可用算法预先计算值。