Games104现代游戏引擎笔记 基础ai

news2024/11/24 5:27:30

游戏AI

navigation(导航系统)
在这里插入图片描述
地图的表达形式, 寻路,路径优化

Map representation:
1.可行走区域(物理碰撞,跳跃距离,攀爬高度)
2.表达形式:waypoint networks(路点网络图),grid(网格),navigation mesh(寻路网格),sparse voxel octree(八叉树)

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

Waypoint Networks:
设置关键点,在关键点之间通过算法插值一些过路点,过路点插值往两边扩散(因为可行走区域并非一条线)。
任务一条路径,从起点开始,寻找路网中最近的点,在走到离终点最近的点(类似地铁)
寻路只能发生在路点和路点之间,在计算机中表示为一张连通图。点的密度可以代表寻路精度
优点:
1.易实现
2.内存和计算机开销低(路点寻路只是使用到了真是可行走区域的一小部分,与格子相比,牺牲了路线的灵活性,换取交第的内存和计算机开销,只要两个点之间是连通的,那么角色就可以按照点所在的位置到达目标点的位置)
缺点:
1.需要手动插值,不灵活
2.并且表现上npc路径相比于较宽的可行走区域往往是走中间

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Grid
优点:
1.易实现
2.容易动态修改
缺点:
1.内存和计算机开销大
2.不适用3d地图。例如桥上桥下都能行走
3.需要额外的平滑处理,角色行走路线可能出现多个90度的拐角

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Navigation Mesh
划分必须要凸多边形,不能凹多边形。否则穿过polygon时,可能走到该polyhon之外的区域。并且形成多边形走廊时,穿过的每个凸多边形之间有且只有一条公共边portal

优点:
1.支持3d可行走区域
2.灵活性高
3.可动态修改
4.内存和计算机开销小,一个polygon可能就能全表达一大片可行走区域
5.寻路效率高
缺点:
1.生成非常复杂
2.不支持3d空间(例如空战游戏)

在这里插入图片描述

Sparse Voxel Octree
对空间进行八叉树划分,把所有可通行区域用八叉树结构表示。如果区域是整个联通的,用一个很大的Voxel表达,如果是一个边界,则不断地细分

在这里插入图片描述
在这里插入图片描述
所有的地图表达形式,连接关系都是形成一个图。最终在图上寻找路径

dfs:时间换空间
bfs:空间换时间
dfs和bfs没有办法计算加权最短路径。并且很多时候会找出许多没必要的路径

在这里插入图片描述
迪杰斯特拉算法找的一定是最短路径
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

a星算法相对迪杰斯特拉算法增加了启发函数。当走到一个点时,不仅考虑过去花费的路径成本,还会猜想从当前位置到目标点所需距离。
在选择explored点时,优先选择现在已走过的距离加上预计要走的距离中最近的点,来优先搜索。
并且只要达到目标点,不需要将目标点explored,就停止搜索。

在这里插入图片描述
在这里插入图片描述

Steering
在这里插入图片描述
在这里插入图片描述
根据目标位置确定加速度
在这里插入图片描述
在这里插入图片描述
通过积分反向推导加速度

在这里插入图片描述计算角速度的加速度

Crowd Simulation
在这里插入图片描述
Microscopic Models 微观模型
定义每一个的行为,然后合在一起就行了
Macroscopic Models 宏观模型
宏观定义大的运动趋势,每个个体按照这个运动即可
Mesoscopic Models 中观模型
上面两种的混合,可以定义更加复杂的情况

在这里插入图片描述
Separation
如果一条鱼离我太近了,我就分开
Cohesion
如果鱼群离我太远了,我就接近
Alignment
和鱼群方向保持一致
微观的结果是不可控的,且不受人影响
在这里插入图片描述
定义行走的轨迹,然后生成zone graph
主要表达有规则的行为,比如人类人群行为

在这里插入图片描述
把群体分成一个个小族群,小族群受到一个大的指向控制,每个小个体自己的行为仍走微观模型的方向。例如rts寻路
在这里插入图片描述
在这里插入图片描述
避免碰撞:
两个物体太近时,产生斥力,太远时,产生吸力
对所有的障碍物加距离场,当物体里离障碍物越来越近时,距离场的值越来越小,产生的反向斥力越来越大,然后给个大致的方向。群体便会模拟真实的行为
在这里插入图片描述
速度障碍法生成碰撞检测
在这里插入图片描述
VO:两个物体运动时,一个物体会在另一个物体的速度域上产生一个障碍,如果我在当前速度上会和障碍形成碰撞,则调整速度
在这里插入图片描述

RVO:双方都让
ORCA:整体判断

