人工智能的乐园?
Posted
技术标签:
【中文标题】人工智能的乐园?【英文标题】:Playground for Artificial Intelligence? 【发布时间】:2011-02-25 06:08:50 【问题描述】:在学校里,我的一位教授创建了一个 3D 游戏(不仅仅是一个引擎),所有玩家都完全由 AI 控制,我们的任务是为单个玩家的 AI 编程。我们基本上被提供了一个与游戏世界交互的 API。
然后我们的 AI 实现一起被放入游戏中,我们看着我们的程序相互对战。
就像robot soccer,但是是虚拟的,有很多大枪,没有足球。
我现在正在寻找任何类似(和开源)的东西来玩。 (最好使用 Java,但我对任何语言都持开放态度。)我不是在寻找游戏引擎或框架...我正在寻找一个完全没有 AI 的游戏代码...最好为这种练习设置。有什么建议吗?
【问题讨论】:
【参考方案1】:这听起来与Robocode 非常相似。
Robocode 是一款编程游戏,其目标是开发一款机器人主战坦克,以与 Java 或 .NET 中的其他坦克作战。机器人战斗在屏幕上实时进行。
【讨论】:
我对 RoboCode 的一个抱怨是它很快就变成了一个三角学习项目,而不是一个 API 或 AI 学习项目。一旦你开发了一组库来抽象出三角函数,你就可以开始对 AI 进行编程了。恕我直言,它应该带有这样的库作为 API 的一部分。 RoboCode 非常有趣。我曾经在一家公司工作,我们会在客场进行内部团队战斗。您必须使用 TDD 开发您的机器人并将代码签入 SVN。每 20 分钟 CruiseControl 会检查最新的代码,运行单元测试(我认为你也必须有一定比例的代码覆盖率)并在投影屏幕上发起一场战斗。 20 分钟后,您将一边观看战斗一边为下一轮改进您的机器人。很好玩。【参考方案2】:我的 AI 课程使用了开源的 BZFlag,结果证明它非常有趣且内容丰富。
【讨论】:
【参考方案3】:你可以从 this game
一些人工智能已经实现,你可以举个例子
【讨论】:
【参考方案4】:查看Mario AI。你可以编写一个人工智能来控制马里奥。有一个竞赛和一些与之相关的论文。使用 Java 或任何 JVM 语言非常容易设置和运行。
【讨论】:
【参考方案5】:查看ORTS。
【讨论】:
ORTS 是一个开源的 RTS 游戏框架。您进行设置、定义游戏,然后编写使用 API 玩游戏的 AI 代理。【参考方案6】:我知道您在问题中间接引用了 RoboCup,但鉴于标题,我认为这里值得一提。有 2D 和 3D 版本:
2D League 3D League2D 联赛更抽象,包含移动、接球、踢球等命令。
3D 联赛更加复杂,因为您必须控制 3D 机器人身体中每个铰链的角度(其中 22 个使用 Nao 模型)。
对于 AI,两者都是同样有效的练习。这可能取决于你想玩 AI 的哪个领域。
两者都可以从任何支持 TCP 套接字的语言/平台进行编程。您可以在线找到 Java 示例代码以帮助您入门。我一直在 SimSpark Wiki here 上维护 3D RoboCup 的现有库列表。
如果您想使用 .NET 进行 3D 联赛,可以使用我创建的 TinMan library。
【讨论】:
【参考方案7】:您可能想在 2010 年查看 AIIDE,他们将在那里举办 Starcraft Broodwar AI competition。您可以下载软件、API 和代理,以便将您自己开发的 AI 连接到 Broodwar 模拟中。
与 3D Robocup 等其他平台不同,Broodwar 引擎将处理物理,并且可能会让您将大部分时间集中在更高级别的方面,例如路径规划、策略、资源分配等。还有基本的在您进行特定改进时,您可以将其作为占位符放入其中的 AI 形式,例如近战 AI。
【讨论】:
+1 不错的电话,不知道我怎么不记得那个电话了。附带说明:当您说“与 Robocup 等其他平台不同”时,您指的是 3D 联赛,因为正如 Drew Noakes 所说,2D 联赛“更抽象”。 是的,我指的是 3D 联赛。你说得对,2D 联赛更抽象。在 2D 联赛中,基本操作符是“移动、冲刺、转身和踢球”。【参考方案8】:Torcs 是一款赛车游戏引擎,可让您使用 C++ 构建自己的驱动程序。
【讨论】:
【参考方案9】:你教授的游戏让我想起了很多旧的 Macintosh 游戏Assassin,它浪费了我很多课后时间。这是一款有趣的回合制游戏,玩家在每个回合开始时输入他们的动作,然后同时执行他们的动作。游戏的 AI 有点笨,我一直希望自己能乱七八糟地改进它们,但我从来没有找到该游戏的开源版本。
【讨论】:
【参考方案10】:您可能会考虑 Open NERO(“(最好用 Java,但我对任何语言都开放。)”)但它是用 Python 编写的。如果没有任何 Java 建议对您有吸引力,请看这里:
http://code.google.com/p/opennero/
它不是“缺少”人工智能代码,而是包含它。也许看看 Python 中的 AI 实现会给您一些 Java 工作的灵感。
编辑:为了解决 vidstige 的评论 - 你可以试试这个:http://aichallenge.org/ - 编程蚂蚁来收集食物并与敌人作战。那里似乎有一个Java实现。
【讨论】:
这真的回答了这个问题吗?他正在寻找一些你必须自己填写人工智能的东西...... @vidstige - 好点 - 原始帖子已编辑以包含更关注问题的内容。 @vidstige:它还有一些练习,可以很好地练习 AI 算法。它包含来自非常著名的 AI 书籍 Russell 和 Norvig 的教科书《人工智能:一种现代方法》中的示例。以上是关于人工智能的乐园?的主要内容,如果未能解决你的问题,请参考以下文章
打破PancakeSwap的垄断,BabySwap正在成为更好的掘金乐园?