Release Notes - v2¶
2.2.6¶
Changed
- Updated Documentation.pdf
Fixed
- Fixed the issue where decisions without targets were run once per target. Now, they are only run once per decision-making update.
Caution
This update has changed some file names, so you must delete the old packages before upgrading. Check UpgradeGuide for instructions on how to upgrade.
2.2.4¶
Changed
- Unregistered
NormalizedInputChanged
in theInputNormalizationItemViewModel
because it was unnesssary
Fixed
- Fixed a build error caused by including editor-specific code (
EnumFlagsField
) in the build process.
2.2.3¶
Changed
- Unbound cell items in ListViews.
Fixed
- Fixed issue where
asset = null
when exiting Play Mode and entering Edit Mode - Fixed bug where the Consideration tab wasn’t updating the response curve.
2.2.2¶
Changed
- Added support for Enums with the
FlagsAttribute
. - Improved capturing of values from input fields (
IntegerField
,FloatField
,Vector3Field
, etc.) used for undo/redo functionality.
2.2.1¶
Added
- Added a new example to demonstrate the Entity Lifecycle. After upgrading, ensure to update the example scenes to access it.
- Added lifecycle event functions to
EntityFacade
. You can override these functions to receive notifications when lifecycle events occur.EntityFacade.OnRegistered()
EntityFacade.OnUnregistered()
EntityFacade.OnActivated()
EntityFacade.OnDeactivated()
EntityFacade.OnEnabled()
EntityFacade.OnDisabled()
EntityFacade.OnDestroyed()
- Added support for
GameObject.SetActive
andGameObject.Destroy
. Starting from v2.2.1, you can safely call these functions outside of action tasks. However, if you need to activate/deactivate/destroy utility entities within action tasks, you still have to useEntityFacade.SetActive
andEntityFacade.Destroy
. These functions will be queued to run after all action tasks have executed. - Added functions that should be used from outside of action tasks. They will be run immediately without queueing.
EntityController.RegisterImmediate()
EntityController.UnregisterImmediate()
EntityController.SetEnableImmediate()
EntityController.EnableImmediate()
EntityController.DisableImmediate()
EntityFacade.RegisterImmediate()
EntityFacade.UnregisterImmediate()
EntityFacade.SetEnableImmediate()
EntityFacade.EnableImmediate()
EntityFacade.DisableImmediate()
Changed
- Group built-in Blackboard variables into categories by using the
Category
attribute.
Fixed
- Fixed a build error caused by including editor-specific code in the build process.
2.2.0¶
Breaking Changes
This version may break your project, so please back up your project before upgrading. Note that you should delete the old package folders first.
New Features
- Added a Lock Button to the Intelligence Editor to lock the editor window on a specific Utility Agent, preventing changes when clicking on another Utility Agent or GameObjects.
- Added JSON Attributes to rename fields, classes and namespaces in serialized JSON:
ClassFormerlySerializedAs
FieldFormerlySerializedAs
- Added Field Attributes to show/hide and group fields in the Intelligence Editor:
ShowIf
HideIf
FoldoutGroup
BoxGroup
- Added a Category Field to Inputs, Input Normalizations, Considerations, Target Filters, Decisions, Blackboard Variables to group them into categories in the Intelligence Editor.
Added
- Added the ability to close the Intelligence Editor by pressing the Escape button (Thanks David).
- Added the ability to rename list items (Decision Makers, Decisions, Considerations, …) by pressing the F2 button.
- Added support for
CategoryAttribute
in Target Filters and Blackboard Variables.
Changed
- Improved UI styles of Inteligence Editor (both Dark theme and Light theme).
- Moved
CategoryAttribute
from namespaceCarlosLab.UtilityIntelligence.Attributes
to namespaceCarlosLab.Common.Attributes
.
Fixed
- New Decision Makers, Decisions, Considerations, etc., cannot be created the first time after creating new Intelligence Assets.
- The Runtime Editor does not display the correct runtime theme.
2.1.1¶
Fixed
- Fixed a bug where the Data Version Not Compatible popup appears when clicking on a newly created Utility Intelligence Asset in Unity 6
2.1.0¶
New Features
- Add a new feature: Decision Making Batch Processing.
Added
- Added these new methods to safely activate/deactive utility entities.
EntityController.SetActive(bool active)
EntityController.Activate()
EntityController.Deactivate()
EntityFacade.SetActive(bool active)
EntityFacade.Activate()
EntityFacade.Deactivate()
- Added these new methods to safely enable/disable utility entities.
EntityController.SetEnabled(bool enable)
EntityFacade.SetEnabled(bool enable)
- Added these properties to retrieve information about utility entities:
EntityController.IsRegistered
EntityController.IsActive
EntityController.IsEnabled
EntityController.IsDestroyed
EntityFacade.Id
EntityFacade.IsRegistered
EntityFacade.IsEnabled
EntityFacade.IsDestroyed
- Added
EntityFacade.DestroyAfter()
to destroy entities with a delay.
Changed
- Updated UtilityAgentSpawner example : Increased the map size to spawn hundreds of agents for testing the decision-making batch processing.
- Updated
Documentation.pdf
to the newest version. - Removed the ability to enable/disable utility entities through
GameObject.SetActive()
because it is not safe when called from action tasks. Instead, useEntityController.SetActive()
orEntityFacade.SetActive()
. - Set the execution order of world controllers to
-100
to make it run before all other scripts. - Restricted names of target filters, decision makers, decisions, considerations, inputs, and input normalizations to allow only letters, numbers, underscores and and a maximum length of 64 characters.
- Renamed
World.ActiveEntities
toWorld.EnabledEntities
- Renamed
UtilityWorld.ActiveAgents
toUtilityWorld.EnabledAgents
- Exposed
UtilityWorld.EnabledAgents
as a public property - Changed the text of serialized generic types:
- 2.0.x:
- 2.1.0:
- 2.0.x:
Fixed
- Fixed a bug where enabling/disabling utility entities from action tasks could break the decision-making process by throwing InvalidOperationException: Collection was modified;
- Fixed a bug where disabling an agent did not abort its current decision, causing it to continue running the decision’s action tasks.
- Fixed a bug where
VariableReference
with an array value type could not be serialized.
Removed
- Remove the FrameworkVersion from UtilityIntelligenceModels because it was unnecessary.
Backup your project before upgrading!
Please backup your project before upgrading. This version changes how generic types are serialized. Although it is automatic, it might still cause unexpected issues for unforeseen reasons.
Note
For those using GameObject.SetActive()
to activate/deactivate utility entities, you have to switch to using EntityController.SetActive()
or EntityFacade.SetActive()
instead to safely activate/deactivate utility entities.
2.0.4¶
Added
- Added ScriptableObjectVariable and ScriptableObjectListVariable to store ScriptableObjects in Blackboard.
Improved
- Improved TargetFilters’ performance.
Changed
- Disabled clearing of the Utility Intelligence Editor when selecting a non-agent GameObject.
Fixed
- Fixed a bug where the current decision does not break its current action to switch to the best decision when the “Keep Running Until Finished” option is not ticked.
2.0.3¶
Added
- Added a bunch of new basic inputs that retrieve values from Blackboard:
- Added a PDF version of the documentation, so you can now read it offline without needing an internet connection.
Fixed
- Fixed a bug where the framework could not deserialize inputs if their values types were changed, such as from
Input<bool>
toInput<float>
.
2.0.2¶
Fixed
- Fixed bug where the File Menu Toolbar could not be used because the Data Version is Not Compatible popup showed repeatedly if the data version of Utility Intelligence Assets was older than the framework.
- Fixed NullReferenceException that occurred when agents made decisions at runtime if the decision list of decision makers was empty.
- Fixed NullReferenceException that occured when using the File Menu Toolbar without selecting a Utility Intelligence Asset.
Removed
- Removed the FrameworkVersion from Utility Intelligence Assets because it was unnecessary.
2.0.1¶
Fixed
- Fixed a bug where removing a consideration in the ConsiderationTab did not clear the ConsiderationView in the IntelligenceTab and caused a
NullReferenceException
inInputNormalizationViewIntelligenceTab
andInputValueViewIntelligenceTab
when trying to access the removed consideration view model. - Fixed a bug where removing in the DecisionTab did not clear the ActionTaskView in the IntelligenceTab
2.0.0¶
Note
Starting with v2, this plugin has been moved from the Assets folder to the Packages folder to manage dependencies and track versions more easily.
To upgrade from v1 to v2, please read the Upgrade Guide.
New Features
- Add a new feature: Runtime Editor
Added
- Added a lot of new ExampleScenes.
- Added two new tabs to the Intelligence Editor: Decision Tab and Input Normalization Tab
- Added HasNoTarget and EnableCachePerTarget toggles for decisions, considerations, input normalizations and inputs to enable caching of their calculated results, thereby eliminating unnecessary recalculations.
- Supported serializing LayerMask. Starting from v2, you can edit all
LayerMask
fields in the Utility Intelligence Editor, and all the changes will be serialized to JSON and saved to Utility Intelligene Asset. - Added
NavMeshAgentVariable
andAnimatorVariable
to storeNavMeshAgent
andAnimator
in Blackboard - Added
CategoryAttribute
to categorize the action tasks, inputs and input normalizations. - Added
Blackboard.TryGetVariable()
- Added these new methods to safely Enable/Disable utility entities.
EntityController.Enable()
EntityController.Disable()
EntityFacade.Enable()
EntityFacade.Disable()
- Add some new target properties to the action tasks:
- TargetFacade
- TargetAgent
- TargetEntity
- TargetTransform
- TargetGameObject
- Added a lot of new classes to the built-in library:
- Action Tasks
- Animator
- SetBool
- SetFloat
- SetInteger
- SetTrigger
- WaitUntilAnimationFinished
- NavMeshAgent
- ChaseTarget
- MoveAwayFromTarget
- Patrol
- FaceTarget
- FaceTargetForever
- StartCooldown
- Animator
- Inputs
- CooldownElapsedTimeInput
- RaycastToTargetInput
- Input Normalizations
- IsInCooldownNormalization
- Action Tasks
- Added DecisionInfo prefab to show which decision has been chosen.
Improved
- Improved performance when calling Unity Event Functions in action tasks. Previously, they were called for all the action tasks across all decisions. Currently, we only call them for the action tasks of the chosen decision.
- LateUpdate
- FixedUpdate
- OnCollisionEnter
- OnCollisionStay
- OnCollisionExit
- …
- Categorize the inputs, input normalizations based on its input value type and
CategoryAttribute
. Note that theCategoryAttribute
will take priority.
- Categorize the action tasks based on its
CategoryAttribute
.
- Auto save the widths of the panes in the Utility Intelligene Editor after they have been resized.
Changed
- The Momentum Bonus is no longer fixed at 25%. Now, you can adjust it as desired.
- Renamed
NavMeshMoveTowards
toMoveToTarget
MyDistanceToTargetInput
toDistanceToTargetInput
MoveTowards
toMoveTowardsTarget
- Serialization: When changing type of properties in Inputs, InputNormalizations, ActionTasks and TargetFilters, their values will be reset to the default value of their types.
- Disable Runtime Editing of Decisions, Considerations for safety purposes, as they are prone to errors.
- Disable preview of consideration info when it is discarded in Editor mode.
Fixed
- Fixed a bug where the UtilityIntelligenceEditor did not clear the view when exiting Runtime Mode
- Fixed a bug where renaming a consideration in the Consideration Tab did not update the new consideration name in Decision Tab and Intelligence Tab.
- Fixed a bug where renaming a target filter in the Target Filter Tab did not update the new target filter name in Decision Tab and Intelligence Tab.
- Fixed a bug where renaming and removing a Blackboard variable in the Blackboard Tab did not update the variable references in inputs, input normalizations, target filters and decision tasks.
- Fixed a bug where we cannot undo or redo the
ActionExecuteMode
after it has been changed. - Fixed the delay when transitioning between decisions and action tasks when they are running in sequence.
Created : September 1, 2024