1. 讲一讲对AI的理解?(什么是AI、为什么要AI、怎么做AI)
AI本质上就是一个输入系统,就像玩家有input system一样,AI是NPC、怪物们的input system。不同的是,玩家的输入是简单的、直白的;AI的输入往往会很复杂、多变。所以AI不是一个简单的输入系统,更像是一个环境感知+决策的系统。AI的复杂就体现在它的环境感知,来源会有很多:可以是其他上层业务系统(任务系统、天气系统、玩家输入系统),也可以是AI本身的设定诉求(释放技能、追击、仇恨值),这些环境感知的变量会随着对AI表现丰富度的需求增加而增加。另外,AI的决策也是多变的,举例:怪物的战斗AI往往需要及时响应+与玩家良好交互,一个怪物做出攻击指令后如果被玩家击飞了,可能立马就打断它之前的攻击计划,转而执行空中翻滚了,因为AI的决策不一定都来自于主动行为,也会有被动行为,它们之间的优先级会存在互相打断的可能,所以这很多变。所以总结来说,一个合格的AI应该是做到了感知+决策+输入的能力。
其实为什么需要AI,这个诉求是很明显的,为了NPC或怪物呈现出更”拟人“的感觉,或者说提高RPG中,沉浸式的部分。根据游戏类型的不同,在玩家较少的游戏中,用AI提高玩家的陪伴感是很好的策略。同时像博德之门这种多分支游戏,有AI的参与,提高了玩家对故事背景的真实感。
做AI系统是一个很宽泛的问题,我觉得先描述一下一条AI管线(类似于渲染管线),会比较具体,然后其中的细节是可以慢慢拓展的。
- 第一步,是AI的环境感知,这部分内容包含了:仇恨值、追击对象的位置、技能CD好没好、周围场地是否空旷等等条件,我们会把这部分的信息在每帧的帧头更新,以便后面的步骤中用到。环境感知的部分由于感知的来源会很多,像一般游戏都会有的战斗部分的决策、任务系统的条件变化、受击等控制技能的效果插入,还有我们游戏里的应激系统、生态系统、群体AI系统,他们可以拆分成多个独立的系统来管理,但是最终,一定会把信号传入到AI个体身上。这就是所谓的环境感知部分。
- 第二步,基于第一步的信息(或者说是变量吧),AI会做出决策,说白了就是
if(xxx) { do something } else if(yyy) { do something }
业内常用的用于第二步的框架有:(分层)状态机、行为树、GOAP、HTN,当然啦,像《只狼》这种直接让策划上手if-else撸代码也行。关于这些框架的讨论,我们暂且按下不表。这里我们主要讲决策步骤的核心就是,基于环境的感知,做出合适的行为选择,当然也可能没有合适的行为,那么设计者通常是要做好保底的容错措施的,就是所谓”else“的部分。 - 第三步,是逻辑层处理的环节,我称之为Action。举个例子,在第二步中,选择到的合适的行为是”追击玩家“,那么在逻辑层需要处理的就是如何计算得到当前位置到玩家位置的路径,这个时候AI系统体现的就是input的能力,它向寻路系统输入了一套参数,期望返回寻路返回路径信息。
- 第四步,是表现层处理的环节,我称之为Animation。还是上一步的例子,当Action获取了路径信息后,会把结果传给表现层,去做正确的动画表现。这也是向动画系统输入参数的过程。
大体AI管线就是如此,其实并没有什么高深的东西,只是日常业务中需要注意,多来源的环境信息同时对AI行为产生影响的时候应该注意优先级,同时不能有其他系统抢占了AI决策的活,代AI做了决策。虽然在我们项目里击飞是个例外,因为同步队列的关系,表现上不能延迟击飞,于是只能立即响应,但是对于这种特殊case,AI依然是有感知的。其次数据流向应当是逻辑侧流向表现侧,两者不要有交叉。
2. 讲讲常见的AI决策框架
- 状态机:优点是状态跳转的方式逻辑看着更清晰;缺点是需求复杂起来后基本难以维护(动画状态机常有的蜘蛛网)。可以用分层的方式缓解一部分,但是终究不是长久之计。
- 行为树:从根节点出发,以”先上后下,先左后右“的顺序遍历节点。优点是绘制起来逻辑清晰、可拓展性好;缺点是树的膨胀会比状态机图更大。这个时候可以拆分子树来缓解。同时我们项目里结合了状态机的状态跳转思路在主树上包了一层,整体来说这种以状态切割子树的方式同时取了状态机和行为树的长处。
- 涌现式AI决策:GOAP(goal oriented action planing)与HTN(hierarchical task network)。不同于上述方案,这种涌现式AI决策的特性是,自行组合action,就跟rougelike游戏的随机性一样,好处是能以更少的人力,实现更丰富、种类更多的表现,缺点是每次计划重组是耗时的、不及时的,对于战斗来说往往是不满足策划需求的。GOAP的搜索顺序是从后向前,即从目标出发往world state搜索。而HTN是从world state往目标搜索,且HTN会对行为做分层归类,加速搜索过程。
3. J5的行为树是怎样的?
标签:AI,系统,自我,玩家,状态机,面试,决策,感知,互搏 From: https://www.cnblogs.com/aisingioro/p/17868685.html