首页 > 其他分享 >自我面试(左右互搏)

自我面试(左右互搏)

时间:2023-11-30 23:49:08浏览次数:27  
标签:AI 系统 自我 玩家 状态机 面试 决策 感知 互搏

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管线(类似于渲染管线),会比较具体,然后其中的细节是可以慢慢拓展的。

  1. 第一步,是AI的环境感知,这部分内容包含了:仇恨值、追击对象的位置、技能CD好没好、周围场地是否空旷等等条件,我们会把这部分的信息在每帧的帧头更新,以便后面的步骤中用到。环境感知的部分由于感知的来源会很多,像一般游戏都会有的战斗部分的决策、任务系统的条件变化、受击等控制技能的效果插入,还有我们游戏里的应激系统、生态系统、群体AI系统,他们可以拆分成多个独立的系统来管理,但是最终,一定会把信号传入到AI个体身上。这就是所谓的环境感知部分。
  2. 第二步,基于第一步的信息(或者说是变量吧),AI会做出决策,说白了就是
    if(xxx)
    {
      do something  
    }
    else if(yyy)
    {
      do something  
    }
    业内常用的用于第二步的框架有:(分层)状态机、行为树、GOAP、HTN,当然啦,像《只狼》这种直接让策划上手if-else撸代码也行。关于这些框架的讨论,我们暂且按下不表。这里我们主要讲决策步骤的核心就是,基于环境的感知,做出合适的行为选择,当然也可能没有合适的行为,那么设计者通常是要做好保底的容错措施的,就是所谓”else“的部分。
  3. 第三步,是逻辑层处理的环节,我称之为Action。举个例子,在第二步中,选择到的合适的行为是”追击玩家“,那么在逻辑层需要处理的就是如何计算得到当前位置到玩家位置的路径,这个时候AI系统体现的就是input的能力,它向寻路系统输入了一套参数,期望返回寻路返回路径信息。
  4. 第四步,是表现层处理的环节,我称之为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

相关文章

  • Java面试小练(五)
    1).请描述一下Maven中坐标的组成部分?以及在Maven项目添加一个依赖之后,依赖在仓库中的查找顺序。坐标是用于描述仓库中资源的位置其主要组成groupld:定义当前Maven项目隶属组织名称artifactld:定义当前Maven项目名称(通常是模块名称,例如CRM、SMS)version:定义当前项自版......
  • 面试题总结
    1、通信协议通信协议通常使用分层架构来组织和管理通信过程。常见的分层架构包括以下几层:物理层:物理层负责处理物理媒介上的信号传输,如电缆、光缆、无线信号等。数据链路层:数据链路层负责将物理层传来的信号转换为数据帧,并在相邻节点之间进行数据传输。网络层:网络层负责......
  • 数据类型扩展及面试题详解day2
    publicclassdemo2{publicstaticvoidmain(String[]args){inta=10;inta1=010;//八进制inta2=0x10;//十六进制0~9A~f16System.out.println(a1);System.out.println(a);System.out.println(a2);fl......
  • 跟敬姐读《程序员的自我修养》
    最近刚读完陈逸鹤老师的《程序员的自我修养》,结合敬姐十几年的程序员生涯,分享给大家。短视频为王的时代,为什么要阅读?敬姐也曾经有过这种想法,读过的书,不管当时觉得多么震撼和共鸣,过一段时间好像都会忘记。那我们还为什么要花费时间去阅读呢?我赞同这本书里面的一段话:阅读就像是......
  • Android面试被锤记:一面一个不吱声
    前言在老东家干了6年,发展一般,很想出去,但是一直没有合适的机会,只好一边准备面试一边学习。让我没有想到的是,突然收到了“毕业”通知,当然,不光是我,而是整个团队。毕业,对于我这样的老员工来说是不错的结果,因为正好我也想出去,而且这次公司还能给不少补贴。回家住了一段时间后,我开始......
  • 比亚迪面试,全程八股!
    比亚迪最近几年凭借着其新能源汽车的板块大火了一把,无论是名声还是股价都涨得嘎嘎猛,但是迪子招聘编程技术岗位的人员却有两个特点:面试难度低,对学校有一定的要求。薪资给的和面试难度一样低。但不管怎么,迪子也算是国内知名公司了,所以今天咱们来看看,他的校招Java技术岗的面......
  • 《力扣面试150题》题单拓展——二分法
    《力扣面试150题》题单拓展——二分法困难题:找第K大/小1.基础知识首先可以确定答案的上下界单调性分析:如果当前答案为m时,可以满足,一定有一侧是一定满足的,另一侧不一定,需要去探索boolis_ok(){}intl,r;intans;while(l<=r){intm=l+((r-l)>>1);......
  • 《力扣面试150题》题单拓展——堆
    《力扣面试150题》题单拓展——堆一、堆困难题:找K小,先考虑二分法基础知识//优先队列:priority_queue<int,vector<int>,greater<int>>q;//小根堆priority_queue<int,vector<int>,less<int>>q;//小根堆优先队列自定义比较函数//1,小根堆boolcmp(vector<i......
  • OOP部分面试题的前世今生
    一、从变量声明开始    在.NET程序中定义一个变量时,会在RAM(随机存取存储器)中为其分配一些内存块。该内存块有3样东西:名称,数据类型、值。  变量究竟会被分配到那种类型的内存,取决于变量的数据类型。在.NET中有两种可分配的内存:堆和栈。  为了便于理解,用以下代码来......
  • Java面试小练(四)
    请描述GET请求方式与POST请求方式的区别?post比get更安全,发送数据更大get和post都是http和服务器交互的方式get会将请求的数据放在url中,http协议头,中间用?来链接,用&来相连数据,中文会进行url加密post会将数据放在http的包体内发送get请求数据放在url,理论上没有大小限制,但是浏......