-
Notifications
You must be signed in to change notification settings - Fork 25
API Documentation
The main class that manages the execution of the behavior tree.
Properties:
-
_is_enabled: bool: Whether the behavior tree is enabled
Methods:
-
request_abort(requestor: BTNode, abort_scope: int, ctx: BTContext): Request an abort operation -
get_current_context() -> BTContext: Get the current context -
register_context(ctx: BTContext): Register a context with all nodes -
tick(ctx: BTContext, delta: float): Tick the behavior tree -
create_context(agent: Object, blackboard: Blackboard) -> BTContext: Create a new context
Enums:
-
BTAbortScope:-
SELF: Only abort the requesting node -
SUB_BRANCH: Abort the requestor and its children -
LOWER_BRANCH: Abort nodes with lower priority -
LOWER_PRIORITY: Abort all nodes with lower priority -
SIBLING_BRANCH: Abort sibling branches -
ALL: Abort all running nodes
-
Base class for all behavior tree nodes.
Properties:
-
_is_enabled: bool: Whether the node is enabled -
_conditions: Array[BTCondition]: Conditions that determine if the node should execute -
_condition_type: ConditionType: How to evaluate multiple conditions -
_tick_conditions_when_running: bool: Whether to check conditions while running -
_services: Array[BTService]: Services attached to the node -
_tick_services_when_running: bool: Whether to tick services while running -
_decorators: Array[BTDecorator]: Decorators attached to the node
Methods:
-
setup(owning_tree: BehaviorTree) -> void: Set up the node with its behavior tree -
register_context(ctx: BTContext): Register with a context -
get_current_context() -> BTContext: Get the current context -
tick(ctx: BTContext) -> BTResult: Tick the node -
_tick(ctx: BTContext) -> BTResult: Virtual method to override with node logic -
_post_tick(ctx: BTContext, result: BTResult) -> void: Called after node is ticked
Enums:
-
BTResult:-
SUCCESS: Node completed successfully -
RUNNING: Node is still running -
FAILURE: Node failed -
ABORTED: Node was aborted
-
-
ConditionType:-
ALL: All conditions must be true -
ANY: At least one condition must be true
-
Maintains the state of execution for a specific entity.
Properties:
-
agent: Object: The owning agent -
blackboard: Blackboard: The blackboard used for data sharing -
custom_data: Dictionary: Additional data that can be used by the implementation -
current: BTNode: Currently ticking node -
elapsed_time: float: Time elapsed since tree started -
delta: float: Delta time for current tick -
running_history: Array[BTNode]: History of running nodes -
abort_issued: bool: Whether an abort was issued
Methods:
-
get_running_or_current() -> BTNode: Get the node that is currently running or the current node -
get_running_data(obj: Object) -> Dictionary: Get data specific to a running node -
get_persistent_data(obj: Object) -> Dictionary: Get data that persists between ticks -
clear_running_data(): Clear running data and history -
clear_persistent_data(): Clear all persistent data -
is_running() -> bool: Return whether there are any running nodes
Stores shared data accessible by all nodes in the tree.
Properties:
-
_values: Dictionary: Dictionary of values stored in the blackboard
Methods:
-
copy_from(other: Blackboard): Copy values from another blackboard -
get_values() -> Dictionary: Returns a copy of the values in the blackboard -
set_values(new_values: Dictionary): Set multiple values at once -
toggle_bool(key: StringName): Toggle a boolean value -
negate(key: StringName): Negate a value -
increment_number(key: StringName, amount: float = 1.0): Increment a numeric value -
increment_vector(key: StringName, to := Vector2.ONE, amount := 1.0): Increment a vector value -
increment_vector3(key: StringName, to := Vector3.ONE, amount := 1.0): Increment a Vector3 value -
get_bool(key: StringName) -> bool: Get a boolean value -
get_int(key: StringName) -> int: Get an integer value -
get_vector(key: StringName) -> Vector2: Get a vector value -
get_vector3(key: StringName) -> Vector3: Get a Vector3 value -
get_string(key: StringName) -> String: Get a string value -
get_string_name(key: StringName) -> StringName: Get a string name value -
get_float(key: StringName) -> float: Get a float value -
get_node(key: StringName) -> Node: Get a node value -
get_array(key: StringName) -> Array: Get an array value -
get_dictionary(key: StringName) -> Dictionary: Get a dictionary value -
get_type(key: StringName) -> Variant.Type: Get the type of a value -
is_zero_or_empty(key: StringName) -> bool: Check if a value is zero or empty -
compare_entries(key1: StringName, key2: StringName) -> bool: Compare two blackboard entries -
clear(): Clear all values -
remove_key(key: StringName): Remove a key -
get_keys() -> Array: Get all keys -
get_entries_as_string() -> String: Get a string representation of all entries -
set_value(key: StringName, value: Variant = null): Set a value -
get_value(key: StringName, default: Variant = null) -> Variant: Get a value -
has_key(key: StringName) -> bool: Check if a key exists
Signals:
-
value_changed(key: StringName, value: Variant): Emitted when a value changes
Base class for nodes that can have children.
Properties:
-
_children: Array[BTNode]: Children nodes of this composite -
_offset: int: Offset to start ticking from
Runs child nodes in order until one succeeds or all fail.
Description: Returns SUCCESS if any child succeeds, FAILURE if all children fail, or RUNNING if a child is still running.
Runs child nodes in order until one fails or all succeed.
Description: Returns SUCCESS if all children succeed, FAILURE if any child fails, or RUNNING if a child is still running.
Runs all child nodes simultaneously.
Properties:
-
_complete_target: BTNode: Optional node that determines when to complete
Description: By default, returns RUNNING until _complete_target finishes. If _complete_target is not set, it will run forever.
Base class for random composites.
Methods:
-
_get_execution_range(ctx: BTContext) -> Array: Get the range of children to execute
Runs child nodes in random order until one succeeds or all fail.
Description: Similar to BTSelector but executes children in a random order.
Runs child nodes in random order until one fails or all succeed.
Description: Similar to BTSequence but executes children in a random order.
Base class for all leaf nodes (tasks).
Description: Tasks perform the actual work in a behavior tree. Extend this class to create custom tasks.
Wait for a specified amount of time.
Properties:
-
_wait_time: float: How long to wait in seconds
Description: Returns RUNNING while waiting, SUCCESS when done.
Base class for decorators.
Methods:
-
register_context(ctx: BTContext): Register with a context -
tick(ctx: BTContext, result: BTNode.BTResult) -> BTNode.BTResult: Process a result from a child node
Description: Decorators modify the result of a child node.
Inverts the result of a child node.
Description: SUCCESS becomes FAILURE and vice versa. RUNNING remains RUNNING.
Repeats a child execution a specified number of times.
Properties:
-
_repeat_num: int: Number of times to repeat the child node
Description: Returns RUNNING until all repetitions complete, then returns the child's result.
Repeats child execution until it returns the expected result.
Properties:
-
_expected_result: int: The result that should cause the repeating to stop
Description: Returns RUNNING until the expected result is achieved.
Always returns a specific result regardless of the child's result.
Properties:
-
_return_value: int: The result to always return
Description: Will still return RUNNING if the child is running.
Base class for conditions.
Properties:
-
_is_enabled: bool: Whether the condition is enabled -
_flip: bool: Whether to invert the result -
_attached_node: BTNode: The node this conditional is attached to
Methods:
-
setup(attached_node: BTNode): Set up the conditional with its attached node -
register_context(ctx: BTContext): Register with a context -
tick(ctx: BTContext) -> bool: Evaluate the condition -
_tick(ctx: BTContext) -> bool: Virtual method to override with condition logic
Condition that can trigger aborts.
Properties:
-
_abort_trigger: AbortTrigger: When to trigger an abort -
_abort_scope: BehaviorTree.BTAbortScope: What scope to abort
Methods:
-
_reevaluate(ctx: BTContext): Reevaluate the condition and potentially trigger an abort
Enums:
-
AbortTrigger:-
NONE: Never abort -
ON_REEVALUATED: Abort whenever reevaluated -
ON_RESULT_CHANGED: Abort when result changes -
ON_RESULT_TRUE: Abort when result becomes true -
ON_RESULT_FALSE: Abort when result becomes false
-
Signals:
-
abort_requested(node: BTNode, abort_scope: BehaviorTree.BTAbortScope, ctx: BTContext): Emitted when an abort is requested
Condition based on blackboard values.
Properties:
-
_key_query: KeyQuery: The type of query to perform -
_key: StringName: The key to check
Enums:
-
KeyQuery:-
IS_SET: Check if key exists -
IS_NOT_SET: Check if key doesn't exist
-
Checks if a blackboard value is non-zero or non-empty.
Description: Returns true if the value exists and is not zero/empty, false otherwise.
Compares two blackboard entries.
Properties:
-
_comparison: Comparison: The type of comparison to perform -
_other_key: StringName: The key to compare against
Enums:
-
Comparison:-
IS_EQUAL: Check if values are equal -
IS_NOT_EQUAL: Check if values are not equal
-
Description: Returns true if the comparison is met, false otherwise.
Base class for services.
Properties:
-
_is_enabled: bool: Whether the service is active -
_frequency: float: How often to tick this service (in seconds) -
_variation: float: Random variation to add to frequency (0-1 multiplier) -
_skip_first: bool: Whether to skip the first tick
Methods:
-
register_context(ctx: BTContext): Register with a context -
tick(ctx: BTContext): Tick the service if it's time -
_tick(ctx: BTContext): Virtual method to override with service logic
Signals:
-
ticked(): Emitted when the service ticks
Utility class to get target information from the blackboard.
Properties:
-
targeting_mode: TargetingMode: How to interpret the target key -
target_key: StringName: The key in the blackboard that holds the target
Methods:
-
get_target_direction(ctx: BTContext) -> Vector2: Get the direction to the target -
get_target_distance(ctx: BTContext) -> float: Get the distance to the target -
get_target_position(ctx: BTContext) -> Vector2: Get the target position
Enums:
-
TargetingMode:-
DIRECTION: The key contains a direction vector -
POSITION: The key contains a position vector -
NODE: The key contains a Node2D reference
-