Networking

The recommended approach for Behavior Designer and networking is to have Behavior Designer run on the server. This will ensure the server makes all of the decisions and then sends the clients the results. For example, if the Seek task is running the client should only receive the current position of the agent. With this setup the behavior tree isn’t even aware of the network. This is also true for a client authoritative solution. Only the resulting transform/animation properties should be synced to all other clients. The actual behavior tree does not need to be synchronized across the network.

From a practical example your script would look something like this:

public class BehaviorTreeEnabler : MonoBehaviour
{
    [Tooltip("A reference to the behavior tree.")]
    public BehaviorTree m_BehaviorTree;

    private void Awake()
    {
        m_BehaviorTree.enabled = IsServer();
    }
}

The IsServer method depends on your networking implementation but it will ensure the behavior tree is enabled only on the server or the authoritative client in a peer to peer situation. With this setup Behavior Designer can work with any networking implementation.