【问题标题】:Tips for an AI for a 2D racing game [closed]用于 2D 赛车游戏的 AI 提示 [关闭]
【发布时间】:2011-02-21 21:46:58
【问题描述】:

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

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

  1. 最好的策略或算法是什么(因为我想尝试并获胜)?我目前想到了一些在网上找到的想法以及我自己的一两个想法,但在开始编写代码之前,我想我的观点是最好的。
  2. 关于这个问题有什么好书?
  3. 我应该参考哪些网站?

【问题讨论】:

  • 更好的地方? gamedev.stackexchange.com
  • 这个很老的问题。对于在这里尝试“在 Unity 中进行赛车”的任何人来说,这已经是一个老生常谈的问题,只需在谷歌上搜索任何可用的插入式脚本或 Assetstore 资产。难以想象你会费心从头开始工作。享受吧!

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


【解决方案1】:

这个问题没有“正确答案”——它非常开放,许多不同的选择可能会奏效。

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

要确定您要使用哪些控件,您可以使用一些强化学习,或者您可能想研究supervised learning 算法,这些算法可以使用不同的控件组合,看看“适合”的效果如何“他们给出了特定的地图。例如,您可以将地图分成小块,然后尝试查看哪些控件在最大数量的块中表现出色。

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

为了避开对手赛车手并试图将他们逼入更棘手的境地,您可能需要开发某种对手建模系统。通用投资组合是做到这一点的一种方法,尽管我不确定它们在这种情况下会有多大用处。一种选择可能是在赛道和对手汽车周围开发potential field,以帮助您的汽车尝试避开障碍物;这实际上可能是比 A* 更好的寻路选择。如果您对战术演习感兴趣,直接搜索minimax 可能是避免被困或想办法困住对手的好方法。

我不是人工智能专家,但我认为以上链接可能是一个很好的起点。祝比赛好运!

【讨论】:

  • 这些是对人工智能的一般建议。一般阅读主题。这些话题与赛车游戏中的汽车驾驶完全没有关系。
【解决方案2】:

关于这个问题有什么好书?

我读过的关于这个主题的最好的书是Mat Buckland 的"Programming Game AI by Example"。它有关于路径规划转向行为的章节,以及更多(状态机、图论等等)。

【讨论】:

    【解决方案3】:

    上述所有解决方案都很好,人们已经竭尽全力进行测试。查找“Togelius 和 Lucas”或“Loiacono 和 Lanzi”。他们尝试了神经进化、模仿(通过强化学习完成)、力场等。从我的角度来看,最好的方法是中心线。这将需要一个小时来实施。相比之下,神经进化(例如)既不简单也不快速。我在这方面做了我的论文,如果你有合适的硬件,这很容易需要几个月的时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多