我们都知道现在AI(由人工制造出来的系统所表现出来的模拟人类的智能活动)非常的火,可以说是家喻户晓。当然,在游戏中,AI也是到处可以找到的,对于AI,我们应该关注的问题是如何让游戏角色能够向人或动物那样“感知”、“思考”和“行动”,让游戏中的角色看上去具有真实的人或动物的反应。

  实际上,对于游戏中的AI角色,可以认为它们一直处于感知(SENSE)->思考(think)->行动(Act)的循环中。

  • 感知:是AI角色与游戏世界的接口,负责在游戏过程中不断感知周围的环境,读取游戏的状态和数据,为思考和决策收集信息。例如:周围是否有敌人靠近等等。
  • 思考:利用感知的结果选择行为,在多种可能性之间切换。例如:决定是战斗还是逃跑?逃跑东在哪里?等等。
  • 行动:发出命令、更新状态、寻路、播放背景音乐和动画、生命值增减等等。

  尽管每种游戏需要的AI技术都有所不同,但绝大多数现代游戏中对AI的需求都可以用三种基本能力来概括。如下:

  1. 运动:移动角色的能力。
  2. 决策:做出决策的能力。
  3. 战略:战略战术思考的能力。

  在这个模型中,将AI任务划分为三个层级,分别为运动层、决策层及战略层。运动与决策层包含的算法是针对单个角色的,战略层是针对小队乃至更大规模群体的。需要注意的是,这只是一种基本的AI架构模型。实际中,根据游戏的种类与需求,可能会有所细化或增删。例如,棋类游戏就只有战略层,因为这种游戏中的角色不需要自己做出决定,也不用考虑如何移动。而其他许多非棋类游戏中,就不包含战略层,可能反应迟钝,只需要每个角色做出简单的决定,并且依次行动,而不需要角色之间协调工作。下面来分别分析这三层的任务。

运动层

  在运动层中的主要任务一般是导航和寻路,它们决定了角色的移动路径,当然,具体的移动行为还需要动画层的配合才能完成。例如:我们在游戏中可能会遇到这种情况:在某游戏关卡出,当敌人(此处指电脑)看到你时,他需要召集队友,那么他要拉警报,这就需要他们先移动到最近的固定的警铃,当这个铃较远时,他需要避开障碍物和你才能到达,这就需要较复杂的导航与寻路算法。

  当然,有许多行为可以直接由动画层处理的。例如:如果某任务坐在餐桌旁边,这时如果他做出吃东西的决定,那么只需要播放吃东西的动画就可以啦,不再需要其他的AI算法。运动层包含的算法能够把上层做出的决定策略转化为运动。例如:如果某个AI角色的决策层做出攻击玩家的决策时,运动层会利用与移动相关的算法,时角色接近玩家的位置,来执行这个决策,然后播放攻击动画,以及处理角色或玩家的生命值等等。

决策层

  决策层的任务是决定角色在下一时间步该做什么。决策层的功能可以利用有限状态机或行为树等技术实现,也可以采用更加复杂的AI技术,如模糊状态机、神经网络等技术实现。例如:当角色看不到玩家时,就进行巡逻,否则就进行攻击,在攻击的决策中还可以带有扔手雷、加大火力压制等等附加决策。

战略层

  战略指的是一组角色的总体行为,这时AI算法并不是只控制单个角色,而是会影响到多个角色的行为。小组中的每个角色都可以有他们自己的决策层和运动算法,但总体上,它们的决策层会受到团队战略的影响。

  其实,即使游戏中只有运动层和决策层,也可以实现很复杂的功能。事实上,大部分基于行为的游戏也只是用到了这两层,但是,如果需要团队协作,那么好酒需要某些战略AI。

