码迷,mamicode.com
首页 > 其他好文 > 详细

gvgai framework 搭建

时间:2015-03-01 06:44:54      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:

    主页在这: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。一个是游戏状态,一个是游戏运行了多久。

  • public Agent(StateObservation so, ElapsedCpuTimer elapsedTimer): the constructor of the class.
  • public Types.ACTIONS act(StateObservation stateObs, ElapsedCpuTimer elapsedTimer): the function called every game cycle to retrieve 

    其实就是根据当前游戏状态来返回执行的动作,和我们人玩是一样的,人类玩游戏也是一个响应机制:从当前的、历史的、未来的预测的,游戏信息中判断该如何响应,说到这里已经很明白了。 

    好消息是框架本身为我们实现了很多方便快捷的API。

    http://gvgai.net/forwardModel.php这里有已经实现好的API。

    技术分享

    advance是预测下一个游戏状态。我们也可以自己预测……

 

Sample

    技术分享

    这个是最简单的随机Controller。

    第一步:得到合法动作

    第二步:随机从合法动作里选一个

    第三部:返回这个合法动作

    

    第二个Sample——genetic:

    技术分享

    产生一串动作序列,不断地用advance函数去预测下一步的状态,然后进行评分。因为是预测的状态,所以不能保证一定正确,于是每预测一个状态,评分值的权重就会变成原来的90%。然后通过基本的筛选优质序列,替换掉劣质序列,再进行随机化的变异,得到一个较好的动作序列,返回第一个动作。其实和搜索树差不多。

    剩下的网站上都有,读读说明就可以了。

    

gvgai framework 搭建

标签:

原文地址:http://www.cnblogs.com/MyloverisU/p/4306550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!