用于2D赛车游戏的AI提示

时间:2011-02-21 21:46:59

标签: c++ artificial-intelligence game-development

我有一个学校项目,为2D赛车游戏构建一个AI,它将与其他几个AI竞争。

我们获得了赛道的黑白位图图像,我们可以在收到地图后选择我们汽车的基本属性(操控,加速,最大速度和制动)。 AI连接到游戏的服务器,并为当前的加速和转向提供几次秒数。顺便说一句,我选择的语言是C ++。 问题是

  1. 什么是最好的策略或算法(因为我想尝试并获胜)?我目前想到了网上发现的一些想法和我自己的一两个想法,但我想在开始编码之前我的观点是最好的。
  2. 那件事有什么好书?
  3. 我应该参考哪些网站?

3 个答案:

答案 0 :(得分:6)

这个问题没有“正确的答案” - 它非常开放,许多不同的选项可能会解决。

您可能希望将reinforcement learning作为一种尝试让AI最佳地确定如何在选择不同的控制统计数据后控制汽车的方法。强化学习模型可以训练计算机尝试朝着一个良好的系统努力,以便在底层控制系统方面进行特定的操作。

要确定您想要使用哪些控件,您可以使用某种强化学习方法,或者您可能想要调查可以使用不同控件组合的supervised learning算法,并查看有多好的控件他们为特定的地图“适合”。例如,您可能会将地图分成小块,然后尝试查看哪些控件在最大数量的块中表现良好。

在绘制您想要采用的路径方面,A*是用于查找最短路径的众所周知的算法。在你的情况下,我不确定它会有多大用处,但它是教科书通知的搜索算法。

为了避免对手赛车手并试图将他们带入棘手的情况,你可能需要开发某种对手的建模系统。通用投资组合是实现这一目标的一种方式,但我不确定它们在这种情况下会有多大用处。一种选择可能是围绕赛道和对手赛车开发potential field以帮助您的赛车尽量避开障碍物;对于寻路来说,这实际上可能是比A *更好的选择。如果你对战术演习感兴趣,那么直截了当的minimax搜索可能是避免陷入困境或寻找陷阱对手的好办法。

我不是AI专家,但我认为以上链接可能是一个很好的起点。祝大家好运!

答案 1 :(得分:3)

  

那件事上有哪些好书?

我读过的关于这个主题的最好的书是由Mat Buckland撰写的“编程游戏AI by example”。它有关于路径规划转向行为的章节,以及更多(状态机,图论,列表继续)。

答案 2 :(得分:1)

上述所有解决方案都很好,人们已经花了很长时间来测试它们。查找“Togelius和Lucas”或“Loiacono和Lanzi”。他们尝试了神经进化,模仿(通过强化学习),力场等等。从我的观点来看,最好的方法是中线。这将花费一个小时来实施。相反,神经进化(例如)既不容易也不快。我做了我的论文,如果你有合适的硬件,它可能很容易需要几个月的全职。