AI与游戏——引言

我将在这个博客记录一下我在学习游戏中的人工智能时的一些理论,实验与心得。这个博客理论部分只是点到为止,更多的是代码的实现思想,也就是实践。主要参考《AI and Games》一书。web

在这里首先介绍一下AI与游戏的关系,一是使NPC(no-player-character)的行为更像人类,二是操纵角色赢得游戏胜利(对战类或非对战类),三就是利用AI自动生成游戏场景。这些应用方向在书中各个章节都有介绍,本文即是以书中顺序为基础,并结合了自身实践。算法

而后介绍一下游戏的一些特性。当为一个游戏设计相应的AI算法时,有必要知道这个游戏以及算法的特色,这决定了那种算法更为有效与合适。这里主要讨论三个特性:可观测性,随机性,时间密度。下图对三个特性作了很好的阐述。svg

游戏特性与例子

从上图能够看到,可观测性决定了咱们能从游戏中得到的信息的多少,如象棋游戏,咱们能够看到全局信息,而像战船这类游戏,咱们只能看到本身的状况看不到对手的战况。随机性决定了算法的判断能力,一样上面的战船游戏,虽然看不到对手的状况,可是对方的布局是肯定的,在投放相应炮弹后即可以知道对手的战船的大体分布,而像扑克类游戏,对手出牌的随机性就很高,这就很难以提早决策。还有一点即是时间密度,最简单的例子就是回合制游戏与及时动做游戏,回合制游戏有相对充足的时间来制定策略,二即时类游戏的时间很紧迫,须要AI实时作出反应。布局

介绍完游戏的三大特性以后,我将从书上主要列举的游戏——“吃豆人”开始,介绍相应AI算法是如何让吃豆人在游戏中得到尽量多的分数。从上图能够看出,吃豆人游戏属于高可观测性,低随机性,高时间密度的游戏,前二者下降了入门难度,而实时性这一点也适当的须要你对算法的时间复杂度有必定要求。学习