Do UE4 behaviour trees not tick every parent node to the leaf nodes every frame?

In most implementations of behaviour trees I’ve some across, the entire tree is ticked from the root downwards every frame, allowing sequences and selectors to re-check their conditions.

In effect this removes the needs for services.

Am I right in thinking this is not the case in ue4? It seems that while a child node is running, execution is firmly at that point. hence services which can act as interrupts. sort of.

this would explain a lot in my mind.

You’re correct, this is part of our BTs design. Stuff gets ticked only when it requests to (active task, the services, some specific C++ implemented decorators) and the rest is just waiting for events.

Recently I’ve did some work on BP-implemented decorators (to essentially fix them) and if you use them to abort the flow (flow “observer”) they will get ticked as well.

Cheers,

–mieszko

ah ok, this makes sense, and actually allows for much neater graphs. Thanks for the info Mieszko!