Unity3D中的AI架构模型的更多相关文章

  1. Unity3d中3D Text对模型的穿透显示

    昨晚,好友在电话里问我在Unity3d中使用3D Text,不想让其穿透模型显示,即想让场景中的3D Text与模型有正确的遮挡关系,怎么解? 今早谷歌上查了查,明白了原因,因为3D Text的默认材 ...

  2. PowerDesigner(三)-企业架构模型(转)

    企业架构模型(Enterprise Architecture Model,EAM)是PowerDesigner 15新增的功能,它能够以图形的方式展现企业架构,从而取代文字描述:以偏向非技术性的表达方 ...

  3. PowerDesigner 企业架构模型 ( EAM )

    PowerDesigner 企业架构模型 ( EAM ) 说明 file工作数据库框架application网络   目录(?)[+]   一. 企业架构模型 说明 EnterpriseArchite ...

  4. [Unity3D][Vuforia][IOS]vuforia在unity3d中添加自己的动态模型,识别自己的图片,添加GUI,播放视频

    使用环境 unity3D 5 pro vuforia 4 ios 8.1(6.1) xcode 6.1(6.2) 1.新建unity3d工程,添加vuforia 4.0的工程包 Hierarchy中 ...

  5. 【深度学习篇】--神经网络中的池化层和CNN架构模型

    一.前述 本文讲述池化层和经典神经网络中的架构模型. 二.池化Pooling 1.目标 降采样subsample,shrink(浓缩),减少计算负荷,减少内存使用,参数数量减少(也可防止过拟合)减少输 ...

  6. Unity3d中模型导入轴向不对的解决方法

    在unity3d中导入模型,经常会遇到模型的轴向与unity中默认的轴向不符合的情况. 网上有很多解决办法都是说在3dmax中导出模型时修改模型的轴向,那么我接下来讲的就是如何在unity里面修改模型 ...

  7. unity3d中的自定义模型的顶点法线和建模软件中的术语“软硬边”和立方体

    在unity3d中我是想用Mesh生成一个正方体,直到遇到了法线的问题. 我是想显示如下图所示的正方体,却发现法线设置上的问题. 这里我先使用了8个顶点 按照每个顶点一个法线的结果,只能是这样:(也就 ...

  8. HBase实践案例:知乎 AI 用户模型服务性能优化实践

    用户模型简介 知乎 AI 用户模型服务于知乎两亿多用户,主要为首页.推荐.广告.知识服务.想法.关注页等业务场景提供数据和服务, 例如首页个性化 Feed 的召回和排序.相关回答等用到的用户长期兴趣特 ...

  9. 面向视频的全新AI架构 —— 阿里云智能视觉技术全解

    我们都知道,AI技术正在以可见的速度被应用于各行各业,然而绝大部分业务场景想应用AI技术,都需要算法工程师根据自身业务的标注数据,来进行单独训练,才能打磨出合适的AI模型.如此一来,如何以最低的门槛和 ...

随机推荐

  1. 《解决在Word中为汉子插入拼音及音标的问题》

    说明:本人使用的是Word2007版本.以下示例都是基于本人电脑操作.如有疑问,欢迎留言交流. [1]为word中的一些文字添加拼音及音标. [2]开始为文字添加拼音及音标. 选中要添加拼音及音标的文 ...

  2. 华为荣耀畅玩5C NEM-UL10 ROOT那些事儿(亲测成功)

    以前ROOT手机都是在手机上安装KingRoot 刷机精灵等软件分分钟成功(不排除偶然,,比如这款华为荣耀...) 手机安装KingRoot等软件,,,失败   电脑上安装连接手机Root,,,,失败 ...

  3. 关于nodejs express4.X框架不支持layout模板的问题解决

    网上有有种方法是安装express-partials模块,然后在 app.set(‘view engine’, ‘ejs’); 这句后面加上app.use(partials());但是,经过我的反复尝 ...

  4. C++ 头文件系列(istream)

    1. 简介 其实叫它istream有点不合适,因为该头文件不仅定义了istream,还定义了iostream. 2. basic_istream模版 basic_istream继承自basic_ios ...

  5. MySQL索引创建、删除、查看

    主键索引   PRIMARY KEY索引仅是一个具有名称PRIMARY的UNIQUE索引.这表示一个表只能包含一个PRIMARY KEY,因为一个表中不可能具有两个同名的索引. ALTER TABLE ...

  6. java作业—3

    动手动脑: 一.编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. 方法1(数据类型)(最小值+Math.random()*(最大值-最小值+1)) 例:(int)(1+Math.r ...

  7. http状态码及解释

    简单版: 100  Continue   继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息 200  OK         正常返回 ...

  8. C++STL笔记

    C++STL 1.vector 向量,长度可变的数组 头文件 #include<vector> 1.1vector的定义 vector<typename> name; 例如: ...

  9. SVM入门(一)

    近来,了解了一下SVM(支持向量机 support vector machine)的原理.顺便把自己理解的内容整理一下. 不讲背景啦,直接切入主题.     一.什么是支持向量机 好比说,我们现在在一 ...

  10. Android 获取浏览器当前分享页面的截屏

    Android 获取浏览器当前分享页面的截屏 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/BrowserScreenShotActivity 文中 ...