学习笔记14:AI

AI基础

Navigation 导航
 

3个步骤:

地图表示-可行走区域
我们需要告诉AI他们可以步行的地方
玩家的可行走区域由角色移动能力决定。
      物理碰撞器
      爬坡/爬高

      跳跃距离.
模拟AI的运动作为玩家的动作成本过高
Al代理仍然被期望拥有与玩家相同的可移动区域。
 

Map Representations - Formats.地图表示-格式

.Waypoint Network 路点网络
. Grid 格网
. Navigation Mesh.寻路网络 

.Sparse Voxel Octree Voxel八叉树
 

Waypoint Network 路点网络

设计师在整个地图上放很多关键点然后在插值一些点,形成一个网络,线路点网络的使用与地铁系统相似。找到最近的点,以获得和离开网络,在路径点网络上规划路径。

Pros: 优点:
. Easy to implement 。易于实现
. Fast path finding, even for large mapsCons: 。快速路径查找,即使对于大型地图--

Cons:缺点
. Limited flexibility: must go to the nearest point inthe network before navigation 。有限的灵活性:导航前必须到达网络中的最近点。
. Waypoint selection requires manual intervention 。路径点选择需要手动干预。

在现代游戏中运用的不多

Grid 格网

把地图用格子个覆盖上,类似光栅化

Pros: 优点:
.Easy to implement易于实施

. Uniform data structure统一的数据结构

. Dynamic .动态


Cons: 缺点:

Accuracy depends on grid resolution -精度取决于网格分辨率
Dense grid lowers pathfinding performance密集网格降低寻路性能

High memory consumption 高内存消耗
Hard to handle 3D map 难以处理三维地图
 

Navigation Mesh.寻路网络

把整个地图上所有可通行的区域用一个凸的多边形或者其他的覆盖起来,这是一个面覆盖,使人物能够更加灵活。

为什么是凸多边形?
生成一系列需要遍历的多边形(多边形走廊)。凸性保证最终路径被限制在
多边形和两个相邻的多边形只有一个公共边缘(Portal)。
Pros: 优点:
. Support 3D walkable surface. Accurate 。支持三维可行走曲面。准确
.Fast in pathfinding .快速寻路
.Flexible for selection of start/destination-Dynamic 灵活选择开始/目标-动态
Cons: 缺点:
.Complex generation algorithm复杂生成算法

Not support 3D space不支持三维空间
 

Sparse Voxel Octree Voxel八叉树

从一个节点展开成八个子检点,整个空间从最大空间细分到最小空间的过程。

八叉树建立的地图由很多小方块组成,分辨率较高的时候,方块很小;分辨率较低的时后,方块很大每个方块都由0-1之间的浮点数表示被占据的概率。0.5表示未确定,越大表示被占据的可能性越高。

Path Finding 路径查找
 

寻路问题就是要找一条能够到达终点的路,以及尽量少走弯路。

寻路算法:深度优先(时间换空间)和广度优先(空间换时间)

因为无论深度优先还是广度优先都是很消耗资源的所以提出了下面这个寻路算法。

迪杰斯特拉(Dijkstra)算法

迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个结点到其他结点的最短路径。这个算法的基本思想是从起始节点开始,逐步扩展到所有可达的节点,直到到达目标节点。在每一步,算法都会选择当前最短的路径,并更新所有邻接节点的最短路径。这个过程会一直重复,直到所有的节点都被访问过,或者找到了到目标节点的最短路径。(以广度优先为基础,但是每步选择最短距离)这个算法走到终点并不结束。

A* 算法

是一种高效的启发式搜索算法,在二维的栅格地图上寻路效果好,它通过估算节点的代价评估函数值并作为节点的综合优先级,当选择下一个需要遍历的节点时,再选取综合优先级最高的节点,逐步地找到最优路径。A* 算法可以快速的找到代价值最小,路程最短的路径,但是随着栅格精度的提高和地图尺寸的扩大,对无用节点的重复搜索评估会导致 A* 算法搜索时间呈指数级增长。(以迪杰斯特拉(Dijkstra)算法为基础)

代价计算公式:F(n)=G(n)+H(n)
详细介绍:https://blog.csdn.net/Phoenix_ZengHao/article/details/121367371

在每次运动时算上自己现在所走的最短以及要猜想后面要走的最短,且走到终点就结束。

A*算法对未来的路径保守迭代速度快但是找到最短路径的概率较低

Path Smoothing 路径平滑
 

 路径平滑-Funnel Algorithm1/2)。

Funnel Algorithm的范围是路径的可能范围。如有必要,缩小漏斗以安装入口。

https://blog.csdn.net/fengkeyleaf/article/details/118832924

Steering 

From Path to Motion 从路径到运动
汽车不能完全按照计划的路线行驶。
汽车的运动受其运动能力的限制:
直线加速度(节气门/制动器)
角加速度(转向力)
运动需要根据限制进行调整。

steering分为3种:第一种就是追,第二种是加速度运动 第三种是保证朝向正确(角加速度)。

