说起人工智能(AI, Artificial Intelligence),我们的第一印象可能是机器人,在这里我没有跟大家谈论变形金刚的打算。但有着固定形式的行动能力的机器人确实可以算是一个人工智能的载体。只是现代的机器人暂时并不具备与人类一样程度的思考能力。你可以把“智慧”和“能力”结合在一起理解为“智能”,而所谓的“人工智能”即人类按照一定的程序去模拟出来的智能过程。
现代的计算机游戏中已经大量融入了AI元素,平时我们进行游戏时产生的交互都是由AI来完成的。比如在RPG游戏中出现的NPC,实际上就是一个AI的载体,它们有着最常规,以及特定情景的判断能力与数据处理能力。判断,也称为分析。大量的分析,即逻辑。逻辑,即AI.
最形象的例子应该是游戏中具有攻击能力的怪物,当它们看到玩家时(或者被玩家攻击)的情况下,怪物可能会在指定范围或者指定时间段内跟随玩家并试图反击。但当玩家离开怪物的视野范围或者超过了怪物的跟随时间,怪物则会自动返回原来的地方。而当玩家下次出现在同一个怪物的视野内时,怪物依然会作出相同的举动。但这并不能代表怪物具有记忆能力,因为它只能根据简单的程序去判断外界发生的特定场景以作出相应的处理。这纯粹是基于数字储存器与状态机的人工智能。如果我们在此基础上再进行优化,让怪物具有记忆能力:再次看到玩家时的怪物将会出现愤怒状态,并且攻击能力变得更强,似乎会更加有趣,因为这接近了人类的情绪特征。
0×01 – 行为树(Behavior Tree)
根据上面所描述的AI载体的特征,假设一个AI载体承载的知识量过于庞大,那就给维护带来了很大的困扰。只是如果我们要实现较为智能的AI载体,庞大的知识库和行为特征是必须的。
行为树(Behavior Tree)是Next-Gen AI提出的一个原型。它以图形的形式展现了AI系统的结构。如图(1-1):
(图1-1)
以上定义的是普通游戏怪物的基本AI的行为树。所谓树,即有根节点,有分支节点,有叶节点。可能大家已经注意到,在图中行为树中具有不同特性的节点,并且这些节点似乎是以一定的规则组装成的一棵树。
行为树节点(Behavior Tree Nodes):
·选择节点(Selector): 顺序执行子节点,只要它的一个子节点返回true,则整个分支返回true,反之返回false,类似程序中的逻辑或(OR)。
·顺序节点(Sequence) :顺序执行子节点,只要它的一个子节点返回false,则整个分支返回false,反之返回true, 类似程序中的逻辑与(AND)。
·条件节点(Condition) : 属于叶子节点(该种节点不允许有任何子节点),用于描述一个条件是否成立。
·行为节点(Action) : 属于叶子节点(该种节点不允许有任何子节点),用于描述一个最终执行的动作,一般返回true。