首页 > 技术文章 > gvgai framework 搭建

MyloverisU 2015-03-01 02:54 原文

    主页在这: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是预测下一个游戏状态。我们也可以自己预测……

 

Sample1: Random Controller

    

    这个是最简单的随机Controller。

    第一步:得到合法动作

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

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

    

    第二个Sample——genetic:

    

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

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

    

推荐阅读