Crowd Simulation 人群模拟
 

在同一环境中单独或在一个群体中共享信息。
成群
形成运动
 

人群模拟模型从雷诺兹的“Boids”系统开始。三种模式:
微观模型
“Bottom-Up” “自下而上”
关注个人

-宏观模型
Crowd作为一个统一和连续的实体
介观模型
把人群分成几组


微观模型

宏观模型

从宏观的角度模拟人群的运动。将人群视为一个统一和持续的实体。用势场或流体动力学控制运动。不考虑个体之间的相互作用以及个人层面的环境
 

介观模型

 模拟人群的运动,兼顾两个细节和整个过程
.把人群分成几组
处理组间的相互作用每个群体中的个人
 微观模型和形成规律或心理模型
 

Collision Avoidance-Force-based ModelsPros避碰.基于力的模型
影响人群行为的社会、心理和身体力量的混合物。个体的实际运动取决于所期望的速度及其与环境的相互作用。能够模拟逃离人群恐慌的动态特征(其实就是近了有排斥力,距离远了有吸引力)

优点:
可以扩展来模拟更多的人类乌鸦的紧急行为:

缺点
类似于物理模拟,模拟步骤应该足够小。
 

Collision Avoidance - Velocity-based models基于速度模型的碰撞避碰

利用近邻信息在速度空间中进行决策

可以在局部空间模拟。
适用于避免碰撞


倒速度障碍法.当前标准碰撞避免算法
速度障碍(VO)
反速度障碍(RVO)
最佳互惠避碰(ORCA)


速度障碍(VO)利用速度来检测是否会发生碰撞,若发生则产生避让。

反速度障碍(RVO)整体优化,来实现整体避让。

Sensing 
 

只有通过感知才能实现自己的行为,这是AI系统中较为重要的一部分

Sensing Simulation 传感仿真。

光、声音和气味在太空中传播。有最大旅行距离
在空间和时间上以不同的模式衰减
视线被障碍物挡住了
嗅觉范围随着时间的推移而缩小。辐射场可以模拟传感信号。
可以简化为影响图
该领域所涵盖的代理可以感知到信息。

Classic Decision MakingAlgorithms 经典决策生成算法
 

Decision Making Algorithms

.Finite State Machine 有限状态机
.Behavior Tree行为树

.Hierarchical Tasks Network..分层任务网络

.Goal Oriented Action Planning.面向目标的行动规划

.Monte Carlo Tree Search.蒙特卡洛树搜索

.Deep Learning 深度学习
 

Finite State Machine 状态机

(比较老的方法)  根据某些条件,从一个状态到另一个状态的变化称为过渡

Pros 
易于实现。易懂
处理简单案件的速度非常快
Cons 
可维护性较差,尤其是添加或删除状态。可重用性较差,不能用于其他项目或 人物
可伸缩性很差,很难对复杂的情况进行修改。
解决办法使用层次状态机,增加了状态机的可读性,但是反应速度可能会慢。

Behavior Tree行为树

把一个一个状态分为树状来分析,更加符合人的行为。

行为树分为状态节点与动作节点,动作节点有成功,失败,正在执行3个状态

行为树的几种控制节点

sequence

按顺序执行动作,如果其中有一个不符合就pass掉整个节点。

selector

执行一个或者几个动作,有一个不符合去看其他的

Parallel 
可以“同时”做多件事

Decorator 

一种特殊的单节点控制节点,通常是一些常用的行为模式。比如等待一段时间在执行

黑板:行为树的记忆
来标记不同节点动作的状态。

AI高级

Hierarchical Tasks Network 分层任务网络
 

核心思想就是把角色当做一个人类一样去做一件事情

世界状况:
包含一组属性
向规划师输入,反映世界状况
这是Al BrainSensors的主题世界观


感知:

环境的变化修改世界状态
更像是知觉
 

HTN域:
从资产中装载
 描述层次任务之间的关系
Planner 规划师:
制定“世界之州”的计划 HTN域
Plan Runner 计划运行者:
执行计划
在任务完成后更新世界状态
 

两类任务·

基本任务·
复合任务
 

基本任务

先决条件:
决定是否可以执行一项行动                                            
检查游戏世界的属性是否满足

行动:
确定基本任务执行的操作。

效应:
描述原始任务如何修改游戏世界状态性质
 

复合任务

包含几种方法,方法有不同的优先级,每个方法都有前提条件。方法中包含子Taskssubb任务链,可以是原语任务或复合任务。(按优先级执行)

Root Task 是最根本的行为,人物的行为都是根据root task来进行展开的。

 htn在执行行为时,会通过一个表来记录世界状态。

运行计划
· Execute tasks in order ·按顺序执行任务
. Stop until all tasks succeed, or one task failed 。停止直到所有任务都成功,或者一个任务失败。

Execute task 执行任务
. Check precondition and return failure if not satisfied. 。如果不满足,检查先决条件和返回失败。Execute action执行
. if succeed -> update world state and return success.if failed -> return failure 。如果成功->更新世界状态并返回成功。如果失败->返回失败

