But what exactly is the super power of the BT aside from quick testing and the Sequence? Does it have any particular functionality that would be hard to replicate in C++? When I look at the docs for it, it looks like the meat of what the AI does is done with normal BP graphs (== exact same functionality available in code), while the BT itself just defines the order of operations (with hard to read blackboard and variable references). It looks like it would be much simpler in code:
// Runs every 0.5s and sets targetToFollow and targetLocation
function agroCheck() {
if (targetToFollow != null && closeEnough(targetToFollow, 100.0f)) {
rapidMoveTo(targetToFollow);
}
else if (!isAtLocation(homeLocation) && targetLocation != null) {
moveToAsync(targetLocation);
wait(200.0f);
moveToAsync(homeLocation);
}
}
I could be wrong but this is the feeling I’m getting. It would be hear to see from people experienced in using and not using BTs whether it’s actually a lot more problematic to accomplish specific things C-side. I also don’t get what ‘data-driven’ is supposed to mean when every part of OOP programming is data-driven already.