游戏AI的实现通常分为两种,有限状态机(FSM)以及行为树(+ai感知+blackboard);
简单的需求
创建一个敌方AI,该AI看到玩家后会做出反应并展开追逐。当玩家离开视线后,AI将在几秒钟后(这可根据你的需求进行调整)放弃追逐,并在场景中随机移动,再次看到玩家时便会继续追逐。如下例视频所示。
https://docs.unrealengine.com/4.26/zh-CN/InteractiveExperiences/ArtificialIntelligence/BehaviorTrees/BehaviorTreeQuickStart/
有限状态机(FSM)
概念
有限状态机,又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
组成
状态机由下列几部分组成:
状态集(States):包括现态和次态在内的一系列状态,用来描述状态机所处的状态。
事件(Event):又被称为“条件”,当满足条件时,将会触发一个动作,或者执行一次状态的迁移。
动作(Action):条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。
转换(Transition):通过转换函数将状态从现态迁移到次态的动作。迁移后次态变为现态。
特点
有限状态机维护了一张图(如图结构,方框是状态,箭头是状态之间的联系),图中的结点代表不同的状态,状态之间通过某种条件触发转换,如果不满足条件则维持原状态。
这里以一个简单的例子来说明。
下图为游戏中使用的AI有限状态机。
从图中可以看出,有限状态机表示的AI不可能同时处于图示状态中的多个,而只可能处于其中一种状态,状态的转换取决于转换条件和当前所处状态。
我们不考虑怪物的出生和死亡状态,只考虑图中列出的这几个状态,可以看出,它们的转换关系是非常显而易见的,控制转换的核心条件是AI是否看到玩家(IsSee),驱动了整个状态机的状态切换。