我在本学期有一门课程,要求我做一个关于人工智能应用的项目。我已经决定在游戏AI上这样做。我有两个基本想法:实现一个FPS机器人或足球人工智能。
我现在是人工智能的新手,我实现了基本的路径查找算法(A*,等等),研究了有限状态机,一些一阶逻辑,基本神经网络之类的东西(反向传播ALgo),目前正在学习遗传算法。
我们现在主要关注的是机器人。我们的计划包括:
虽然我在业余时间(如帕克曼,俄罗斯方块等)已经编程了几个2d游戏,但我从来没有真正进入过3d领域。我们很可能会使用3d引擎。
我们想把大部分精力集中在人工智能上。我们不想被动画/3D模型等不必要的细节所困扰。例如,如果我们能找到一个框架,它的功能就像Moveright(),它只是将机器人移向右边,那就太棒了。
我的基本问题是:考虑到项目的持续时间为3个月,按我们计划的方式进行是否过于雄心勃勃?我们应该使用3d游戏引擎吗?如果你以前没有使用过这样的发动机,那么使用它们容易吗?如果是,什么样的发动机适合我们的项目?
我想到了另一个想法,在“人工智能游戏编程的例子”一书中,玩家将有一个自上而下的机器人视图。这样会更合适吗?
谢谢..。很抱歉这个问题太长了。只是我的问题有点太具体了。
发布于 2010-08-21 19:01:36
我的基本问题是:考虑到项目的持续时间为3个月,按我们计划的方式进行是否过于雄心勃勃?
是的--但这不一定是件坏事:)
我们应该使用3d游戏引擎吗?
不是的。主要是因为你说:
我们想把大部分精力集中在人工智能上。
根据我的经验,以下是我会做的事情(而且我知道,作为一个学生,我也常常咬的太多了):
使您的模拟功能与图形组件无关。让它发布“更新”到另一层,包括球员和球向量。这样做,您将保持您的AI任务与其他一切,这意味着您有较少的bug需要担心,你也可以单位测试您的基础模拟要容易得多。
接受这些“更新”,并创建您的第一个“可视化”层--使其成为最简单的2D表示。这可能只是一串文字:“球员1有球/球员1踢球(30,40),以20公里的速度”。这对于您的第一次通过将足够困难,因为您将弄清楚如何获取由模拟发布的数据,并对其进行一些操作。
您的下一个可视化可能添加一个2D网格的ANSI图形(考虑流氓样),以实际显示球员和球移动。那之后的下一个可能是精灵。诸若此类。注意你是如何逐步增加你的可视化的复杂性.不要让你的第一步去使用你从未使用过的技术(3d图形引擎)。(在这种情况下,你永远不会完成你的项目。)
至于你要走哪条路线的问题-- FSMs、NNs、GAs、自上而下的设计--你应该把你对它们的兴趣从大多数到最低(和你的团队其他成员一起),然后按照这个顺序来处理。您可以考虑为一个团队设计一种样式,为另一个团队设计不同的设计。您可能希望让您的FSM团队与FSM团队进行比较,如果您认为您的更改实际上是有益的(您可能会感到惊讶并发现它们会使团队更糟)。FSM团队对FSM进行了额外的调整,以便进行比较和对比。实际上,这就是单元测试和将模拟从可视化中分离出来的地方--你应该能够在不担心图形的情况下获得足够多的游戏"sim“。您甚至可以使用脚本在一夜之间分批完成。
一般来说,我给你的建议是:把你的项目分解成你能做的最微小的部分,然后一次处理一个,所以不管你在什么地方,当时间流逝时,你会有一些有趣的东西来炫耀。
发布于 2010-08-21 19:55:58
你可以看看[医]火药,这是我在大学做人工智能时必须要用到的东西。
它负责所有的显示,物理,声音等.对你来说,你所要做的就是规划你的机器人团队。该API包括功能,使机器人左或右移动,射击,听到声音(如枪声)等.它附带了一些机器人样本,这样你就不会从头开始了。
而且,看着你的机器人和你朋友的机器人搏斗也很有趣:)
https://stackoverflow.com/questions/3533030
复制相似问题