Releases: limbonaut/limboai
v1.2.2
What's Changed
a5c318b Update class docs
65a1a3d, 5766922 Fix prefetching failing for nodes set directly in BehaviorTree's BlackboardPlan resource
5ac6cda Fix BTSetAgentProperty
name generation
fd1ac1c Fix BBNode::get_value()
crash with a freed object in GDExtension
644c589 Fix BTForEach crash if elements are removed from the array during iteration
1cb8580 Fix mem leaks in the demo
Full Changelog: v1.2.1...v1.2.2
v1.2.1
What's Changed
- Fix custom scene root is not used in BTPlayer and BTState by @limbonaut in #202
- Fix editor setting initialization for GDExtensions by @monxa in #204
- Generalize EDITOR_DEF macro to fix potential editor setting issues by @monxa in #205
- Override _to_string() to give useful info about objects in GDExtension by @limbonaut in #206
New Contributors
Full Changelog: v1.2.0...v1.2.1
v1.2.0
Good News, Everyone! 🎉
LimboAI version 1.2.0 is out! This release focuses on the shiny new Godot Engine 4.3 and also brings a bunch of improvements and fixes. Due to the use of a newer API, it is no longer compatible with Godot 4.2.
While there are some breaking changes, most projects should remain unaffected. You can check the details in the linked ⚡PR below.
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
- Don't overwrite exisiting blackboard variables in
BTState
upon initialization by @limbonaut in #198 - GHA: .NET build workflow fixes by @limbonaut in #199
- GHA: Build additional .NET templates - Android & iOS by @limbonaut in #200
- Fix editor undo polluting scene history if
BehaviorTree
is not saved to a file by @limbonaut in #201
New Contributors
- @ydeltastar made their first contribution in #161
Full Changelog: v1.1.0...v1.2.0
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