我在本学期开设了一门课程,其中我需要做一个应用AI的项目。我决定在游戏AI上做这个。我有两个基本想法:实施FPS机器人或实施足球AI。
我现在很安静,我已经实现了基本寻路算法(A *等),并研究了有限状态机,一些一阶逻辑,基本神经网络(Backpropagation ALgo),我现在正在做遗传算法课程。
我们现在主要关注机器人。我们的计划包括:
虽然我在空闲时间(如pacman,俄罗斯方块等)编写了一些2D游戏,但我从未真正进入过3D领域。我们很可能会使用3d引擎。
我们希望将大部分精力集中在AI部分。我们不想被关于动画/ 3d模型等的不必要的细节所困扰。例如,如果我们能找到一个具有Moveright()功能的框架,它只是将机器人向右移动,那将是非常棒的。
我的基本问题是:考虑到项目的持续时间是3个月,是否过于雄心勃勃地以我们计划的方式进行实施?我们应该去3D并使用3D游戏引擎吗?如果你之前没有经验,这种引擎是否容易使用?如果是的话,什么样的引擎适合我们的项目?
我遇到了另一个想法,例如在AI Game编程的例子中,玩家可以自上而下地看到机器人。这样会更合适吗?
谢谢..抱歉问题的长度......这只是我的问题有点过于具体。
答案 0 :(得分:2)
我的基本问题是:它也是 雄心勃勃地以我们的方式去做 已经计划好,考虑到持续时间 该项目耗时3个月?
是的 - 但这不一定是坏事:)。
我们应该去3D并使用3D游戏 发动机?
没有。主要是因为你说:
我们想集中我们的大部分时间 AI部分的能量。
根据我的经验,这就是我要做的事情(并且知道,作为一名学生,我经常会比我咀嚼的更多):
无论图形组件如何,都可以进行模拟功能。让它向另一层发布“更新”,包括玩家和球矢量。通过这样做,您将保持AI任务与其他任何事物分离,这意味着您可以更少地担心错误,并且您还可以更轻松地对基础模拟进行单元测试。
获取这些“更新”并创建您的第一个“可视化”图层 - 使其成为最简单的2D表示。它可能只是一个文本行流:“玩家1有球/球员1踢球(30,40),速度为20kph”。这对你的第一次通过来说已经够难了,因为你将要弄清楚如何获取模拟发布的数据并用它做些什么。
您的下一个可视化可能会添加一个ANSI图形的2D网格(想想像流氓一样)来实际显示玩家和球的移动。之后你的下一个可能是精灵。等等。请注意您如何逐步增加可视化的复杂性......不要让您迈出第一步使用您以前从未使用过的技术(3D图形引擎)。 (在这种情况下,你永远不会完成你的项目。)
关于你要采取哪些路线的问题 - FSM,NN,GA,自上而下的设计 - 你应该从大多数到最小的(与你的团队的其他成员一起)对你的兴趣排序,然后解决它们, 以该顺序。您可以考虑为一个团队执行一种样式,为另一个团队执行不同的设计。您可能希望让您的FSM团队与FSM团队进行比赛,并对其进行额外调整,以便比较和对比,如果您认为您的更改实际上是有益的(您可能会感到惊讶并发现他们会让团队变得更糟)。实际上,这就是单元测试和从可视化中分离模拟的地方非常非常方便 - 您应该能够“模拟”尽可能多的游戏以获得实验结果而不必担心图形。你甚至可以在一夜之间用脚本分批进行。
一般来说,我给你的建议是这样:将你的项目分解成最小的部分,并一次一个地处理它们,所以不管你在哪里,当时间耗尽时,你会得到一些东西有趣的炫耀。
答案 1 :(得分:1)
你可以看一下guntactyx,这就是我在大学的AI单元工作时必须使用的东西。
它可以处理所有的显示,物理,声音......对于你来说,你所要做的就是为你的机器人团队编程。 该API包括使机器人向左或向右移动,拍摄,听到声音(如枪声)等功能......还附带一些样本机器人,因此您无需从头开始。
此外,观看机器人与朋友的机器人战斗非常有趣:)