分享一个行为树的实现

目前在我的项目中,大量使用了行为树,包括新手引导、技能、BUFF、战斗AI、战前指挥、NPC工作流等等,大大方便策划和程序调试,也利于梳理逻辑。

ts/js实现:https://github.com/zhongfq/behavior3-ts
编辑器:https://github.com/zhandouxiaojiji/behavior3editor

有兴趣的可以了解一下

14赞

666:partying_face: :partying_face: :partying_face: star + fork二连了,可惜是react 最近刚刚学的vue react不会

creator直接在游戏中使用ts版本的实现就可以了

大佬有没有兴趣用编辑器导出的资源用creator来实现一个demo,甚至把编辑器直接整合嵌入creator
开发 COCOS Creator 插件的较佳实践 - Creator 3.x - Cocos中文社区 反正可以直接使用react开发插件

最近太忙了,暂时没有这个打算

行为树使用一时爽,维护火葬场

:sweat_smile:不觉得。目前我这边项目,行为树已经接近500棵了,后面会持续增加,从实现功能到维护,都没有觉得火葬场,反而从策划到程序更容易找到问题所在

1赞

行为树最重要的是它采用了组合的模式。组合意味着可以复用,并且产生不同效果。
在开发端最重要的作用是【复用】逻辑,减少工作量,提升效率。
面相策划的时候,最重要的是提供了丰富的决策选项。

从哪一点看,都不会是火葬场。

开发的确很爽,不用写代码,来个程序新人你就懂了,几百个行为树,大部分逻辑不可搜,隐藏在行为树里,想定位个问题,要在代码和行为树工具之间来回看逻辑。在代码搜不到,还要一个个行为树的命名去猜这个逻辑在哪个行为树,一个个去看。即使能定位到,行为树的逻辑是不同于代码逻辑的,还得转换思维去看控制器。看到Condition的部分又要回到代码看执行条件。前面有个仁兄说到复用,可能是迭代的版本还不够多,总有一天需求会变,你复用的行为树需要解耦。那个时候一个个去看逻辑解耦你就舒服了。

可以说随着版本迭代,时间越长,行为树越多,项目变成屎山是必然的,是你用什么框架都无法弥补的,这还不是火葬场那你们开心就好。

点赞:+1::+1::+1::+1::+1:

太棒了,回去研究下。

收藏从未停止,学习从未开始

说白了,行为树就是把刀,有的人用起来锋利无比。有的耍起来把自己给伤到。那后者硬说这把刀是垃圾,那还有啥好说的,赞同他呗。

2赞

目前来看,500棵多了,也没有感觉是火葬场,行为树组合性太丰富了,代码硬写来达到的效果,实现成本太高了,我们有大量的子树来做逻辑复用,也相当方便。不要用程序思维在写行为树节点,要用使用者的角度。老是想解耦复用,又要逻辑解耦,他出发点就错了,屎山就必然。

问题是你们这还是在开发,还没到维护阶段,有的人连基本的逻辑都读不懂,我说维护火葬场,你说行为树开发好处有多好,行为树当然是工具,好处你们说一万个都挡不了行为树可读性差这一点,在座的各位让你们去维护这个500个行为树的项目,有几个说自己不痛苦的,自己去看图2有几个能分分钟理清逻辑维护修改老需求的。东西当然是好东西,帖主分享的精神伟大无需可言。但是用行为树之前一定要考虑好优缺点是不是项目能接受的,策划愿意用行为树的意愿有多高,别最后都是维护工作都到程序自己头上了。另外行为树这东西,换一个程序员过来维护都要反复看才能看懂,要是策划换一批人,你指望策划能维护这个更是难上加难,到最后都会回到程序头上。


拜读大作,发现个小bug

确实,我修复一下,因为我们后端由原来lua的实现改为ts实现,由skynet调度nodejs来跑,lua版本的没有使用了,BUG可能会多一些,lua版本的我会按ts逻辑重新实现一下