在平时做项目过程中,我们使用到了行为树来作为AI的编辑基础,行为树的概念大家可以百度,网上应该有很多资料,在unity的商店里面,有一个我用来深度学习行为树的包,名字是behavior designer,里面的一些基础的概念,可以到下面这个网页https://opsive.com/support/documentation/behavior-designer/overview/去看看,比如什么是条件task, action,composite, decorator,稍微的吐槽一下,这个包里面其实很多东西是冗余的,比如它写的大部分的action,我们在实际的项目中都不会使用,因为它抽象的粒度实在是太细了,还有那些它实现的事件分发,都是多余的,在我项目中,保留的仅仅是它的执行过程,我大致描述一下,一棵树,包含了执行栈,执行栈里面才是具体的task的执行,在初始的时候,有一个执行栈,如果某一个composite可以并发的,那就会生成其他的执行栈,这样子就实现了并发的模拟,还有一个难点就是它的conditional abort,这个用来实现ai的时候非常重要。本节的重点是行为树的概念,行为树的执行,以及condition abort。这里的执行栈的概念在同步中起到了至关重要的作用.
(一) 行为树的执行栈
(二) 由于行为树实在是太灵活了,反而在使用的时候会摸不到头脑,经过我个人的思考,也为了我们实现同步的目标,使用它的时候我推荐是这样子的,一颗树只管一个对象的状态的变化,一个对象,可能会有很多颗树,但是肯定会有一个根树,在一颗树内,不会涉及到另外的对象的状态的改变。
(三)一个对象的状态,其实是两部分,一部分是我们的对象的数值状态,比如血量这种,我们可以认为它是由于树执行到现在积累下来的,另外一个部分其实就是树里面正在执行的task,这些会绝对未来对象的数值状态
(四)全部的逻辑计算都在服务器,客户端只是负责一个播放的功能。
游戏同步(二)-原理
最新推荐文章于 2023-05-24 14:22:04 发布