标签:
主页在这:http://gvgai.net
参考文献在这:http://gvgai.net/papers.php
gvgai 框架是一个游戏框架,它解释游戏规则(是个文本文件),然后翻译成游戏。但主要用它来测试AI。
游戏规则如:
这就是一个完整的定义,关于游戏定义我们可以在参考文献那查询Vedio Game Description Language(VGDL)的文档,但我们不需要了解这么多,因为我们主要做的是AI。
搭建平台步骤:
1.
首先下载源代码
2.
然后Eclipse载入Ant项目
3.
修改build.xml里的basedir目录,使之指向代码的根目录(如果载入时选择link的选项的话好像不用修改)。
也可以在下图的Base Directory里修改
在Arguments那里写上run。就可以运行了。异或在Target里勾上run选项。这些都是小事。设置好目录之后就可以运行游戏了。
代码部分:
名词解释:avatar----阿凡达,是我们要控制的游戏的主角。 Agent----是我们做的AI。 NPC----是游戏人物。 Controller----是我们的控制器,也就是AI。
我们说的做控制器和做Agent都是做AI的意思,因为Agent也是用电脑来控制的。
任何一个Agent都必须重载下面两个函数,我们可以看到一个是构造函数,一个是act,就是执行什么动作。参数都是stateObs和elapseTimer。一个是游戏状态,一个是游戏运行了多久。
其实就是根据当前游戏状态来返回执行的动作,和我们人玩是一样的,人类玩游戏也是一个响应机制:从当前的、历史的、未来的预测的,游戏信息中判断该如何响应,说到这里已经很明白了。
好消息是框架本身为我们实现了很多方便快捷的API。
http://gvgai.net/forwardModel.php这里有已经实现好的API。
advance是预测下一个游戏状态。我们也可以自己预测……
Sample
这个是最简单的随机Controller。
第一步:得到合法动作
第二步:随机从合法动作里选一个
第三部:返回这个合法动作
第二个Sample——genetic:
产生一串动作序列,不断地用advance函数去预测下一步的状态,然后进行评分。因为是预测的状态,所以不能保证一定正确,于是每预测一个状态,评分值的权重就会变成原来的90%。然后通过基本的筛选优质序列,替换掉劣质序列,再进行随机化的变异,得到一个较好的动作序列,返回第一个动作。其实和搜索树差不多。
剩下的网站上都有,读读说明就可以了。
标签:
原文地址:http://www.cnblogs.com/MyloverisU/p/4306550.html