Java 人工智能的乐园?

Java 人工智能的乐园?,java,language-agnostic,artificial-intelligence,machine-learning,Java,Language Agnostic,Artificial Intelligence,Machine Learning,在学校里,我的一位教授创造了一个3D游戏(不仅仅是一个引擎),所有玩家都完全由人工智能控制,我们的任务是为单个玩家编程人工智能。我们基本上得到了一个与游戏世界交互的API 然后,我们的AI实现一起加入到游戏中,我们看着我们的程序互相对抗 这就像是,但是虚拟的,有很多大炮,没有足球 我现在正在寻找类似的东西(以及开源)来使用。(最好用Java,但我对任何语言都开放。)我不是在寻找游戏引擎或框架。。。我正在寻找一个完整的游戏,只是缺乏人工智能代码。。。最好是为这种锻炼做准备。建议?这听起来很像 Ro

在学校里,我的一位教授创造了一个3D游戏(不仅仅是一个引擎),所有玩家都完全由人工智能控制,我们的任务是为单个玩家编程人工智能。我们基本上得到了一个与游戏世界交互的API

然后,我们的AI实现一起加入到游戏中,我们看着我们的程序互相对抗

这就像是,但是虚拟的,有很多大炮,没有足球


我现在正在寻找类似的东西(以及开源)来使用。(最好用Java,但我对任何语言都开放。)我不是在寻找游戏引擎或框架。。。我正在寻找一个完整的游戏,只是缺乏人工智能代码。。。最好是为这种锻炼做准备。建议?

这听起来很像

Robocode是一款编程游戏,其目标是开发一款机器人战斗坦克,与Java或.NET中的其他坦克作战。机器人战斗在实时和屏幕上进行


我的人工智能课程使用了开源软件,结果证明它非常有趣且信息丰富。

你可以从


一些AI已经实现,因此您可以举个例子查看。你可以编程一个人工智能来控制马里奥。有一场比赛和一些相关的报纸。使用Java或任何JVM语言很容易设置和运行

查看。

我知道您在问题中间接引用了RoboCup,但我认为鉴于标题,这里值得一提。有二维和三维版本:

2D联赛更为抽象,有移动、接球、踢腿等命令

3D联盟更为复杂,因为你必须控制3D机器人身体中每个铰链的角度(其中22个带有Nao模型)

这两种方法对人工智能同样有效。这可能取决于你想玩的人工智能领域

两者都可以从支持TCP套接字的任何语言/平台进行编程。您将在Java online中找到示例代码,以便开始使用。我一直在维护3D RoboCup的现有库列表


如果你想在3D联赛中使用.NET,你可以使用我创建的。

你可能想在2010年查看AIIDE,他们将在那里举办一场比赛。您可以下载软件、API和代理,以便将自己开发的AI连接到模拟战争中


与3D Robocup等其他平台不同,Dillwar引擎将处理物理问题,并可能让您将大部分时间集中在更高层次的方面,如路径规划、战略、资源分配等。还有一些基本形式的人工智能,您可以在进行特定改进时作为占位符插入,比如说一个混战AI。

是一个赛车游戏引擎,让你在C++中建立自己的驱动程序。

< P>你的教授的游戏让我想起了许多旧的Macintosh游戏,这浪费了我很多课余时间。这是一个有趣的回合制游戏,玩家在每回合开始时输入他们的动作,然后同时执行他们的动作。这个游戏的AI有点笨,我总是希望我能在游戏中到处翻转,但我从来没有找到过开源游戏。

< p>你可以考虑打开尼禄(“最好是java,但是我对任何语言都开放”)但是它是用Python写的。如果您对Java的任何建议都不感兴趣,请查看以下内容:

它并不“缺少”人工智能代码,它包含了人工智能代码。也许看看Python中的AI实现会给您的Java工作带来一些启发


编辑:为了回应维斯蒂奇的评论,你可以试试这个:-编程蚂蚁收集食物和对抗敌人。那里似乎有一个Java实现。

ORTS是一个开源RTS游戏框架。你设置它,定义游戏,然后编写AI代理,使用API玩游戏。我对RoboCode的一个抱怨是,它很快就变成了一个trig学习项目,而不是API或AI学习项目。一旦您开发了一组库来抽象出trig,您就可以开始编写人工智能了。我想它应该作为API的一部分与这样的库一起提供。机器人代码非常有趣。我曾经在一家公司工作,在那里,我们会在客场进行内部团队战斗。您必须使用TDD开发您的机器人,并将代码签入SVN。CruiseControl每20分钟检查一次最新的代码,运行单元测试(我认为您还必须有一定比例的代码覆盖率),然后在投影屏幕上发起一场战斗。在20分钟后的下一轮比赛中,你可以一边观看比赛一边改进你的机器人。非常有趣。+1个漂亮的电话,不知道我怎么会不记得那一个。另一方面:当你说“不同于其他平台,如Robocup”时,你指的是3D联赛,因为正如Drew Noakes所说,2D联赛“更抽象”。是的,我指的是3D联赛。你说得对,2D联赛更抽象。在2D联赛中,基本的操作是“移动、冲刺、转身和踢腿”。这真的回答了问题吗?他在寻找一些你必须自己填写人工智能的东西…@vidstige-好观点-编辑的原始帖子包含了一些更关注这个问题的内容。@vidstige:它还有一些练习,有助于练习人工智能算法。它包含了非常著名的人工智能书籍Russell和Norvig的教科书《人工智能:现代方法》中的例子。