我有一个学校项目,为2D赛车游戏构建一个AI,它将与其他几个AI竞争。
我们获得了赛道的黑白位图图像,我们可以在收到地图后选择我们汽车的基本属性(操控,加速,最大速度和制动)。 AI连接到游戏的服务器,并为当前的加速和转向提供几次秒数。顺便说一句,我选择的语言是C ++。 问题是
答案 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”。他们尝试了神经进化,模仿(通过强化学习),力场等等。从我的观点来看,最好的方法是中线。这将花费一个小时来实施。相反,神经进化(例如)既不容易也不快。我做了我的论文,如果你有合适的硬件,它可能很容易需要几个月的全职。