flash 游戏 3D
  • 2008-07-25目标驱动的智能体行为(个人翻译,不准确之处还请包涵) - [flash 游戏 3d]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://dayuhome.blogbus.com/logs/25485687.html

                             目标驱动的智能体行为(个人翻译,不准确之处还请包涵)
              多数人了解有限状态机来制作游戏角色的AI,但是有限状态机的种种弊病,使得其恶名远播。
    这次我们用另外一种方法,一种分层的目标集合来定义智能体的行为
            通常目标可以是原子的也可能是复合的。原子目标定义一个简单任务,行为,或者动作,
    比如查找一个位置或是给枪上膛。然而复合目标由几种子目标组成,这些子目标可能是原子也
    可能是复合的,这样就可以定义一个嵌套的层级。复合目标比原子目标要完成更多的任务,
    如建立一个武器工厂,或者撤退以找到掩体。这2种目标能够监视他们的状态,当失败时以重新计划。
    分层结构提供给AI程序员一个直觉机制以定义智能体的行为,因为他共享了很多人类思考过程的相似点。
    人类选择更高级的抽象目标满足他们需要和渴望,然后把目标分解成为一系列的动作计划并付诸实施。
              例如在一个雨天,你决定去看一场电影,这是一个抽象目标,他们不可能在分解成一些小的子目标之前被完成,例如离开房子,去影院,进入影院。事实上,每个这些子目标也是抽象的,必须被继续分解。
    这些分解是直接的,但有时候我们会陷入一些选择,例如,去电影院可能以几种方式达到,你可以开车,
    可以坐公车,可以骑自行车,也可以步行去。你可能花费一些时间来决定怎么去。这个过程持续直到目
    标已经被分解成基本的动作,你身体可以执行的时候。例如离开房间,能分解成,走到衣柜钱,打开衣
    柜,拿出外套,穿上外套,走到鞋架,换上鞋子,打开门,走出去。而且,人们不愿意浪费能量,人么
    不会浪费大大小小的卡路里来思考一个不是绝对需要的目标。如,当你手里没有一个罐头的时候,你不
    会思考是否要打开它,当鞋没有穿在脚上的时候,你也不会去考虑去系鞋带。
            一个目标导向的智能体会模仿这些行为。每次思考,会检查智能体的状态,选择一个预先设计好的
    高级目标或策略,它相信这个目标的达成将更容易使得它满足自己的需要和愿望(通常是赢得游戏)。
    然后智能体将尝试跟随这个目标,并将其分解成一系列的子目标,依次完成他们。它将不断的努力,
    直到目标达成,或者失败,或者游戏状态让一个新的策略成为必要。


    让我们看一个例子。
    也许你玩过Dragon Slayer 2这个游戏。Eric的AI程序员已经为其创建了几种策略作为他的选择。防御龙,
    攻击龙,买武器,得到食物,得到啤酒。这些策略代表一些高级的目标,所以他们将被分解成诸如此类的
    小目标:寻路,沿着路走,穿过路边缘,刺龙,切龙,逃跑,躲避。为此,要完成一个策略,Eric必须要
    分解策略成这些小目标,并逐个完成他们,有必要的话还要分得更细。
             现在Eric已经进入了这个游戏世界。既然他手里没有拿着武器,因此他感到容易被攻击,他强烈的想要得到一个尖锐的矛,他的大脑(一种特别类型的目标,他能作出选择)考虑了所有的策略,觉得买武器最能够满足他的需要。所以这个被指派给他作为目标,直到有其他的选择。现在,Eric无法完成这个目标,因为目标太抽象了,他必须分解它,从这个例子看,包含的子目标有得到足够的金子,然后去铁匠铺。去铁匠铺只会在得到足够的金子后才被考虑。得到金子又是一个复合目标,他包括找到金矿的路径,然后跟随路径,然后捡起天然的金块。找到去金矿的路径,这个通过向路径规划器发请求来获得。然后将其从目标队列种移除。当所有的目标完成后,Eric将拥有一个发亮的长矛在手中。

    收藏到:Del.icio.us




    评论

  • 我在MSN里加你了,通过一下,我现在有个FLASH的活儿要和你谈谈
    回复z_grass说:
    ok,我的qq:32932813,可留言
    2008-09-13 21:08:31