我们都知道现在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. iOS ReactiveCocoa(RAC)学习详解

    概述: ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的一个框架,有时间,自己也了解学习了一下这个框架的一些基本的应用,其实你要学的话网上是有很多很多的博 ...

  2. 【吐血整理】svn命令行,Subversion的正确使用姿势~

    一.写在前面 前面一直博主一直用svn的桌面版本,但看项目经理一直都用的命令行方式,不为性能,还能直接装逼呀!在这里先感谢赵哥,也把它分享给感兴趣的你们~ 二.直接上干货 1. svn checkou ...

  3. GitHub 上下载代码运行报错 :'The sandbox is not sync with the Podfile.lock\'

    问题描述: github下载的Demo,很多时候使用到CocoaPods,有的时候因为依赖关系或者版本问题不能编译运行.出现例如The sandbox is not sync with the Pod ...

  4. 如何用docker安装laravel开发环境

    如何用docker安装laravel开发环境 看laravel框架的官方文档安装部分时,发现需要安装特别多软件,估计还有许多复杂的配置,官方推荐使用Laravel Homestead虚拟机进行安装,但 ...

  5. 事件详解<一>

    一 扭转对事件的认知 事件,是js和html交互的桥梁.当用户操作页面上的元素,比如点击,鼠标移入移出,然后做一些事情. 你若触发,我便执行--事件发生,调用它的处理函数执行相应的JavaScript ...

  6. 动态添加删除网卡 - 每天5分钟玩转 OpenStack(156)

    这是 OpenStack 实施经验分享系列的第 6 篇. 在项目实施过程中,经常会有添加删除网卡的需求.比如一个运行数据库的 instance,初始只有一个网卡,数据库服务和备份共用这块网卡,后来为提 ...

  7. 兜转数年,老跳成了卖过软件开过店写过APP的电脑老师

    老跳(因为性格太跳,被大家公认的外号),87年生,湖南人,上篇中老赵的大学下铺兄弟. 2008年大学毕业两人一同去的广州,住在求职公寓里找工作. 老赵找工作找了半个月,老跳却在到广州的第二天就开始上班 ...

  8. MES设备支持快速完工

    1) 在菜单界面点击指定快速键 2) 初始界面 3) 一般流程 a) 扫描任务单号,即可完成工序加工 a1) 获取任务单工序的条件 按任务单卡号或配模的模具卡号搜索行状态为O的工序 a2) 工序完工操 ...

  9. MySQL之乱码问题解决详解

    今天在写一个项目的时候,在数据库中手动插入数据不会产生中文乱码,但是通过javaWeb却出现乱码,把提交表单和响应中的乱码问题解决后,还是乱码.所以我锁定一定是我的mysql数据库中出现了乱码的现象.

  10. 10条建议让你创建更好的jQuery插件

    在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了.使 ...