Download

Is UBlackboardComponent::IsCompatibleWith() logically backwards?

I’m having difficulty creating reusable sub trees and using them via the ‘Run Behavior Tree’ node when this compatibility function requires that all blackboard values that are needed for the internal operation of the sub tree have to already be in the calling tree’s blackboard. This means the root blackboard has to be a child of the sub-trees blackboard.

It seems like this test should be the other way around: the sub tree should be allowed to introduce (temporarily) a new blackboard for its state with the root tree BB as a parent so the root BB state will be preserved and accessible in the sub tree.

In the current tech, the only way to make a library of reusable sub-trees is to base them all on a common, all-encompassing blackboard that each AI root blackboard would inherit from. Conflicts between sub tree members would have to managed, and all AI root trees would incur the cost of all sub-tree variables even if they only use one sub-tree in their design. That doesn’t seem like the intent of ‘Run Behavior Tree’ flexibility.

Or is there a better way to use ‘Run Behavior Tree’ node to assemble new types of AI from reusable parts?

Thanks
Clark