问题标签 [behavior-tree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Unity - C# - NullReferenceException:对象引用未设置为对象的实例
编辑
我的问题不同(我认为..),因为最后一张图片允许我将 GameObject 设置为通信消息和通信消息。但是,在播放时,它会立即重置为无(文本)和无(按钮)。我不知道为什么会发生这种情况或如何解决这个问题!
我知道这个问题被广泛讨论,但我仍然无法解决这个问题。我希望有人可以为我提供解决方案。
我有的
我正在与Unity 的资产Behavior Designer合作。我正在制作行为树,并且在使用行为树引用时出现了问题。
首先,我的行为树是这样的:
它搜索前门。如果找到它,它会朝它移动并与玩游戏的人交流。
这以前有效,但现在我将此行为树放在行为树参考中,如下所示:
当我双击引用时,会显示第一张图片。但是,哪里出错了,是这样的:
问题
这是第一张图片中的人工指令节点。它不加载通信消息和通信按钮。当我加载相应的按钮时,它会在播放场景时立即重置。当我在 Behavior Tree Reference 中加载此行为时发生了这种情况,而当我从原始树自身播放此行为时,问题并未发生。
任何想法可能导致此问题以及如何解决此问题?
来自 HumanInstructions 的代码
neural-network - 编写智能游戏机器人
我正在参加一个编程竞赛,目标是编写一个可以玩特定游戏的机器人。游戏的目标是获得一定数量的积分。您控制多艘飞艇,您可以四处移动,捕获岛屿并导航携带宝藏的无人机。您与一个对手比赛,回合同时发生,并且有时间限制。您可以在一回合内移动多艘船和无人机。您可以使用 Python、Java 或 C# 对您的机器人进行编程。确切的细节无关紧要,只是每艘船每轮大约有 15 个选项(移动和射击),总体而言,每轮大约有 10000 个不同的选项(飞艇运动和射击的不同配置) 直到现在我参加了这个比赛天真,并且没有做任何特别聪明的事情(例如,如果靠近敌人,射击)。我已经阅读了极小极大算法,我真的很想在这里应用它(或类似的东西),你可以假设我可以判断一个状态的值。我的问题是每一回合都有大量的选择——这会产生一个巨大的分支因素,让我无法深入。
问题 1:有没有更好、更适用的方法来解决这个问题?也许是深度学习或类似的东西?问题2:有没有办法最小化分支因子?我已经阅读了有关 alpha-beta 和类似算法的信息,但似乎没有任何作用。
任何帮助将非常感激
design-patterns - 对人工智能感到困惑
我真的对人工智能很感兴趣,但我很困惑;我读了这篇文章:
它将复杂的 AI 算法分解为简单的 FSM,但不是应该学习的 AI,在本文中,从状态到状态的转换是简单的条件,我看不到这个 IA 应该学习的地方,这种转换是硬编码的,为什么作者称它为AI?
与行为树相同,它基本上是相同的概念但不同的、独立的状态集合,例如这篇文章:
http://blog.renatopp.com/2014/09/24/implementing-a-behavior-tree-part-1/
我认为唯一能学习的是神经网络,或者不是?
神经网络是人工智能,人工智能是神经网络,还是不一样?
我认为 AI 是一个“类别”,而神经网络是一个更具体的 AI
lua - 我可以使用 Lua 的 require 来设置调用文件的环境吗?
有没有办法调用require
Lua 文件,并让模块设置调用它的文件的环境?例如,如果我有一个定义函数Root
并Sequence
在表中定义的 DSL(域特定语言),我是否可以setfenv(1, dslEnv)
在模块中有类似的东西允许我像全局变量一样访问这些函数?
我想到的目标是使用行为树 DSL,使我的定义文件看起来像这样(或尽可能接近):
不必明确地将Root
,Sequence
和 和Leaf
明确地纳入范围,也不必对 . 之类的名称进行限定behaviortrees.Sequence
。
简而言之,我试图使定义文件尽可能干净,没有任何多余的行使树定义混乱。
go - 从golang中父母的实现方法调用孩子的方法
我正在尝试在 go 中实现一个行为树,并且我正在努力解决它的组合功能。基本上,我需要Tick()
在下面实现来调用由它嵌入的位置定义的方法。
这里是behavior.go
:
这是Behavior
嵌入的结构:
让这个例子有意义的更多文件:
和这个:
这是它的用法示例:
我期待树通过打印这个来正常滴答作响:
但相反,我得到:
谁能帮我解决这个问题?
编辑:添加了一些额外的文件来说明问题。另外,我不明白反对票。我有一个诚实的问题。我只应该问对我有意义的问题吗?
planning - 人工智能中的分层任务网络(HTN)
我无法理解 HTN 是什么。我相信我们希望将计划的所有小动作分解为更高级别的计划。
例如:
“乘坐巴士”是“去巴士”、“买票”、“坐下”等的HLA。
我错了吗?希望有一个简单的解释。
tree - 行为树和取消正在运行的事件
我在实现我的行为树时遇到问题。我想我了解基础知识,但我被正在运行的事件所困扰,特别是如何停止它们(或者更确切地说如何不停止它们)
假设以下简单树:
序列中的所有节点都是运行时间较长的动作,因此返回运行状态直到完成。
假设舞蹈是真的,角色会跳舞,这很好。现在talk_to_lady 为真,这意味着角色应该去那里与她交谈。虽然该任务确实具有更高的优先级并且我确实希望它发生,但我仍然希望让角色在移动到talk_to_lady while 循环之前完成当前的舞蹈节点(即动画)(尽管可能有其他情况我会不想等)。
我的解决方案是让树在 dance_move 动作上调用 Abort() 方法,但如果这返回运行状态,它将忽略 talk 动作,直到 dance_move 动作返回成功或失败。此外,如果树中较高优先级的事件是另一个动作而不是 while 节点,则它可能已经做出了可能干扰 dance_move 动作的状态更改。
我是否遗漏了什么,或者有没有我没有读过的解决方案?
model - 在 UE4 中按照某些移动模型移动角色
使用虚幻引擎 4,我想让游戏中的一些背景演员(人类、车辆)按照布朗模型、随机航点模型、随机高斯马尔可夫模型等移动模型移动,以便它们的速度、位置和加速度发生变化随着时间的推移是明确定义和沟通的。
有什么好的资源我可以参考,或者有人可以解释或指导我吗(可行性/过程/结果)
PS:我对使用 Unreal 进行游戏开发非常陌生。
提前致谢!
c# - 行为树:如何/何时在叶节点上返回“运行”状态?
我已经实现了一个简单的行为树算法,我打算在 Unity 项目中使用它。它主要按我的预期工作,除了我无法正确使用它,这可能是由于我的一些误解造成的。我的问题如下:
如果一个叶子节点需要很长时间才能完成,例如一个使游戏单元遵循特定路径的动作,这意味着叶子节点当前处于“运行”状态。但是,如果我返回状态,我将无法再运行该函数的其余部分,这意味着我无法到达目的地。
所以我的问题是:告诉我的树叶节点正在运行的正确方法是什么?
这是我在 ActionNode 课上得到的:
如果你需要查看其他类,都是基于这篇文章。为了保持线程清洁而链接它。
至于动作示例,请考虑以下内容:
我想知道的是,如果 WalkToTarget 需要很长时间,我该如何返回“运行”状态?
我已经阅读了许多关于该主题的不同文章,但我似乎无法掌握这些状态背后的确切概念。例如,我了解如何判断 Sequence 或 Selector 节点正在运行。
我脑海中闪过的唯一想法是,我会将剩余路径存储在我的敌人类的一个变量中,并在每个游戏更新滴答声中调用该方法,但我觉得这只是糟糕的编码。
叶节点是否应该在任何给定时刻返回“运行”?如果是这样,在哪些情况下会发生这种情况?任何例子将不胜感激!
c++ - BTSK 顶部的 C++ 行为树代码表示 Behavior() : m_eStatus(BH_INVALID) {} 是什么意思?
我是 C++ 编程新手,一直在研究 Behavior Tree Starter Kit 以构建新的 AI 框架。我很难理解行为树入门工具包代码。鉴于此用于游戏 AI 行为树的 C++ 代码,顶部的代码部分(似乎正在设置初始状态或其他内容)是什么意思?什么是虚拟作品?
这是完整的代码,也是什么virtual Status update() = 0;
意思: