Releases: limbonaut/limboai
v1.2-rc
Hey, folks! Are you excited about shiny new Godot goodies? This pre-release is focused on Godot 4.3, and it's not compatible with 4.2.
I believe it is quite stable. But if you come upon some bugs, don't forget to report them! Thanks.
What's Changed
⭐ - highlights
⚡ - breaking changes, follow PR link for details
- GHA: Build Android platform libs in GDExtension workflow by @limbonaut in #147
- ⭐ Add support for Godot 4.3 by @Rubonnek in #64
- Register and call virtual methods on scripts in GDExtension by @limbonaut in #149
- Fix: GDExtension load fails due to
Expression
used withoutRef<>
by @limbonaut in #150 - ⭐ Generate built-in documentation header in GDExtension variant by @limbonaut in #151
- GHA improvements by @limbonaut in #154
- Replace deprecated set_auto_translate call with set_auto_translate_mode by @dpalais in #155
- ⭐ Improved layout for large displays (optional) by @limbonaut in #157
- Fix BlackboardPlan arrays shouldn't be shared between instanced agents by @limbonaut in #158
- Improve documentation tooltips by @limbonaut in #159
- Fix new task script path don't update after changing the setting by @ydeltastar in #161
- Fix error when opening scene with a
BTPlayer
by @ydeltastar in #162 - ⭐ HSM improvements by @limbonaut in #164
- Fix BTPlayer.restart() crash by @limbonaut in #172
- GHA: Fix iOS builds by @limbonaut in #173
- GHA: Add Linux & Windows ARM64 builds by @limbonaut in #174
- LimboHSM: Fix process_input is not enabled in active substate by @limbonaut in #176
- Hide
update_mode
property for non-root HSMs by @limbonaut in #177 - Fix error if
changed
signal is already connected in several tasks by @limbonaut in #180 - ⚡ Breaking: Implement
BTInstance
- runtime instance ofBehaviorTree
by @limbonaut in #181 - Allow monitoring BT performance in
BTState
by @limbonaut in #182 - ⭐ BTPlayer: Allow switching BT instance at runtime by @limbonaut in #183
- Allow supplying custom scene root for behavior tree instantiation by @limbonaut in #184
- Editor setting to prefer online docs, and open builtin docs by default by @limbonaut in #185
- ⭐ Edit task script on double-click (open help for core task) by @limbonaut in #186
- Fix C# exports print errors due to missing ClassDB binding by @limbonaut in #188
- Make player filter in the debugger case-insensitive by @ydeltastar in #189
- Improved dev setup for GDExtension by @limbonaut in #190
- Fix renaming
BehaviorTree
files doesn't update tab names by @ydeltastar in #191 - Fix
monitor_performance
screwing C# exports by @limbonaut in #193 - BlackboardPlan: Fix mapping failing for NodePath variables with prefetch enabled by @limbonaut in #195
- GHA: Preserve nuget version for C# builds by @limbonaut in #197
New Contributors
- @ydeltastar made their first contribution in #161
Full Changelog: v1.1.0...v1.2-rc
v1.1.1
Work on release for Godot 4.3 continues. In the meantime, I cherry-picked some bug fixes for this patch release, plus it comes with Android GDExtension libs.
What's Changed
- GHA: Build Android platform libs in GDExtension workflow by @limbonaut in #147
- Fix potential rare var name conflict in BTCooldown
- Fix connected signal error when loading BT for the second time
- Fix BlackboardPlan arrays shouldn't be shared between instanced agents
- Defer banner actions to not crash upon restart
- Fix new task script path don't update after changing the setting (thanks @ydeltastar)
- Fix BTPlayer.restart() crash
- Fix process_input is not enabled in active substate
- Fix error if
changed
signal is already connected to a BBParam in a bunch of tasks - Fix C# exports print errors due to missing ClassDB binding
Full Changelog: v1.1.0...v1.1.1
v1.1.0
Good News, Everyone! 🎉
LimboAI version 1.1.0 is out now, bringing new quality-of-life improvements and various bug fixes. As usual, this release targets the latest stable Godot version (4.2.2 currently).
Don't miss out on the new mapping feature!
What's Changed
⭐ - highlights
⚡ - breaking changes, follow PR link for details
- Blackboard: Add
create
parameter tobind_var_to_property
andlink_var
by @limbonaut in #89 - BTDecorator: Add default
_tick
implementation by @limbonaut in #95 - Add tests for nested HSM flow, tests for dispatch() and get_root(), and fix BBParam saved_value initializing to null by @limbonaut in #101
- Add note about how to run demo/tutorial by @TranquilMarmot in #100
- Add pre-commit configuration by @limbonaut in #103
- ⭐ ⚡ Breaking: Allow specifying agent in
BTPlayer
node via inspector by @limbonaut in #102 - GHA: Use older toolchain for SteamDeck compatibility by @limbonaut in #107
- ⭐ Mapping variables by @limbonaut in #106
- Editor: Check if variable is of correct type for BBParam subtypes by @limbonaut in #110
- GHA: Generate .import files for GDExtension icons by @limbonaut in #116
- GHA: Use godotengine buildroot mirror by @limbonaut in #117
- Doc: Add first steps by @limbonaut in #118
- ⭐ Implement tab navigation in the editor by @limbonaut in #120
- Fix compile-time errors with updated godot-cpp by @limbonaut in #123
- Editor: Add tab context menu option "Jump to Owner" by @limbonaut in #122
- Show version info in the editor by @limbonaut in #124
- API: Add Blackboard methods to enable iteration, state inspection & serialization by @limbonaut in #125
- Add unit tests for
Blackboard
and fixBlackboard.unbind_var()
by @limbonaut in #127 - Fix custom task issues - a rare crash & a sticky name/script issue, and improve error handling by @limbonaut in #130
- Fix reparenting an agent deactivates its HSM by @limbonaut in #131
- Fix crash when freeing agent with performance monitoring enabled by @limbonaut in #133
- Fix folding/unfolding selected composite task is not working by @limbonaut in #136
- Fix task tree warnings column always taking up space by @limbonaut in #142
- Support light themes for editor icons in GDExtension by @limbonaut in #145
New Contributors
- @TranquilMarmot made their first contribution in #100
Full Changelog: v1.0.2...v1.1.0
v1.1-rc
What's Changed
⚡ - compatibility breaking, follow PR link for details.
- Blackboard: Add
create
parameter tobind_var_to_property
andlink_var
by @limbonaut in #89 - BTDecorator: Add default
_tick
implementation by @limbonaut in #95 - Add tests for nested HSM flow, tests for dispatch() and get_root(), and fix BBParam saved_value initializing to null by @limbonaut in #101
- Add note about how to run demo/tutorial by @TranquilMarmot in #100
- Add pre-commit configuration by @limbonaut in #103
- ⚡ Breaking: Allow specifying agent in
BTPlayer
node via inspector by @limbonaut in #102 - GHA: Use older toolchain for SteamDeck compatibility by @limbonaut in #107
- Mapping variables by @limbonaut in #106
- Editor: Check if variable is of correct type for BBParam subtypes by @limbonaut in #110
- GHA: Generate .import files for GDExtension icons by @limbonaut in #116
- GHA: Use godotengine buildroot mirror by @limbonaut in #117
- Doc: Add first steps by @limbonaut in #118
- Implement tab navigation in the editor by @limbonaut in #120
- Fix compile-time errors with updated godot-cpp by @limbonaut in #123
- Editor: Add tab context menu option "Jump to Owner" by @limbonaut in #122
- Show version info in the editor by @limbonaut in #124
- API: Add Blackboard methods to enable iteration, state inspection & serialization by @limbonaut in #125
- Add unit tests for
Blackboard
and fixBlackboard.unbind_var()
by @limbonaut in #127 - Fix custom task issues - a rare crash & a sticky name/script issue, and improve error handling by @limbonaut in #130
- Fix reparenting an agent deactivates its HSM by @limbonaut in #131
New Contributors
- @TranquilMarmot made their first contribution in #100
Full Changelog: v1.0.2...v1.1-rc
v1.0.2
What's Changed
- GHA: Provide version.txt with GDExtension builds & demo project by @limbonaut in #87
- GHA: Build .NET binaries for macOS by @limbonaut in #88
- HSM: Delay state transition till update is finished by @limbonaut in #91
- Support multiple debugger sessions by @limbonaut in #92
- Fix
LimboState::get_root
anddispatch
freeze the process in case of nested HSMs by @limbonaut in #93 - Documentation update - BTSubTree by @onze in #96
New Contributors
Full Changelog: v1.0.1...v1.0.2
Update (May 27)
Builds were updated using a different toolchain to support Steam Deck and older Linux distributions. All the packages were updated to the new build.
v1.0.1
What's Changed
- Fix blackboard plan issues by @limbonaut in #82
- BTSubtree: Fix subtree blackboard plan is not property utilized by @limbonaut in #84
BlackboardPlan
fixes by @limbonaut in #85
Full Changelog: v1.0...v1.0.1
v1.0
Good News, Everyone! 🎉
LimboAI version 1.0 is finally here after months of intensive coding and refining! 🧠🔧
Now with GDExtension support, a new powerful blackboard system, improved editor, awesome demo project, and much more! 🥳
What's Changed
- GDExtension support!
- See Using GDExtension.
- GDExtension builds are also available in GitHub Actions.
- Revised Blackboard system
- Breaking compatibility: BTPlayer's
blackboard_data
is replaced with newBlackboardPlan
system (see below).- If you have blackboard data defined in BTPlayer or LimboState nodes, you need to redefine it using the new system.
- New workflow: Define variables in the
BehaviorTree
resource and override those variables in theBTPlayer
node.- Variables that begin with "_" are considered private and can't be overridden (they are hidden).
- See Sharing data using Blackboard.
- BlackboardPlan resource: Stores and manages a collection of variables, and is used to construct new
Blackboard
instances.- Define blackboard variables in a
BehaviorTree
resource, using itsBlackboardPlan
property. BTPlayer
also has its ownBlackboardPlan
which extends the behavior treeBlackboardPlan
resource, i.e. variables from theBehaviorTree
resource are overridden in theBTPlayer
node.
- Define blackboard variables in a
- BlackboardPlan editor
- Accessed with "Manage..." button in the inspector.
- Rename, reposition, and change types and hints of the blackboard variables.
- Specify relevant export hints for the variables.
- Edit default variable values directly in the inspector.
NodePath
prefetching is now enabled/disabled in theBlackboardPlan
editor.
- Binding: Bind variables to object properties using
blackboard.bind_var()
method.- A variable bound to a property will have the same value as that property (for both reading and writing).
- Linking: Link variables using
blackboard.link_var()
method at runtime.- Two linked variables in different blackboards will share the same state.
- Inspector property editor for BB variables:
- Handy property editor that shows an indicator if a variable is included in the blackboard.
- Clicking on the indicator takes you straight to the blackboard plan editor and autofills the variable name if it doesn't exist.
- Special indicator for variables that begin with "_" (aka private variables).
- Also provides a drop-down selection of existing variables.
- Can be used with custom tasks.
- Important: It appears for any
StringName
property in a custom task that ends with "_var" and also for exportedBBParam
properties.
- Handy property editor that shows an indicator if a variable is included in the blackboard.
- Breaking compatibility: BTPlayer's
- Editor improvements
- Change Type action: Switch task's type with the "Change Type" context menu action.
- Extract Subtree action: Save subtrees with the "Extract Subtree" context menu action (using
BTSubtree
decorator). - Adding tasks with Shift-click: In Task Palette, Shift+click to add a task after the selected and on the same level as the selected task.
- Cut-Copy-Paste: New Cut, Copy and Paste actions in the behavior tree editor.
- BBParam editor: Handy custom property editor for blackboard parameters, and new BBParam types.
- Remember collapsed branches in behavior trees.
- Tasks
- New BTEvaluateExpression task : Evaluate an
Expression
against a node or object (thanks @Rubonnek). - BTCallMethod improvements:
- Include its delta as an argument. Thanks, @Rubonnek!
- Store result on the blackboard.
- Allow using blackboard variables as arguments for the call.
- BTRunLimit improvements: New
count_policy
property.- Breaking compatibility: RunLimit count policy defaults to counting only successful runs. Previously, both successful and failed runs were counted.
- New BTEvaluateExpression task : Evaluate an
- State machines
- Refactored
LimboHSM
,LimboState
, andBTState
code. - Disallow
LimboHSM
transitions to self whenANYSTATE
is used. - Allow
LimboState::dispatch
to be called from inside the hierarchy. - Provide the previous state in the
state_changed
signal. - Fix crashing on HSM update with state transition.
- Fix
BTState
not honoring API virtual methods.
- Refactored
- Comprehensive Demo: New extensive demo project with a tutorial, several examples and a small game.
- Tutorial: Introduction to behavior trees with examples inside the demo project!
- Debugger improvements:
- Performance gains: Implement selective tree updates in
BehaviorTreeView
. - New option: Specify update interval.
- Visualize BTs in-game: Expose
BehaviorTreeView
andBehaviorTreeData
to use with custom in-game tools.
- Performance gains: Implement selective tree updates in
- Online documentation: link.
- Other changes
- Use
StringName
for blackboard variables and HSM events. - Remove "p_" from the argument names in the
ClassDB
bindings. - New function to decorate output variables in
LimboUtility
(for custom tasks). - Expose checks and operations in
LimboUtility
(for custom tasks). - Better error handling when resolving
_generate_name
. - Complain in
Blackboard::get_var
if variable is missing. - Fix:
BTProbability
showing incorrect percentage. - Fix crash upon increasing
TypedArray<BBVariant>
size (thanks @Rubonnek). - Fix building as external module (thanks @dpalais).
- Fix
BehaviorTreeView::update_tree
null data crash (thanks @Rubonnek). - Fix: Assigning variables via code might have no effect if done before initialization.
- Fix error when clicking resource header in debugger with a scene-embedded BT.
- Fix user-passed parent scope is ignored in state initialization (thanks @dpalais).
- Documentation updates.
- And more!
- Use
New Contributors
- @Rubonnek made their first contribution in #9
- @VisitingOcean made their first contribution in #21
- @dpalais made their first contribution in #56
Full Changelog: v0.5...v1.0
v1.0-rc3
LimboAI 1.0 RC3 is out now 🚀 bringing us a step closer to the stable release with a number of small fixes and improvements.
Changes in v1.0-rc3
- Improvements
- Prefetching rework: Move prefetching into
BlackboardPlan
and add checkbox to the plan editor. - Linking vars with
Blackboard::link_var
. - Blackboard-related improvements and fixes.
- BBParam editor: Combine type+mode functionality in one button.
- Demo: Display custom task source code upon selection in BehaviorTreeView.
- Prefetching rework: Move prefetching into
- Fixes
- Fix crashing on HSM update with state transition.
- Fix "Manage" button is sometimes shown for derived plans.
- Fix
BTState
not honoring API virtual methods. - Fix building as external module (thanks @dpalais).
- Fix
BehaviorTreeView::update_tree
null data crash (thanks @Rubonnek). - Set parent scope in state initialization (thanks @dpalais).
- Demo-related fixes.
- API changes
- Expose
BlackboardPlan
factory methods. - New
task_selected
signal for BehaviorTreeView. - Use
StringName
for blackboard variables and HSM events. - Remove "p_" from the argument names in the
ClassDB
bindings. - Provide the previous state in the
state_changed
signal. - Allow
LimboState::dispatch
to be called from inside the hierarchy. - Expose
BehaviorTreeView::clear
to GDScript (thanks @Rubonnek). - Expose additional
BlackboardPlan
methods for custom tooling.
- Expose
- Documentation updates.
Previous changes in v1.0 (click to expand)
Changes in v1.0-rc2
- Debugger improvements:
- Performance gains: Implement selective tree updates in
BehaviorTreeView
. - New option: Specify update interval.
- Performance gains: Implement selective tree updates in
- New
BTEvaluateExpression
task : Evaluate anExpression
against a node or object (thanks @Rubonnek). - Demo: Various fixes.
- Documentation updates.
- GHA: Add debug build for web target, and add the missing entries in GDExtension manifest.
- Fix crash upon increasing
TypedArray<BBVariant>
size (thanks @Rubonnek). - Fix icons not showing for user tasks in the demo project.
Full Changelog: v1.0-rc1...v1.0-rc2
Changes in v1.0-rc1
- Comprehensive Demo: New extensive demo project includes a tutorial, several examples and a small game.
- Tutorial: Introduction to behavior trees with examples inside the demo project.
- Cut-Copy-Paste: New Cut, Copy and Paste actions in the behavior tree editor.
- BTRunLimit improvements: New
count_policy
property.- Breaking compatibility: RunLimit count policy defaults to counting only successful runs. Previously, both successful and failed runs were counted.
- Visualize BTs In-Game: Exposed
BehaviorTreeView
andBehaviorTreeData
to use with custom in-game tools.BehaviorTreeView
received improvements.
- Other changes
- Updated documentation with fixes from @VisitingOcean and @Rubonnek.
- Fix:
BTProbability
showing incorrect percentage - Editor: Remember collapsed items in task tree
- Fix: Debugger crashes when detached in GDExtension
- Fix: Shortcuts not working in the module version
- Disallow
LimboHSM
transitions to self whenANYSTATE
is used - Improved variable synchronization between base and derived blackboard plans
- Util: New function to decorate output variables (can be used by scripts)
- Better error handling when resolving
_generate_name
Blackboard
:get_var
now complains when variable is missing- GHA: Added Web target to GDExtension workflow
Changes in v1.0-dev3
- Revised
Blackboard
system:- Breaking compatibility: BTPlayer's
blackboard_data
is replaced with newBlackboardPlan
system (see below).- If you have blackboard data defined in BTPlayer or LimboState nodes, you'd need to redefine it using the new system.
- New workflow: Define variables in the
BehaviorTree
resource and override those variables in theBTPlayer
node.- Variables that begin with "_" are considered private and can't be overridden (they are hidden).
- See also: Sharing data using Blackboard.
BlackboardPlan
resource: Stores and manages a collection of variables, and is used to construct newBlackboard
instances.- Define blackboard variables in a
BehaviorTree
resource, using itsBlackboardPlan
property. BTPlayer
also has its ownBlackboardPlan
which extends the behavior treeBlackboardPlan
resource, i.e. variables from the BehaviorTree resource are overridden in the BTPlayer node.
- Define blackboard variables in a
BlackboardPlan
Editor- Accessed with "Manage..." button in the inspector.
- Rename, reposition, and change types and hints of the blackboard variables.
- Specify relevant export hints for the variables.
- Edit default variable values directly in the inspector.
- Binding: Bind variables to object properties using
blackboard.bind_var()
method. - Blackboard variable property editor:
- Used in the blackboard tasks and can be used with custom tasks.
- Note: It is shown for any property that ends with "_var" and also when using
BBParam
-derived parameters.
- Note: It is shown for any property that ends with "_var" and also when using
- Handy property editor that shows an indicator if variable is included in the blackboard.
- Clicking on the indicator takes you straight to the blackboard plan editor and auto-fills variable name if it doesn't exist.
- Also provides a drop-down selection of existing variables.
- Special indicator for variables that begin with "_" (aka private variables).
- Used in the blackboard tasks and can be used with custom tasks.
- These changes are fully compatible with both module and GDExtension builds!
- Breaking compatibility: BTPlayer's
- Other changes
BBVariable
object holds the value of a blackboard variable and its metadata (not exposed to the API).- GHA: Fixed issues with iOS templates build workflow
- Refactored
LimboHSM
andLimboState
code. - Fixed focus issues with BBParam property editor
Changes in v1.0-dev2
- New and improved workaround for the missing
GDVIRTUAL*
macros.- Fixes native method override errors.
@warning_ignore
for custom task methods is no longer needed!
- Add new
BBParam
types. - Refactored
LimboHSM
andLimboState
code. - Fix: icon entries unsorted in GDExtension manifest.
- Editor: Show info dialog about editing project settings in GDExtension.
- Editor: Links to "Creating custom tasks" doc page in the editor and banner improvements.
Changes in v1.0-dev1
- GDExtension support! Check out Using GDExtension
- GDExtension builds are available in GitHub Actions.
BBParam
editor: Handy custom property editor for blackboard parameters.- Support for editing variant-type blackboard parameters (
BBVariant
).
- Support for editing variant-type blackboard parameters (
BTCallMethod
improvements:- Include its delta as an argument. Thanks, @Rubonnek!
- Store result on the blackboard.
- Allow using blackboard variables as arguments for the call.
- Online documentation: Check out online docs here.
- Change Type action: Switch task's type with the "Change Type" context menu action.
- Extract Subtree action: Save subtrees with the "Extract Subtree" context menu action (using
BTSubtree
decorator). - Adding tasks with Shift-click: In Task Palette, Shift+click to add a task after the selected and on the same level as the selected task.
Other improvements
- Fix
LimboDebugger
crash whenEngineDebugger
is not active. Thanks, @Rubonnek! - In the Debugger, show resource info for the currently presented BehaviorTree.
- Fix debugger's "elapsed" column not always has enough space for decimals.
- Open BehaviorTree in the BT editor when its property is clicked in the inspector.
- Fix button focus in the Task Palette.
- Optimize prefetching node references in the
Blackboard
andBTPlayer
. - Various fixes in the class documentation.
- Fix
BTCheckVar
performs erroneous equality check. - Improvements in the build workflows.
New Contributors
Full Changelog: v1.0-rc2...v1.0-rc3
v1.0-rc2
Changes in v1.0-rc2
- Debugger improvements:
- Performance gains: Implement selective tree updates in
BehaviorTreeView
. - New option: Specify update interval.
- Performance gains: Implement selective tree updates in
- New
BTEvaluateExpression
task : Evaluate anExpression
against a node or object (thanks @Rubonnek). - Demo: Various fixes.
- Documentation updates.
- GHA: Add debug build for web target, and add the missing entries in GDExtension manifest.
- Fix crash upon increasing
TypedArray<BBVariant>
size (thanks @Rubonnek). - Fix icons not showing for user tasks in the demo project.
Full Changelog: v1.0-rc1...v1.0-rc2
Previous changes in v1.0 (click to expand)
Changes in v1.0-rc1
- Comprehensive Demo: New extensive demo project includes a tutorial, several examples and a small game.
- Tutorial: Introduction to behavior trees with examples inside the demo project.
- Cut-Copy-Paste: New Cut, Copy and Paste actions in the behavior tree editor.
- BTRunLimit improvements: New
count_policy
property.- Breaking compatibility: RunLimit count policy defaults to counting only successful runs. Previously, both successful and failed runs were counted.
- Visualize BTs In-Game: Exposed
BehaviorTreeView
andBehaviorTreeData
to use with custom in-game tools.BehaviorTreeView
received improvements.
- Other changes
- Updated documentation with fixes from @VisitingOcean and @Rubonnek.
- Fix:
BTProbability
showing incorrect percentage - Editor: Remember collapsed items in task tree
- Fix: Debugger crashes when detached in GDExtension
- Fix: Shortcuts not working in the module version
- Disallow
LimboHSM
transitions to self whenANYSTATE
is used - Improved variable synchronization between base and derived blackboard plans
- Util: New function to decorate output variables (can be used by scripts)
- Better error handling when resolving
_generate_name
Blackboard
:get_var
now complains when variable is missing- GHA: Added Web target to GDExtension workflow
Changes in v1.0-dev3
- Revised
Blackboard
system:- Breaking compatibility: BTPlayer's
blackboard_data
is replaced with newBlackboardPlan
system (see below).- If you have blackboard data defined in BTPlayer or LimboState nodes, you'd need to redefine it using the new system.
- New workflow: Define variables in the
BehaviorTree
resource and override those variables in theBTPlayer
node.- Variables that begin with "_" are considered private and can't be overridden (they are hidden).
- See also: Sharing data using Blackboard.
BlackboardPlan
resource: Stores and manages a collection of variables, and is used to construct newBlackboard
instances.- Define blackboard variables in a
BehaviorTree
resource, using itsBlackboardPlan
property. BTPlayer
also has its ownBlackboardPlan
which extends the behavior treeBlackboardPlan
resource, i.e. variables from the BehaviorTree resource are overridden in the BTPlayer node.
- Define blackboard variables in a
BlackboardPlan
Editor- Accessed with "Manage..." button in the inspector.
- Rename, reposition, and change types and hints of the blackboard variables.
- Specify relevant export hints for the variables.
- Edit default variable values directly in the inspector.
- Binding: Bind variables to object properties using
blackboard.bind_var()
method. - Blackboard variable property editor:
- Used in the blackboard tasks and can be used with custom tasks.
- Note: It is shown for any property that ends with "_var" and also when using
BBParam
-derived parameters.
- Note: It is shown for any property that ends with "_var" and also when using
- Handy property editor that shows an indicator if variable is included in the blackboard.
- Clicking on the indicator takes you straight to the blackboard plan editor and auto-fills variable name if it doesn't exist.
- Also provides a drop-down selection of existing variables.
- Special indicator for variables that begin with "_" (aka private variables).
- Used in the blackboard tasks and can be used with custom tasks.
- These changes are fully compatible with both module and GDExtension builds!
- Breaking compatibility: BTPlayer's
- Other changes
BBVariable
object holds the value of a blackboard variable and its metadata (not exposed to the API).- GHA: Fixed issues with iOS templates build workflow
- Refactored
LimboHSM
andLimboState
code. - Fixed focus issues with BBParam property editor
Changes in v1.0-dev2
- New and improved workaround for the missing
GDVIRTUAL*
macros.- Fixes native method override errors.
@warning_ignore
for custom task methods is no longer needed!
- Add new
BBParam
types. - Refactored
LimboHSM
andLimboState
code. - Fix: icon entries unsorted in GDExtension manifest.
- Editor: Show info dialog about editing project settings in GDExtension.
- Editor: Links to "Creating custom tasks" doc page in the editor and banner improvements.
Changes in v1.0-dev1
- GDExtension support! Check out Using GDExtension
- GDExtension builds are available in GitHub Actions.
BBParam
editor: Handy custom property editor for blackboard parameters.- Support for editing variant-type blackboard parameters (
BBVariant
).
- Support for editing variant-type blackboard parameters (
BTCallMethod
improvements:- Include its delta as an argument. Thanks, @Rubonnek!
- Store result on the blackboard.
- Allow using blackboard variables as arguments for the call.
- Online documentation: Check out online docs here.
- Change Type action: Switch task's type with the "Change Type" context menu action.
- Extract Subtree action: Save subtrees with the "Extract Subtree" context menu action (using
BTSubtree
decorator). - Adding tasks with Shift-click: In Task Palette, Shift+click to add a task after the selected and on the same level as the selected task.
Other improvements
- Fix
LimboDebugger
crash whenEngineDebugger
is not active. Thanks, @Rubonnek! - In the Debugger, show resource info for the currently presented BehaviorTree.
- Fix debugger's "elapsed" column not always has enough space for decimals.
- Open BehaviorTree in the BT editor when its property is clicked in the inspector.
- Fix button focus in the Task Palette.
- Optimize prefetching node references in the
Blackboard
andBTPlayer
. - Various fixes in the class documentation.
- Fix
BTCheckVar
performs erroneous equality check. - Improvements in the build workflows.
v1.0-rc1
Changes in v1.0-rc1
- Comprehensive Demo: New extensive demo project includes a tutorial, several examples and a small game.
- Tutorial: Introduction to behavior trees with examples inside the demo project.
- Cut-Copy-Paste: New Cut, Copy and Paste actions in the behavior tree editor.
- BTRunLimit improvements: New
count_policy
property.- Breaking compatibility: RunLimit count policy defaults to counting only successful runs. Previously, both successful and failed runs were counted.
- Visualize BTs In-Game: Exposed
BehaviorTreeView
andBehaviorTreeData
to use with custom in-game tools.BehaviorTreeView
received improvements.
- Other changes
- Updated documentation with fixes from @VisitingOcean and @Rubonnek.
- Fix:
BTProbability
showing incorrect percentage - Editor: Remember collapsed items in task tree
- Fix: Debugger crashes when detached in GDExtension
- Fix: Shortcuts not working in the module version
- Disallow
LimboHSM
transitions to self whenANYSTATE
is used - Improved variable synchronization between base and derived blackboard plans
- Util: New function to decorate output variables (can be used by scripts)
- Better error handling when resolving
_generate_name
Blackboard
:get_var
now complains when variable is missing- GHA: Added Web target to GDExtension workflow
Previous changes in v1.0 (click to expand)
Changes in v1.0-dev3
- Revised
Blackboard
system:- Breaking compatibility: BTPlayer's
blackboard_data
is replaced with newBlackboardPlan
system (see below).- If you have blackboard data defined in BTPlayer or LimboState nodes, you'd need to redefine it using the new system.
- New workflow: Define variables in the
BehaviorTree
resource and override those variables in theBTPlayer
node.- Variables that begin with "_" are considered private and can't be overridden (they are hidden).
- See also: Sharing data using Blackboard.
BlackboardPlan
resource: Stores and manages a collection of variables, and is used to construct newBlackboard
instances.- Define blackboard variables in a
BehaviorTree
resource, using itsBlackboardPlan
property. BTPlayer
also has its ownBlackboardPlan
which extends the behavior treeBlackboardPlan
resource, i.e. variables from the BehaviorTree resource are overridden in the BTPlayer node.
- Define blackboard variables in a
BlackboardPlan
Editor- Accessed with "Manage..." button in the inspector.
- Rename, reposition, and change types and hints of the blackboard variables.
- Specify relevant export hints for the variables.
- Edit default variable values directly in the inspector.
- Binding: Bind variables to object properties using
blackboard.bind_var()
method. - Blackboard variable property editor:
- Used in the blackboard tasks and can be used with custom tasks.
- Note: It is shown for any property that ends with "_var" and also when using
BBParam
-derived parameters.
- Note: It is shown for any property that ends with "_var" and also when using
- Handy property editor that shows an indicator if a variable is included in the blackboard.
- Clicking on the indicator takes you straight to the blackboard plan editor and autofills the variable name if it doesn't exist.
- Also provides a drop-down selection of existing variables.
- Special indicator for variables that begin with "_" (aka private variables).
- Used in the blackboard tasks and can be used with custom tasks.
- These changes are fully compatible with both module and GDExtension builds!
- Breaking compatibility: BTPlayer's
- Other changes
BBVariable
object holds the value of a blackboard variable and its metadata (not exposed to the API).- GHA: Fixed issues with iOS templates build workflow
- Refactored
LimboHSM
andLimboState
code. - Fixed focus issues with BBParam property editor
Changes in v1.0-dev2
- New and improved workaround for the missing
GDVIRTUAL*
macros.- Fixes native method override errors.
@warning_ignore
for custom task methods is no longer needed!
- Add new
BBParam
types. - Refactored
LimboHSM
andLimboState
code. - Fix: icon entries unsorted in GDExtension manifest.
- Editor: Show info dialog about editing project settings in GDExtension.
- Editor: Links to "Creating custom tasks" doc page in the editor and banner improvements.
Changes in v1.0-dev1
- GDExtension support! Check out Using GDExtension
- GDExtension builds are available in GitHub Actions.
BBParam
editor: Handy custom property editor for blackboard parameters.- Support for editing variant-type blackboard parameters (
BBVariant
).
- Support for editing variant-type blackboard parameters (
BTCallMethod
improvements:- Include its delta as an argument. Thanks, @Rubonnek!
- Store result on the blackboard.
- Allow using blackboard variables as arguments for the call.
- Online documentation: Check out online docs here.
- Change Type action: Switch task's type with the "Change Type" context menu action.
- Extract Subtree action: Save subtrees with the "Extract Subtree" context menu action (using
BTSubtree
decorator). - Adding tasks with Shift-click: In Task Palette, Shift+click to add a task after the selected and on the same level as the selected task.
Other improvements
- Fix
LimboDebugger
crash whenEngineDebugger
is not active. Thanks, @Rubonnek! - In the Debugger, show resource info for the currently presented BehaviorTree.
- Fix debugger's "elapsed" column not always has enough space for decimals.
- Open BehaviorTree in the BT editor when its property is clicked in the inspector.
- Fix button focus in the Task Palette.
- Optimize prefetching node references in the
Blackboard
andBTPlayer
. - Various fixes in the class documentation.
- Fix
BTCheckVar
performs erroneous equality check. - Improvements in the build workflows.