《Unity3D人工智能编程精粹》笔记
2021/12/11 22:18:23
本文主要是介绍《Unity3D人工智能编程精粹》笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- Unity3D人工智能架构模型
- 游戏AI的架构模型
- FPS/TPS游戏中的AI解析
- 实现AI角色的自主移动——操控行为
- Unity3D操控行为编程的主要基类
- 将AI角色抽象成一个质点——Vehicle类
- 控制AI角色移动——AILocomotion类
- 各种操控行为的基类——Steering类
- 个体AI角色的操控行为
- 靠近and离开
- 抵达
- 追逐and逃避
- 随机徘徊
- 路径跟随
- 避开障碍
Unity3D人工智能架构模型
- 感知:是AI角色与游戏世界的接口,负责在游戏运行过程中不断感知周围环境,读取游戏状态和数据,为思考和决策收集信息。(for example:是否有敌人接近等。)
- 思考:利用感知的结果选择行为,在多种可能性之间切换。(such as:战斗还是逃跑?躲到哪里?)
一般来说,这是决策系统的任务,有时也可能简单地与感知合二为一。 - 行动:发出命令、更新状态、寻路、播放声音动画,也包括生命值减少等。这是运动系统、动画系统和物理系统的任务,而动画和物理系统由游戏引擎提供支持。
游戏AI的架构模型
对AI需求的三种基本能力:
(根据游戏种类和需求进行细化或增删)
运动层:导航+寻路,决定角色的移动路径,具体的移动行为需要动画层的配合(有许多行为可以直接由动画层处理)。运动层包含的算法能够把上层做出的决策转化为运动。
决策层:决定角色在下一时间步该做什么。
战略层:一组角色的总体行为,团队协作时用。小组中的每个角色可以有它们自己的决策层和运动算法,但总体上,它们的决策层会受到团队战略的影响。
FPS/TPS游戏中的AI解析
FPS(第一人称视角射击游戏):以玩家的主观视角来进行射击的游戏。
TPS(第三人称视角射击游戏):玩家控制的游戏人物在屏幕上是可见的,更加强调动作感。
运动层:确定角色如何在游戏世界中移动。(寻最优路)
决策层:确定角色当前目标、命令、状态和当前目的地,并与其他层通信,使角色协调地运动到一个指定的目标地点。(决定AI的执行行为)
战斗控制器:
- 感知部分:
- 视觉子系统:考虑距离、视场角度、当前的可视级别(例如光线、雾和障碍等)。感知受伤害、碰撞等。
- 听觉子系统
- 策略子系统
- 动画部分:负责控制角色的骨骼关节。
选择动画,选择动画参数,播放角色运动序列。
实现AI角色的自主移动——操控行为
操控行为:操作控制角色,让它们能以模拟真实的方式在游戏世界中移动。
它的工作方式是通过产生一定大小和方向的操控力,使角色以某种方式运动。
基本行为中的每一个行为,都产生相应的操控力,将这些操控力以一定的方式组合起来(将基本行为进行不同组合),就能够得到更复杂的“行为”,从而实现更为高级的目标。
无论群体中有多少个体,对于每个个体,计算复杂性有限,通过这种简单计算,可以产生逼真效果。
(两个相似的鸟群,即使是飞过相同的路线,行为也是不同的)
缺点:可能会出现无法预测的行为,在使用时许多参数需要通过实验调整。
Unity3D操控行为编程的主要基类
将AI角色抽象成一个质点——Vehicle类
控制AI角色移动——AILocomotion类
是Vehicle的派生类,能真正控制AI角色的移动。(包括计算每次移动的距离,播放动画等)
各种操控行为的基类——Steering类
是所有操控行为的基类,包含操控行为共有的变量和方法。
(操控AI角色的寻找、逃跑、追逐、躲避、徘徊、分离、队列、聚集等都可由此派生)
个体AI角色的操控行为
靠近and离开
靠近:指定一个目标位置,根据当前的运动速度向量,返回一个操控AI角色到达该目标位置的“操控力”,使AI角色自动向该位置移动。
离开:与前者正好相反,产生一个操控AI角色离开目标的力。
小三角:AI角色
预期速度:从AI角色的当前位置到目标位置的向量
操控向量:预期速度与AI角色当前速度的差(大小随当前位置变化而变化)
抵达
AI角色减速并停到目标位置,避免冲过目标。
当角色在停止半径之外,以最大速度移动。
当角色进入停止半径之内,逐渐减小预期速度,直到为0。
追逐and逃避
追逐:与靠近行为很相似,只是目标由静止不动变为可移动角色。
预测猎物的未来位置,然后向着未来位置的方向追去,才能在最短时间内追上猎物。
实现:
- 使用一个简单的预测期,在每一帧重新计算它的值。
(假设采用一个线性预测期,又假设在预测间隔T时间内角色不会转向,角色经过时间T之后的未来位置可以用当前速度乘T来确定)
一些情况下,追逐可能会提前结束。
例如,如果逃避者在前面,几乎面对追逐者,那么追逐者应该直接向逃避者当前位置移动。
二者之间的关系可以通过计算逃避者朝向向量与AI角色朝向向量的点积得到。
逃避:使猎物躲避捕猎者。
(比如鹿被狼追逐,鹿要不断变换逃跑方向,试图逃离狼预测的追逐方向)
随机徘徊
在游戏场景中随机放置目标,让角色靠近目标。如果每隔一定时间就改变目标的位置,这样角色就永远靠近目标而又不能到达目标(即使到达,目标也会再次移动)。
But角色有时会突然掉头,因为目标移动到了它的后面。
路径跟随
产生一个操控力,使AI角色沿着预先设置的轨迹,构成路径的一系列路点移动。
最简单的跟随路径方式:
将当前路点设置为路点列表中的第1个路点,用靠近行为产生操控力来靠近这个路点,直到非常接近这个点;
然后寻找下一个路点,设置为当前路点,再次接近它。
重复这样的过程直到到达路点列表中的最后一个路点,再根据需要决定是回到第一个路点还是停止在这最后一个路点上。
- 封闭路径:循环,永不结束。需要回到起点重新开始。
- 开放路径:AI角色需要减速(利用抵达行为)停到最后一个路点上。
在实现路径跟随行为时,需要设置一个“路点半径”参数(会引起路径形状的变化)。
即当AI角色距离当前路点多远时,可以认为它已经到达当前路点,从而继续向下一个路点前进。
避开障碍
操控AI角色避开路上的障碍物。
当AI角色的行进路线上发现比较近的障碍时,产生一个“排斥力”,使AI角色远离这个障碍物。
当前方发现多个障碍物时,只产生躲避最近的障碍物的操控力。
分析步骤:
这篇关于《Unity3D人工智能编程精粹》笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22程序员出海做 AI 工具:如何用 similarweb 找到最佳流量渠道?
- 2024-12-20自建AI入门:生成模型介绍——GAN和VAE浅析
- 2024-12-20游戏引擎的进化史——从手工编码到超真实画面和人工智能
- 2024-12-20利用大型语言模型构建文本中的知识图谱:从文本到结构化数据的转换指南
- 2024-12-20揭秘百年人工智能:从深度学习到可解释AI
- 2024-12-20复杂RAG(检索增强生成)的入门介绍
- 2024-12-20基于大型语言模型的积木堆叠任务研究
- 2024-12-20从原型到生产:提升大型语言模型准确性的实战经验
- 2024-12-20啥是大模型1
- 2024-12-20英特尔的 Lunar Lake 计划:一场未竟的承诺