文章目录

  • 介绍
  • 流程
  • 复合节点
  • 任务
  • 装饰器
  • 服务
  • VisualLogger
    • [VisualLogger 说明](http://docs.manew.com/ue4/1218.html)
    • HTN VisualLogger 使用指南

源码部分

介绍

HTN的优势就是可以对未来进行规划(全局最优、全局代价最小),所以可以轻松做到多个盒子和球,分别到达一次盒子和一次球,总时间最短这种事情



内部有一个Loop-Submit,相当于一个任务在规划时创建多个分支,会对每种分支进行代价计算

流程

  • 计划制定:根据Task(可多次提交、通过worldstate剪枝)、复合节点(If等)、装饰器(通过worldstate剪枝)创建出很多个可选计划
  • 计划选择:从中选择一个代价最小的计划进行执行
  • 计划执行:一步一步执行计划,直到执行完毕或者计划不合法(任务失败、装饰器检测)为止,重新制定计划

复合节点

接口:单个接口可以连接多个节点,会选择Cost小的那个执行

Any Order:创建AB和BA两种情况分支,进行代价评估

If:如果装饰器成功则运行top-branch,否则bottom-branch

Parallel:平行,执行top-branch和时候同时执行bottom-branch,代价相加(先计算bottom-branch)。top-branch执行结束会打断bottom-branch,反之则不会

Scope:包装。由于HTN内任务节点不一定是根,所以假设需要在之后的节点内持续激活装饰器和服务,就需要这个包装。可以看成没有任何功能的复合节点

Sequence:先A后B

SubNetwork:子HTN

SubNetworkDynamic:动态子HTN,设置一个默认的HTN,以及一个GameplayTag用于在运行时修改该节点所对应的子HTN

任务

CreatePlanSteps内使用SubmitPlanStep(this, NewWorldState, Cost)提交分支(计划中的一步),并以NewWorldState对之后的计划造成影响。在实际运行成功结束时,此影响也会施加到黑板键上。

例如EQS、SetValue、SetRandomPoint等设置黑板键的任务,其修改的目标值并不是开始任务时定下的,而是制定计划的时候就已经定下

装饰器

下图中有4种检测场合,分别是:

  • Plan Enter:当前节点开始制定计划(CreatePlanSteps)时是否需要检测(不包括开始执行)
  • Plan Exit:当前节点结束制定计划(CreatePlanSteps)时是否需要检测(不包括结束执行)
  • Plan Recheck:处于还未被执行的计划内时,Tick检测
  • Tick:处于激活状态时,Tick检测(单任务)

    任务节点过去了就不激活了,但是复合节点还会继续激活,继续Tick,这就是Scope存在的原因

服务

和装饰器一样,在激活时进行Tick操作

由于服务是持续性作用,让服务影响worldstate或者检测判断比较麻烦,所以服务设计为不影响worldstate和制定计划,只在激活后运行,接触的也是blackboard而不是worldstate


VisualLogger

VisualLogger 说明

相关代码在Engine\Source\Runtime\Engine\Public\VisualLogger\VisualLogger.h内

打开方式:Tools - Debug - VisualLogger

使用UE_VLOG将日志输出到VisualLogger(每个Tick收集一次打印)

UE_VLOG(GetOwner(), LogHTN, VeryVerbose, TEXT("ticking %s."), *ExecutingTask.GetNodeName());

参数:

  • 对象:影响Classes

  • 日志分类:影响Graph Filters和LogsList的头部

  • 日志级别:影响LogsList内的内容

    Error
    Warning
    Log
    Verbose
    VeryVerbose
    
  • 显示内容:影响LogsList内的内容


UE_VLOG_ARROW等其它绘制办法同理,点击VisualLogger内的某一帧时,会将这一帧的内容在当前世界中画出来

操作:
在制定类别上右键,可以调整显示日志等级(选择等级上方的日志(包括画线)才能显示),下方可以快速关闭所有其它的和开启所有。

HTN VisualLogger 使用指南

点击VisualLogger内的某一帧,可以在World内看到位置,移动目的地等信息

怎么找到制定计划的帧

  • 关闭除HTN外的VisualLogger(HTN上右键 - Disable all but this)

  • 然后将日志级别调成Log即可

下方可以看实时黑板、Plan、Step的记录

制定计划时,选出的计划前面会有箭头标记

UE4 HTN插件使用说明相关推荐

  1. UE4 HTN插件源码解析

    文章目录 节点部分 UHTNNode UHTNStandaloneNode:UHTNNode UHTNTask:UHTNStandaloneNode UHTNService:UHTNNode UHTN ...

  2. UE4制作插件的插件神器pluginCreator

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/45644007 作者:car ...

  3. DTVideo UE录屏插件使用说明

    本插件可以在蓝图中简单调用即可时时录制游戏画面并保存为MP4文件. 插件只有2个蓝图函数开放使用,这两个函数已经可以满足使用需求. This plug-in can be simply called ...

  4. 翻译Houdini官方对UE4新版插件的介绍:Houdini Engine for Unreal - V2

    原视频:Houdini For Unreal - YouTube 目录 介绍 0. 总览 1. 简介HoudiniEngine 2. UE4的HoudiniEngine - 第二版 为什么要做&quo ...

  5. uniapp 图片上传插件使用说明

    插件地址:https://ext.dcloud.net.cn/plugin?id=4589 使用说明 本插件是一个云端上传插件,能够将本地的文件包括图片上传到云存储,ImageX是火山引擎推出的专业图 ...

  6. UE4 WebUI插件分享

    UE4 WebUI插件分享 方便那些无法访问外网的朋友 插件包含了4个版本(4.24~4.27),每个版本里面包含了四4个压缩包 每个压缩包里面都包含了自身的安装方法 链接:https://pan.b ...

  7. UE4全景插件Nvidia Ansel Photography

    Nvidia 的 Ansel 工具使 PC 玩家能更便捷地从游戏中采集高精度图像并进行分享.将 Ansel ue4 插件整合到游戏中的方法简单而快捷. 可在 Nvidia Ansel 站点 查看 An ...

  8. 【UE4】插件与模块

    文章目录 一.什么是插件与模块 二.创建插件 三.插件目录介绍 四.配置文件 1.插件 2.模块 3.项目 五.创建模块 1. 插件中创建模块 2. 项目中创建模块 六.模块加载与卸载 七.插件封装 ...

  9. UE4 天气系统插件使用

    将场景关于灯光天气的先全部删除 将它放入场景 在这里设置天气 想影响到材质的话:例如影响草地材质 拖入进去即可 不想去改引擎插件的话,最简单的动态修改方法就是放多个WeatherSystem然后显隐 ...

最新文章

  1. 大数据系列6:HBase – 基于Hadoop的分布式数据库
  2. 编码中统一更该变量的快捷键_流媒体的7种方式使您成为更好的编码器
  3. 【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )
  4. 作为JavaScript开发人员,这些必备的VS Code插件你都用过吗?
  5. python和sqlserver_利用python实现mysql数据库向sqlserver的同步
  6. Python Data Science的多版本多环境管理工具Anaconda
  7. Microsoft宣布.NET Core支持计划
  8. Java的注解机制——Spring自动装配的实现原理
  9. 正则表达式pcre在Android下的移植
  10. opencv 边缘平滑_基于OpenCV的车道检测实现(一)
  11. mysql-5.6.31.tar.gz_MySQL5.6.31源码安装
  12. MPLAB ICD3
  13. 关于ScreenToClient
  14. 东芝2510ac请求维修cd40_TOSHIBA东芝2510复印机维修资料
  15. 微信大数据挑战赛决赛方案:微信视频号推荐算法
  16. Android开发人员不得不收集的代码(不断更新)
  17. 微信公众号创建菜单报错40016
  18. 技术的共通性—从姿态估计到自动驾驶
  19. 编写优质嵌入式C程序(转)
  20. 苹果Mac如何查看多张图片?

热门文章

  1. NOJ 1972 炒股票的女巫璐璐 NOJ 1974 BRN (浅谈两点法)
  2. java中String xx xx_JAVA超级基础之String型字符串
  3. 电商数仓DWD层用户行为日志解析
  4. 修复kali Linux安装AMD ati显卡驱动后开机黑屏
  5. 东芝虚报销售收入再涉财务造假 遭投诉索赔约166亿日元
  6. 2021-2027全球与中国金属化陶瓷基板市场现状及未来发展趋势
  7. FL Studio 编辑软件入门讲解
  8. 基于I2C硬件协议的AHT20温湿度传感器的数据采集
  9. 做食品蔬菜零售有什么好用方便的管理软件?
  10. linux下键盘输入有粘滞感,linux怎么取消粘滞键