Sensing
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Navigation Data寻路数据
Tactical Map战术地图,也就是战术价值很高的点
Smart Object 指的是AI可以交互的物体, 如可以破坏的墙,梯子等
Cover Point掩护点
在这里插入图片描述
Influence Map 热力图 对于战场态势的感知
Sight Area 指的是AI的可见区域
在这里插入图片描述
在这里插入图片描述
引擎端通常开放:
1.sensing精度的选择
2.sensing结果的共享

在这里插入图片描述
FSM (有限状态机)和 BT(行为树) 都是Forward 算法,走一步算一步。
Backward的算法:以目标为驱动的反向算法
Hierarchical Tasks Network HTN 任务层次网络
Goal Oriented Action Planning 基于目标驱动行为规划
Monte Carlo Tress Search 蒙特卡洛搜索树
Deep Learning 深度学
在这里插入图片描述
在这里插入图片描述
当state非常多时,每个state间的设定会非常复杂
在这里插入图片描述
层级有限状态机
一种缓冲之举,增加了可读性的同时方便管理。但是子state不好添加额外条件或者飞线,所以反应速度比较慢

在这里插入图片描述
状态机是对AI逻辑的抽象。整个世界AI的逻辑就是在状态里来回切换

在这里插入图片描述
分为条件判断节点和动作执行节点
动作节点会返回成功,失败和运行中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Sequence:顺序执行。当走到该条件时,要依次把子树全部执行一遍。如果有任何一个子树返回running时,sequence节点被访问时也是返回running
在这里插入图片描述
在这里插入图片描述

Selector:根据条件去尝试所有的子节点,优先执行在前面的子节点。前面的子节点成功了,Selector节点也执行成功。
在这里插入图片描述
在这里插入图片描述

Paraller:并行执行
在这里插入图片描述
在这里插入图片描述
每次需要从根节点开始Tick,是BT效率低的地方,同时Running的节点会不止一个。
并且Running的节点需要有被打断的能力。
BT每次Tick的成本很高,所以有些引擎通过添加Event来激活部分或者整个Tree达到效率优化的效果,缺点是设计师必须要非常清楚自己在做什么,否则非常容易出Bug
在这里插入图片描述
在这里插入图片描述

Decorator,优化行为树
在这里插入图片描述
Precondition 装饰器,对BT优化
在这里插入图片描述
Blackboard:用于不同分支交换信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1069289.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云Alibaba Cloud Linux操作系统详细介绍_镜像常见问题解答

阿里云服务器操作系统Alibaba Cloud Linux镜像怎么样?可以代替CentOS吗?Alibaba Cloud Linux兼容性如何?有人维护吗?漏洞可以修复吗?Alibaba Cloud Linux完全兼容CentOS,并由阿里云官方免费提供长期维护。 …

JAVA-SpringBoot入门Demo用IDEA建立helloworld

使用编辑器IDEA做SpringBoot项目最近几年比较红红,作为JAVA语言翻身的技术,用户量激增。由于java平台原来的占有率,相比net core在某些方面更有优势。 我把本次我下载完成后Maven项目的过程记录下来了,仅供参考! 安装J…

初识Java 13-1 异常

目录 概念 基本的异常 捕获异常 try块 异常处理程序(catch) 创建自己的异常 异常说明(及检查型异常) 捕获任何异常 多重捕捉 栈轨迹 重新抛出异常 异常链 本笔记参考自: 《On Java 中文版》 Java的基本哲学…

【Kotlin精简】第1章 基础类型

1 Kotlin基础类型 Kotlin中,我们可以调用任何变量的成员函数和属性,从这个角度来说,一切皆对象。某些类型可以有特殊的内部表现。例如:数字、字符和布尔型在运行时可以表现为基础类型(primitivetypes)。 …

九章云极DataCanvas公司完成D1轮融资!

近日,九章云极DataCanvas公司完成总融资额3亿元D1轮融资。中国电子集团旗下中电智慧基金、华民投、中国太平旗下太平创新、浙江东方旗下东方嘉富等央国企旗下投资机构,以及卓源资本等专注人工智能赛道的知名财务投资机构参与本轮融资。 九章云极DataCan…

dataframe保存excel格式比csv格式小很多很多

问题描述: 一个3万行的数据保存成csv大概10个G,但保存成excel格式只有100多M 原因分析: 因为xlsx 实际上就是 zip 压缩包,同时,如果有大量重复的数据,XLSX 会提取文本值,将其存储在查找表中&…

APP 备案公钥、签名 MD5获取方法。

一、IOS 系统获取 Bundle ID、平台公钥、签名 MD5 值的指引 获取 Bundle ID:使用 APP 对应的 IOS 开发者账号登录 Developer 控制台,找到下图标识符(英文),单击进入 Certificates,Identifiers&Profiles 页面。 在…

