IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> AI 感知系统 -> 正文阅读

[游戏开发]AI 感知系统

AI角色感知的信息多种多样,通常会包含视觉和听觉信息,也可能包括脚步声、死去的同伴或敌人等。其中,视线查询(Line-of-Sight)几乎是必不可少的。

在游戏中,AI角色可以通过两种方式获得游戏世界的信息–轮询和事件驱动。
轮询:通过积极地观察世界的方式来获得信息,例如如果想知道周围有没有其他角色,在代码块中查找所有AI角色,看看是否在附近
事件驱动:通过坐等消息的方式来获取信息
解决方案:触发器
(1) 当玩家射击时,一个声音触发器就被添加到场景中,这样,周围的AI角色会注意到枪声,决定是否逃避或赶来参与战斗
(2) 当玩家打倒一个护卫,护卫倒在地下时,相应的视觉触发器使得其他靠近的AI角色对尸体做出反应,决定避开这个区域或上前查看等
(3) 门的手柄可以是一个接触触发器,当玩家触碰到它时,门就会打开
(4) AI角色沿着昏暗的走廊走向某个地方,地面是对压力敏感的,这样随着AI角色的走动,触发器发出脚步声的回响
(5) 在雪地上行走的角色会留下脚印,当角色被击中而逃走时可能会留下血迹,这些都可以是视觉触发器,AI角色可以沿着脚印或血迹追逐角色

如果只考虑模拟人的感觉,那么上面提到过的触发器似乎已经够了,味觉和嗅觉在游戏中很少使用,而且也可以模拟听觉感知的方式实现。但是,游戏总还有一些其他种类的触发器。例如:
(1) 时间相关的触发器。游戏角色可能会需要在6点回家,7点怪物出现几率大
(2) 来自输入接口的触发器。例如,玩家按下Esc键,会触发过场动画等
(3) 当玩家开采资源或建造单位到达一个值后触发,发生某些事情
(4) 某一个单位发生事件后触发,比如,死亡、被攻击、升级、释放一项技能、购买物品等
(5) 单位进入或离开特定区域时触发。例如进入水域时,要播放游泳动画,发生高度突变时,播放攀爬动画
(6) 指定单位的生命值在某个值以上或以下时触发,用于设定剧情

实现:
游戏常用的感知类型是视觉和听觉。对于视觉,需要配对的视觉触发器和视觉感知器;为了实现听觉,需要配对的声音触发器和声音感知器。总的来说,游戏中有多个触发器和多个感知器,可以通过一个管理中心——事件管理器,统一管理。还需要模拟人的记忆,例如,玩家为了躲避射击,躲到墙后,这时AI角色就进入巡逻状态就不合常理了。为此,感知系统还要包括一个记忆感知器。

视觉感知:用视锥体来模拟视觉,视觉的另外一个特性是它不能穿过障碍物,因此在眼睛与能看到的物体之间,不能有障碍物的遮挡。需要进行视线测试(LOS),才能确定最终的结果,有时亮度也会影响到可视性。
为了降低感知的开销,可以采用Level-Of-Detail(LOD)逻辑,当AI角色距离玩家很远时,可以减少感知检测。毕竟大部分最重要的行为都是发生在玩家附近的。
Unity中实现:将感知器和触发器注册到管理器中,感知器如何发现触发器:在触发器中加入,如果这个这个触发器和感知器的类型能对应上,并且在视线范围内且两者之间没有障碍物(射线检测),如果能看到则触发器通知感知器,感知器在做相应的策略

听觉感知:用一个球形区域模拟。另一种方法是当声音被创建时,为它加上一个强度属性,随着传播距离的增加,声音强度会衰减,而每个AI角色也有自己的听觉阙值,如果声音小于这个阙值,AI角色就听不到这个声音
听觉的特殊之处它会很快消失。它的存在会持续一定时间,然后自行消失。例如,枪声持续两秒消失
例如:当武器开火时,在开火的位置创建一个声音触发器,它的半径可以设置为与武器的声音大小成正比。此时,在一定范围内,且具有声音感知器的感知体就能够“听到”这个声音,并做出反应。

触觉:通过Unity自带的触发检测

记忆感知
定义一个记忆列表,列表中保存了每个最近感知到的对象、感知类型、最后感知到改对象的时间以及还能在记忆中保留的时间,当有一段时间没有感知到这个对象,,这个时间超出了记忆时长,就会将这个对象从记忆列表中删除。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:56:40  更:2021-11-09 19:59:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 0:44:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码