ecspresso
    Preparing search index...

    Function createBehaviorTreePlugin

    • Create a behavior tree plugin for ECSpresso.

      Provides composable, priority-driven AI via behavior trees with:

      • Hybrid traversal: re-evaluate from root each tick, resume running leaves
      • Automatic abort with onAbort callback when preempted
      • Typed blackboard for per-entity AI memory
      • behaviorTreeAbort events on preemption

      Type Parameters

      • G extends string = "ai"

      Parameters

      Returns Plugin<
          WithEvents<
              WithComponents<EmptyConfig, BehaviorTreeComponentTypes>,
              BehaviorTreeEventTypes,
          >,
          EmptyConfig,
          "behavior-tree-update",
          G,
          never,
          never,
      >

      const ecs = ECSpresso.create()
      .withPlugin(createBehaviorTreePlugin())
      .build();

      const { defineBehaviorTree, action, condition, guard } = ecs.getHelpers(createBehaviorTreeHelpers);

      const tree = defineBehaviorTree('villager', {
      blackboard: { hunger: 100, targetId: null as number | null },
      root: selector([
      guard(ctx => ctx.blackboard.hunger < 30, action('eat', ...)),
      action('wander', ...),
      ]),
      });

      ecs.spawn({
      ...createBehaviorTree(tree),
      ...createLocalTransform(100, 200),
      });