【QT5-程序控制电源-[GPIB-USB-HS]-SCPI协议-上位机-基础样例【2】】

【QT5-程序控制电源-[GPIB-USB-HS]-SCPI协议-上位机-基础样例【2】】 1、前言2、实验环境3、自我总结1、基础了解仪器控制-熟悉仪器2、连接SCPI协议3、了解GPIB-USB-HS4、软件调试-代码编写 4、熟悉协议-SCPI协议5、实验过程-熟悉软件(1)去官网NI&#x…

电视盒子哪个牌子最好?经销商分享热门电视盒子排名

作为数码产品经销商,我对电视盒子这块非常了解,最近看到很多人因为不懂电视盒子哪个牌子最好而踩雷,我根据店内的销量情况整理了电视盒子排名,近期想买电视盒子不想花冤枉钱可以从下面五款电视盒子中入手。 TOP 1泰捷WEBOX 40S电视…

STM32CubeIDE修改文件编码格式(解决代码注释出现乱码问题)

文章目录 问题描述解决方法STM32CubeIDE介绍 问题描述 在使用STM32CubeIDE时,从外部导进来的几个文件后,发现注释都是乱码的,如下图所示: 所以为了方便的查看注释,必需将乱码显示正常的中文显示;记录一下修…

Mysql--内置函数

字符串函数 1、拼接字符串 concat(str1,str2...) select concat(12,34,abccc) select CONCAT(name,的家乡是,hometown) from students 2、包含字符个数 length(abc) 注:一个中文占3个字符,一个字母或数字占1个字符 3、截取字符串 left(str,len)返回字…

vue3使用element plus的时候组件显示的是英文

问题截图 这是因为国际化导致的 解决代码 import zhCn from "element-plus/es/locale/lang/zh-cn"; 或者 import zhCn from "element-plus/lib/locale/lang/zh-cn";const localezhCn<el-config-provider :locale"locale"><el-date-pic…

一文彻底搞懂性能测试

目录 性能测试概念 性能测试需要有指标 性能测试需要有模型 性能测试要有方案 性能测试中要有监控 性能测试要有预定的条件 性能测试中要有场景 性能测试中要有分析调优 性能测试肯定要有结果报告 性能场景TPS和响应时间 理解TPS、QPS、RT、吞吐量这些性能指标 对这…

使用雷电模拟器安装安卓APK

下载安装器 雷电安卓模拟器-手游模拟器安卓版_android手机模拟器电脑版_雷电模拟器官网 运行安装安装APK

QML(21)——Layout中的width, height设置技巧

目录 效果展示保持组件界面原始大小组件size固定&#xff0c;spacing自适应组件size自适应&#xff0c;spacing固定 使用技巧总结优先级需要固定size的自定义组件(button)需要自适应size的组件 界面结构主界面 main.qml功能界面 LayoutSpacing.qml自定义组件 BasicComponent .q…

企业服务器租用对性能有什么要求呢?

企业租用服务器租用首要的是稳定&#xff0c;其次是安全&#xff0c;稳定是为了让企业的工作能够顺利进行&#xff0c;只有性能稳定的服务器才能保证网站之类的正常工作&#xff0c;就让小编带大家看一看有什么要求吧&#xff01; 服务器简单介绍。服务器是在网络上为其它客户机…

紧贴墙面运动的文字

效果展示 CSS 知识点 clip-path 属性的运用视觉错觉运用 实现页面基础结构 <section><!-- 右侧文字 部分 --><div class"skew1"><h2 class"layer">Corner Text</h2></div><!-- 左侧文字 部分 --><div cla…

Transformer预测 | Pytorch实现基于mmTransformer多模态运动预测(堆叠Transformer)

文章目录 文章概述程序设计参考资料文章概述 Transformer预测 | Pytorch实现基于mmTransformer多模态运动预测(堆叠Transformer) 程序设计 Initialize virtual environment: conda create -n mmTrans python=3.7# -*- coding: utf-8 -*- import argparse import os

PCA和SVD数据降维

PCA&#xff08;Principal Component Analysis&#xff09; 是一种常见的数据分析方式&#xff0c;常用于高维数据的降维&#xff0c;可用于提取数据的主要特征分量。 最大可分性 基向量乘原始矩阵会将矩阵映射到这个基向量空间中&#xff0c;如果基的数量少于向量本身的维数…

2023年【金属非金属矿山(地下矿山)安全管理人员】考试题库及金属非金属矿山(地下矿山)安全管理人员模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员考试题库为正在备考金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员操作证的学员准备的理论考试专题&#xff0c;每个月更新的金属非…