想求问下楼主同时触发多种状态的行为树如何设计好,比如移动的同时可以攻击。个人的一种想法是把移动的下半身和攻击的上半身分开,但是在2d游戏中可能动画本身并没有分开。或者将“移动攻击”这种作为一种独立的状态,但是一旦这种组合状态多了以后会非常麻烦。 看到在分层设计和被动请求处理的文章里,支出决策层每次最终都只产生一个请求,那如何应对多种状态这种情况呢? 谢谢 回复
您好: 我现在在ros中用行为树,遇到了以下问题: (1)控制节点如何向叶子节点传参数 (2)控制节点下面叶子节点如何回退执行(由于触发了某些条件,当前叶子节点回退执行上一个叶子节点) 望博主不吝赐教 谢谢 回复
博主你好,关于共享数据和黑板的问题,我看到在UP 的文章中说黑板可以被实现为一个kv结构,那么 如果某个黑板 中的某个K 会被多个对象写入的话,那么在数据被需求这个K的对象读取之前,先写入数据的对象对黑板的写入会被后写入数据的对象写入的数据覆盖掉,那么先写入的数据对于读取对象来说就永远不可见了,这样的情况需要如何处理呢? 回复
您好,在学习AI的相关概念时发现了这里。 按照您的文章一边制作一边学习懂了不少,不过对于效率的部份有点疑惑。 1.既然是遍历,一但树的节点多了那耗能肯定会增加。是否有改善的方式呢? 2.另外也对博主提过的第二世代行为树感到有点好奇。 回复
关于效率,我的理解是这样的,遍历确实会增加消耗,不过一般来说,只要前置判断(简单逻辑先判断,缓存计算量大的信息等等)优化好,行为树结构设计好的话,这种消耗不会很大。第二代行为树的话,你可以翻墙看看这个视频:https://www.youtube.com/watch?v=n4aREFb3SsU
您好博主,最近在Unity上用行为树时遇到逻辑和动画同步的问题想请教一下: 当敌人的移动行为被攻击行为打断时,逻辑上已经开始处理攻击的相关逻辑(如攻击前摇期间时刻朝向玩家,类似血源那样),但是由于移动的动画不能被强制打断,所以并不会立刻就切换到攻击动画,这就出现了逻辑和动画不同步的情况; 我目前的做法是在攻击行为里直接判断当前动画的名称是不是期望值,感觉这种做法有点生硬,请问行为层和动画层之间的同步有没有比较普遍的做法,查了很久也没有找到这方面的相关资料,先谢过; 回复
感谢博主的方案,用第一种方法写了个队列,结构通用清晰多了; 另外还想请教一下博主,自己自从把《游戏人工智能编程案例精粹》和行为树研究完后,就不知道该如何继续深入学习了,希望能获得一点建议,非常感谢=v=
这么多好的内容,希望博主能继续更新
楼主你好 还有“TsiU” 框架 的更新链接嘛 想学习一下 之前链接失效了。感谢感谢
博主现在咋不更新了呢
感谢博主的一系列关于行为树的文章。冒昧问一下 。
文章中的下载地址全都坏掉了。请问博主有空再上传一份吗?github啥的都可以 感谢了
github上有,这里
想求问下楼主同时触发多种状态的行为树如何设计好,比如移动的同时可以攻击。个人的一种想法是把移动的下半身和攻击的上半身分开,但是在2d游戏中可能动画本身并没有分开。或者将“移动攻击”这种作为一种独立的状态,但是一旦这种组合状态多了以后会非常麻烦。
看到在分层设计和被动请求处理的文章里,支出决策层每次最终都只产生一个请求,那如何应对多种状态这种情况呢?
谢谢
您好:
我现在在ros中用行为树,遇到了以下问题:
(1)控制节点如何向叶子节点传参数
(2)控制节点下面叶子节点如何回退执行(由于触发了某些条件,当前叶子节点回退执行上一个叶子节点)
望博主不吝赐教
谢谢
博主最近没更新啊,期待更精彩内容,AI这块,用非常有经验的语言表达,感觉写的非常实用和借地气。
如果想换工作,可以找我,大公司好机会,需要人才。
写博客很花时间,最近太忙了~
博主你好,关于共享数据和黑板的问题,我看到在UP 的文章中说黑板可以被实现为一个kv结构,那么 如果某个黑板 中的某个K 会被多个对象写入的话,那么在数据被需求这个K的对象读取之前,先写入数据的对象对黑板的写入会被后写入数据的对象写入的数据覆盖掉,那么先写入的数据对于读取对象来说就永远不可见了,这样的情况需要如何处理呢?
这个是使用黑板的一个问题,这个逻辑不应该是有黑板来负责,而是应该使用黑板的人去规划,当然黑板可以提供一些读写控制,不过总体来说还是应该由用黑板的人负责
我明白您的意思是一个是相对时间, 一个是绝对时间,但是既然他们的类完全一样,那不是可以合二为一吗?为什么还要特意分成两个类,这样做有什么好处?
就是为了区分是绝对时间,还是相对时间,内容还是不太一样,比如绝对时间-绝对时间,返回的是相对时间,绝对时间+绝对时间是没有意义的等等,你可以看看那些操作符重载的部分
博主你好,我对您的脚本中的 TTimeAbs.cs, 和 TTimeRel.cs 这两个类比较迷惑,类的方法都完全一样,为啥还要分成两个类啊= =
您好,在学习AI的相关概念时发现了这里。
按照您的文章一边制作一边学习懂了不少,不过对于效率的部份有点疑惑。
1.既然是遍历,一但树的节点多了那耗能肯定会增加。是否有改善的方式呢?
2.另外也对博主提过的第二世代行为树感到有点好奇。
关于效率,我的理解是这样的,遍历确实会增加消耗,不过一般来说,只要前置判断(简单逻辑先判断,缓存计算量大的信息等等)优化好,行为树结构设计好的话,这种消耗不会很大。第二代行为树的话,你可以翻墙看看这个视频:https://www.youtube.com/watch?v=n4aREFb3SsU
您好博主,最近在Unity上用行为树时遇到逻辑和动画同步的问题想请教一下:
当敌人的移动行为被攻击行为打断时,逻辑上已经开始处理攻击的相关逻辑(如攻击前摇期间时刻朝向玩家,类似血源那样),但是由于移动的动画不能被强制打断,所以并不会立刻就切换到攻击动画,这就出现了逻辑和动画不同步的情况;
我目前的做法是在攻击行为里直接判断当前动画的名称是不是期望值,感觉这种做法有点生硬,请问行为层和动画层之间的同步有没有比较普遍的做法,查了很久也没有找到这方面的相关资料,先谢过;
一个办法是,新的动画压入队列,然后当开始播放的时候,再回调高层开始前摇逻辑,还有一个办法,就是高层逻辑判断的时候,加入动画是否可打断的判断,如果不能,那就整个跳过决策部分(根本不攻击)
感谢博主的方案,用第一种方法写了个队列,结构通用清晰多了;
另外还想请教一下博主,自己自从把《游戏人工智能编程案例精粹》和行为树研究完后,就不知道该如何继续深入学习了,希望能获得一点建议,非常感谢=v=
如果只是游戏的AI,其实很多是在与经验的积累,因为每个游戏的需求都不同,如何为特定游戏去做符合需求的AI,是很大的挑战,不过如果你想研究前沿AI的东西,比如机器学习这种,那就需要更多的学习了
谢谢,那我就先看如何继续优化目前项目好了