我发现在《吃豆人》中有很多关于幽灵AI的参考,但没有一个提到当幽灵被《吃豆人》吃掉后,眼睛是如何找到中央幽灵洞的。
在我的实现中,我实现了一个简单但糟糕的解决方案。我只是在每个角落都用硬编码标明了应该往哪个方向走。
有没有更好的/最好的解决办法?也许是适用于不同关卡设计的通用设计?
我发现在《吃豆人》中有很多关于幽灵AI的参考,但没有一个提到当幽灵被《吃豆人》吃掉后,眼睛是如何找到中央幽灵洞的。
在我的实现中,我实现了一个简单但糟糕的解决方案。我只是在每个角落都用硬编码标明了应该往哪个方向走。
有没有更好的/最好的解决办法?也许是适用于不同关卡设计的通用设计?
当前回答
我认为你的解决方案是正确的,比这更简单,就是制作一个更“现实”的新版本,鬼魂的眼睛可以穿过墙壁=)
其他回答
下面是ammoQ的洪水填充想法的模拟和伪代码。
queue q
enqueue q, ghost_origin
set visited
while q has squares
p <= dequeue q
for each square s adjacent to p
if ( s not in visited ) then
add s to visited
s.returndirection <= direction from s to p
enqueue q, s
end if
next
next
它的思想是宽度优先搜索,所以每次你遇到一个新的相邻正方形s,最好的路径是经过p。我相信是O(N)。
Dtb23的建议是在每个角落随机选择一个方向,最终你会发现怪物洞听起来非常低效。
然而,你可以利用它低效的“回家”算法,通过在游戏难度中引入更多变化来让游戏变得更有趣。你可以通过应用上面的方法,比如你的路径点或洪水填充来做到这一点,但这样做是非确定性的。所以在每个角落,你都可以生成一个随机数来决定是走最优路线,还是随机方向。
随着玩家不断推进关卡,你将减少玩家选择随机方向的可能性。这将在关卡速度,幽灵速度,吃药丸暂停等之外为整体难度关卡添加另一个杠杆。你有更多的时间放松,而鬼魂只是无害的眼睛,但随着你的进步,时间会越来越短。
对于更传统的寻路算法的替代方案,您可以看看(名称很合适!)吃豆人气味反对象模式。
你可以在启动时在迷宫中弥漫怪物洞的气味,然后让眼睛跟着它回家。
气味设置好后,运行成本非常低。
编辑:很遗憾维基百科上的文章已经被删除了,所以WayBack Machine来拯救…
我认为你的解决方案是正确的,比这更简单,就是制作一个更“现实”的新版本,鬼魂的眼睛可以穿过墙壁=)
最初的《吃豆人》并没有使用寻径或花哨的AI。它只是让玩家觉得游戏比实际更有深度,但实际上它是随机的。正如Ian Millington和John Funge在《ai Intelligence for Games》中所述。
Not sure if it's true or not, but it makes a lot of sense to me. Honestly, I don't see these behaviors that people are talking about. Red/Blinky for ex is not following the player at all times, as they say. Nobody seems to be consistently following the player, on purpose. The chance that they will follow you looks random to me. And it's just very tempting to see behavior in randomness, especially when the chances of getting chased are very high, with 4 enemies and very limited turning options, in a small space. At least in its initial implementation, the game was extremely simple. Check out the book, it's in one of the first chapters.