Pros: 优点:
HTN与BT相似,且具有较高的水平.它输出一个具有长期效果的计划。在同样的情况下,它将比BT更快
Cons: 缺点:
玩家的行为是不可预测的,所以任务很容易失败。世界现状和任务的影响对设计师来说是具有挑战性的
 

Goal-Oriented Action Planning 面向目标的行动规划
 

很类似HTN,但是他有一个目标集。

前提条件决定目标的实现
优先决定目标应在所有可能的目标中加以选择。
每个目标都可以作为一个状态集合来表示。
Goal  Set 很类似HTN的Root Task,但是他是用所期望的目标状态来进行表达。

cost其实就是这个行为对最后目标好坏的评价。

Goal是倒叙的思想,从目标来倒推行为。

在Goal列表中选择一个goal,然后把这个goal中的状态与世界状态进行比较,如果不满足世界状态就把不满足的状态放入一个表中,然后寻找可以满足这个表中状态的action,但是如果这个action需要Precondition不被满足,那么这个不被满足的Precondition的状态也会被添加到这个表中。

2种行为推算算法

(迪杰斯特拉(Dijkstra)算法,但是这个开头就是目标来反向推理整个过程)

A*算法,通过预测来完成整个目标,这个算法更加符合npc的不定向性。


Pros: 优点:
与HTN相比,GOAP计划更具动态性。解耦目标与行为
HTN很容易产生前置/效果错误。
Cons: 缺点:
在单个Al系统中,运行时规划将比BT/FSM/HTN慢。
也需要一个很好的世界状态和行动效果。
 

Monte Carlo Tree Search 蒙特卡罗树搜索
 

全称 Monte Carlo Tree Search,是一种人工智能问题中做出最优决策的方法,一般是在组合博弈中的行动(move)规划形式。它结合了随机模拟的一般性和树搜索的准确性。

MCTS 受到快速关注主要是由计算机围棋程序的成功以及其潜在的在众多难题上的应用所致。超越博弈游戏本身,MCTS 理论上可以被用在以 {状态 state,行动 action} 对定义和用模拟进行预测输出结果的任何领域。

 模拟
根据默认策略从状态节点运行以生成结果
 在围棋的情况下
从状态中随机移动,直到游戏过关
根据结果返回1(赢)或0(输)
 默认策略
有意义但快速的规则或神经网络游戏发挥作用

更新状态

 评价因素
Q:仿真结果的积累·N:模拟次数

可扩展节点
非终端状态和有未被访问的子女-
 

2种选择策略

Exploitation 开发
看看那些看上去很有希望的领域。选择Q/N值较高的子级
 

exploration 探索
看看那些还没有被很好的取样的地区。选择访问次数较少的孩子


UCB是用于估算字节点采样不够的样本父节点采样叫多的情况

选择

始终从根节点搜索。 查找当前节点的最高ucb值子节点(承诺子节点),将有前途的子节点设置为当前节点。迭代以上步骤,直到当前节点可展开为止。将当前节点设置为选定节点
 

如何选择最佳动作?
 当前状态节点的“最佳”子节点
.Max子项目:选择具有最高Q值·鲁棒子级的根子:选择访问最多的根子
.max-健壮的子级:选择访问最多根子节点
Max-Robust child 最大健壮的孩子:最高的拜访次数和最高的报酬。如果不存在,则继续搜索,直到达到可接受的访问次数为止。
Secure child: 安全儿童:
选择最大限度降低信任范围(LCB)的子节点。


Pros: 优点:
代理的行为多种多样,完全是自己作出决定的。可以解决搜索空间大的问题
Cons: 缺点:
大多数实时游戏的动作和状态很难设计。大多数实时游戏很难建模。
 

Machine Learning Basic 机器学习基础
 

4种机器学习:监督学习,无监督学习,半监督学习,强化学习。
 

 强化学习(RL)是机器学习的一个领域,它关注的是智能体应该如何在环境中采取行动,以最大限度地提高累积量的概念。
试错搜索
学习者必须发现哪些行动
试一试就能得到最大的回报。延迟报酬
行动可能会影响即时奖励,
下一种情况和随后的所有奖励

Markov Decision Process - Basic Elements 马尔可夫决策过程-基本要素

马尔可夫决策过程的数学表达式

Build Advanced Game Al 建立高级游戏Al
 

(后续在补充,太难了)

为什么游戏AI需要机器学习?

值得注意的是,以前的所有方法实际上都需要人类的知识来设计(包括GOAP的大部分)。
 但是玩家们总是希望艾尔既能应付复杂的游戏世界,又能表现得五花八门。

传统的方法在有限的空间内。

机器学习创造无限的可能性
 

怎么在游戏中构建一个以机器学习为基础的框架?

能够把游戏中的状态定量化地表达出来。

 DRL示例-游戏建模

DRL example -Multi-Layer Perceptron DRL示例-多层感知器
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值