4

首先,这是AI为PacMan而不是鬼PacMan个性AI建议为最佳下一个方向

我正在写一个Android动态壁纸,在您的图标周围播放PacMan。虽然它通过屏幕接触支持用户建议,但大部分游戏都将通过AI进行播放。我99%完成了所有的游戏编程,但PacMan本人的AI仍然非常弱。我正在寻找帮助来开发一个好的AI来确定PacMan的下一个旅行方向。

我的最初的计划是这样的:

  1. 初始化用于与零值的每个方向上的分数计数器。
  2. 从当前位置开始,使用BFS在四个可能的初始方向上向外遍历,方法是将它们添加到队列中。
  3. 从队列中弹出一个元素,确保它没有被“看到”,确保它是一个有效的棋盘位置,并添加到相应的初始方向,为当前单元格分值:

    1. 具有点:加10
    2. 具有功率高达:加50
    3. 拥有果:加果值(由电平变化)
    4. 拥有鬼朝向吃豆行进:减去200
    5. 有一个幽灵旅行y从PacMan:什么都不做
    6. 有一个正在垂直移动的影子:减去50
    7. 根据单元格的步数乘以单元格的值乘以百分比,初始方向的步数越多,该单元变为零。

    并从当前单元排列三个可能的方向。

  4. 一旦队列为空,为四个可能的初始方向中的每一个找到最高分并选择它。

它在纸上听起来很不错,但鬼怪围绕着PacMan非常迅速,他在相同的两个或三个细胞中来回抽动,直到到达他为止。调整鬼魂存在的值也没有帮助。在比赛结束之前,我最近的点BFS至少可以达到2或3级。

我正在寻找代码,想法和/或资源的链接来开发一个合适的AI - 最好是前两个。我想在这个周末的某个时候在Market上发布这个,所以我有点匆忙。任何帮助是极大的赞赏。


仅供参考,这是手动横贴在GameDev.StackExchange

+4

这将是更好的http://gamedev.stackexchange.com – ManiacZX 2010-07-29 20:34:13

+0

@ManiacZX感谢您的领导。我不知道该网站存在。我会记住这个问题以备将来发布,或者稍后重新发布此问题。 – 2010-07-29 20:41:34

+0

我不记得有关Pacman是否需要不断移动的确切Pacman规则。如果你不关心遵循原始的Pacman 100%,我还会为Pacman的可能操作列表添加一个“停留”。 http://www-inst.eecs.berkeley.edu/~cs188/archives.html有一些有趣的资源,你可以看看 – nevets1219 2010-07-29 20:46:37

回答

0

有办法来改变吃豆成“路径跟踪”模式。该计划是,您检测到某些情况,计算PacMan遵循的预先绘制的路径,然后计算出该路径的早期退出条件。你可以在几种情况下使用它。

当吃豆由鬼在三个四个方向的一定距离内包围,然后创建出口路径,要么导致吃豆远离鬼或朝向电。退出的情况是当他吃掉电源或不再被包围时。

当PacMan吃电时,创建一个路径来吃一些附近的鬼魂。退出的情况是当道路上没有鬼魂时重新计算路径。或者如果附近没有鬼魂,请完全退出该模式。

当附近有不到一半离开了点,或没有点,进入的路径去吃一些点,转向清晰的鬼。鬼附近时重新计算路径,如果附近有几个鬼,则重新计算路径。

当没有保证路径的情况时,您可以恢复到之前编程的默认AI。

0

您可以使用Ant Colony Optimisation技术来发现,导致许多图标吃或可以得到很多的分数最短路径可见。

1

如果吃豆陷在一个位置,并开始抽搐来回然后它表明,开给他的不同的动作有非常相似的分数您运行指标之后。然后由鬼魂进行小幅度的位置变化会导致最佳的移动来回翻转。您可能需要考虑添加一些hysteresis来阻止这种情况的发生。

设置:选择一个随机移动和得分0

每个步骤记录下来:

  1. 在可用的移动运行打分函数。
  2. 如果最高分数比记录分数大x%,则覆盖记录分数并与此一同移动。
  3. 应用此举。

这样做的结果是,PacMan将不再在每一步中选择“最佳”移动,但它似乎并不像贪婪的本地搜索一样是最优的。这将使PacMan更加一致并停止抽动。

0

我不知道了很多关于人工智能或特定的算法,但这里有一些东西,你可以尝试,可能只是让你足够接近政府工作:)

对于问题迅速围绕着他的鬼,也许鬼AI太强大了?我知道在经典的吃豆人中,每个幽灵都有特定的行为,所以如果你还没有纳入那个,你可能会想。

为了消除回溯,您可以为最近遍历的节点创建加权惩罚,因此他不太愿意回到以前的路径。如果这还不足以将他踢向某个方向或另一个方向,那么你可以以对数方式增加吸引力惩罚,所以一条路径将以非常快的速度变得比另一条更有吸引力。

对于他的问题越来越被鬼抓,一旦鬼已经达到了危险的节点接近你也许可以从一般的基于目标的算法改变了回避算法。

0

您可能受益知道如何的机器人“理由”(如本优秀dossier解释)。例如,了解鬼魂的追逐/分散模式可以让你在“危险”的位置得到点,等等。

我在添加这个答案,因为知道它不是您寻找的最佳解决方案(因为您希望下周发布..),但也许会对将来有人阅读此内容有所帮助。排序时间胶囊:)

0

你应该看看这个描述Antiobjects,这是Pacman幽灵用来遍历迷宫的技术。特别要注意:

每个antiobjects或代理人 的具有相同的简单算法 它运行在 游戏动不动。而不是让鬼魂智能 足以解决迷宫周围的“最短路径” 问题, “Pac-Man气味”的概念被创建而不是 每个瓦片负责说 多少吃豆人气味是在其上瓦。

所以你考虑一种类似的基于气味的技术来控制Pacman,也许在那里Pacman更喜欢穿过一条气味较小的路径;这会减少他过旧的机会。

相关问题