Logic Driver Pro Patch Notes¶
Version 2.8.3¶
July 8th, 2024 - Unreal Engine 5.3-5.4
- Fixed rare crash during kismet compile when using certain property types or containers.
- Fixed enabling
Replicate as Reference
breaking client state machines. - Improved Marketplace license checks to detect and notify when the required UDP Messaging plugin is disabled.
Version 2.8.2¶
April 23rd, 2024 - Unreal Engine 5.1-5.4
- Fixed crash shutting down a state machine initializing async.
- Fixed crash when initializing async during incremental garbage collection in world partition.
- Fixed entry nodes having the wrong context menu options.
- Fixed exposed gameplay tag queries not saving in UE 5.3+. (1)
- Fixed setting a Text Graph string table not automatically refreshing the node in UE 5.3+.
- Additional Marketplace license validation checks have been added to help inform studios of their compliance with the Epic Games content license agreement for code plugins. Please review the updated licensing documentation.
- This is only for Marketplace licensees, not studios licensed directly with Recursoft.
- This is partially an engine level bug which Logic Driver works around but doesn't completely solve. See issue.
Known Issues
Unlocalized string tables assigned to Text Graph properties in UE 5.4 do not work and will return MISSING STRING TABLE ENTRY
. This is an engine level regression from a last minute change introduced to UE 5.4.0, with a fix scheduled for UE 5.4.2. See issue.
Version 2.8.1¶
November 16th, 2023 - Unreal Engine 5.1-5.3
- Fixed GUID cache issues and warnings initializing state machine references.
- Fixed
OnStateMachineInitializedAsync
delegate firing before theOnStateMachineInitialized
event. - Fixed crash when deprecating an autobound delegate.
- Fixed crash when using async initialization and the editor was building static meshes.
- Fixed padding issues with the state picker dropdown UI.
Version 2.8.0¶
August 29th, 2023 - Unreal Engine 5.1-5.3
New Features¶
Included Content Samples¶
Logic Driver Pro now ships with content samples which can be installed to projects.
- The sample content contains
Templates
andExamples
.Templates
contain both template blueprints which can be used within a project as well as sample maps and state machines showing how the template could be used.Examples
serve as basic examples demonstrating particular features.
- The content is based on the previously available GitHub content and has been updated for Unreal Engine 5.
Content can be installed through a new Utility Launcher menu available on the level toolbar.
Named Transitions¶
Transitions can now be renamed through the details panel and the name displayed in the state machine graph. The default behavior is to display renamed transitions on hover.
- Added
GetOutgoingTransitionByName
,GetIncomingTransitionByName
, andSwitchToLinkedStateByTransitionName
to SMStateInstance_Base. - Added
DisplayDefaultTransitionName
andDisplayCustomTransitionName
to editor settings. Default names default to Never, custom names default to OnHover.
Enhancements¶
Object Type Property Thumbnails¶
Exposed object properties now have a custom BP pin for displaying the asset thumbnail. Hovering the thumbnail will show a higher res version. Sound types have a play sound button. Additionally the maximum width of the asset name text box has been extended.
- Play Sound button will either appear over the thumbnail or next to the browse/use buttons if thumbnails are disabled.
- Added
OverrideObjectPins
to project editor settings. - Added
bDisplayThumbnailsByDefault
to project editor settings. - Added
DisplayThumbnail
optional bool to NodeWidgetInfo for blueprint asset configuration. - Recognized
meta = (DisplayThumbnail=true/false)
Read Metadata on Exposed Properties (GameplayTagContainer)¶
Property metadata is now returned from property pins. This benefits pins provided by the engine that read metadata, most notably supporting GameplayTagContainer metadata.
Enhanced Input Support¶
Now that enhanced input is no longer experimental in UE 5.1, official support has been added to state machines. Enhanced input actions in state machine graphs are supported similar to how legacy input actions are supported -- They should be automatically scoped to the corresponding state or transition and only execute when the node is active.
Configure Any State Tags from Editor Construction Scripts¶
A new interface representing USMGraphNode_StateNodeBase is available by calling AsStateBaseInterface
from the USMEditorGraphNodeInterface
. From here GetAnyStateTags
and SetAnyStateTags
interface functions are available.
Rule Improvements¶
The details panel can now restrict which node classes are available in the node class dropdown based on rules.
- Added
AllowedTransitions
to FSMStateMachineNodePlacementValidator. Individual transition rules will also respect this. - Added
bAutoPlaceTransitionIfRulesPass
to transition instances. Defaults to true. - Added
bHideFromDropDownIfRulesFail
to all node instance types. Defaults to false. - Connection rule policy changed to ignore reroute nodes and use the correct To/From state.
- Details panel updated to display a friendly rule name as the element title.
- Details panel reset to default respects rules and
bHideFromDropDownIfRulesFail
. Add Conduit
can now be restricted by rules.- Added concept of Any State to rules through
USMAnyStateInstance
. - The transition class description name property will now be used if a rule autoplaces that transition.
Optimizations¶
Editor Asset Loading¶
Node assets no longer load into memory when opening the graph context menu or making a connection and instead are loaded when instanced in the graph. This can significantly reduce initial load times and memory usage in the editor.
- This means several properties on node instances are now asset registry searchable and node assets need to be resaved. Logic Driver's update process will prompt for this.
- Optimized native derive node class lookup, ~90% faster.
- This required several deprecations, please see the deprecations section.
Editor Construction Script Passes¶
Editor construction scripts now run in only one pass, improving construction performance by almost 50%.
- Added a pre-pass which updates property values from pin values, allowing recently entered values to be recognized from other nodes without requiring a second pass.
- Added
NumConstructionScriptPasses
property to state machine blueprint settings, in case a second pass is required. - The only reason for a second pass now should be if a property modified by one node's construction script needs to be read from another node.
Misc¶
- Added
IsEndState()
to SMStateInstance_Base andIsStateMachineInEndState()
to SMStateMachineInstance. See deprecations for more info. - Added
IsStopping()
to SMInstances. - Nodes can be renamed from editor construction scripts, using the ISMEditorGraphNodeInterface's
SetNodeName()
andGetNodeName()
- Recognized
DisplayAfter
meta specifier. - Recognized
NotPlaceable
class specifier. - Added
DefaultStateMachineBlueprintParentClass
to project editor settings. - Added
DefaultStateMachineBlueprintNamePrefix
andDefaultNodeBlueprintNamePrefix
to project editor settings. - Updated UI for converting to a state machine reference, allowing the parent class to be changed.
- Added
bDefaultNewConduitsToTrue
to project editor settings. - Improved conduit color calculations.
- When configured to eval with transitions they will take on default transition colors.
- When a custom color is assigned, or if they aren't configured to eval with transitions, they will reflect state colors.
- Improved Link State color calculation, better reflecting the linked state's colors.
- Improved transition complex tooltip.
- Added
bCanBeEndState
to states allowing states to never be considered an end state. - Undo/Redo now works with editor construction scripts.
- Optimized GetTransitionByIndex.
- Removed editor restart requirement when disabling OverrideActorSoftReferencePins.
Bug Fixes¶
- Fixed C++ properties exposed to BP not being able to be referenced in text graphs.
- Fixed collapsing a state machine not recognizing the Default Sub State Machine Class in rules.
- Fixed notify state change being called multiple times on state machine references.
- Fixed issues with calling SwitchActiveState on references not setting bHasStarted or calling OnRootStateMachineStart on nodes.
- Fixed an ensure from loading the documentation module when compiling autobound transitions without the editor attached, such as in -game mode.
- Fixed performance issues when GCing CDOs in editor builds.
- Fixed a crash when the preview actor is destroyed on its own tick.
- Fixed a crash when using ResetVariables with stack instances.
- Fixed component events not firing if its SMInstance triggers events from OnStateMachineInitialized.
- Fixed being unable to rename a state when using bShowDisplayNameOnly.
- Fixed transition placement rules incorrectly passing when the required state class isn't loaded.
- Fixed crash when compiling a node class that is used in a parent SM which has a child SM that calls that parent.
- Fixed bFromLinkState not being set correctly on rerouted transitions.
- Fixed LinkState chain icon showing up if there was no linked state destination and crashing when double clicking it. Destroying a destination state now correctly removes itself from the LinkState.
- Fixed renaming a linked state not updating the LinkState node and supporting undo.
- Fixed USMStateMachineInstance::OnEndStateReached not firing in certain circumstances.
- Fixed editor monolithic linking build blockers and runtime crashes.
Breaking C++ Code Changes¶
The following changes have been made to follow best practices, improve licensee use and support with the editor module, and decrease plugin build times and sizes.
TObjectPtr<>¶
Raw object ptr member properties and some method signatures have been updated to use TObjectPtr. It's unlikely this change will impact licensee code.
IWYU Improvements¶
A pass on all modules' header includes has been made, replacing many includes with forward declarations. It's likely projects may need to include more headers. IE, including SMInstance.h
won't include SMTransitionInstance.h
anymore.
Editor Public Header Refactor¶
The SMSystemEditor module has had many of its private headers refactored to public headers, some of which have been separated out into multiple headers.
Private headers are meant for use only within the plugin and do not respect semantic versioning, even if they are exported or inline. They can receive breaking changes during hotfixes and do not use deprecations.
- The focus of the refactor is for headers used for type checking, graph traversal, and use with the SMAssetTools module for graph processing.
- Headers used to extend graph properties are also public. See SMExtendedEditor's TextGraphPropertyNode.
- Limited or removed some editor API exports not intended for use outside of the module.
New public interfaces and accessors have been added for several private classes which are more popular with licensees.
- Added ISMEditorConstructionManager to replace accessing the FSMEditorConstructionManager.
- Added ISMStateMachineBlueprintEditor to replace accessing the FSMBlueprintEditor.
- Added FSMCompilerDelegates to replace accessing the static FSMKismetCompiler delegates.
- Deprecated old delegates and accessors where possible to make this transition easier.
- No longer export FSMKismetCompilerContext, FSMBlueprintEditor, FSMNodeBlueprintEditor, or FSMEditorConstructionManager.
Deprecations¶
Deprecated¶
- Deprecated
USMNodeInstance::IsInEndState()
. This was ambiguous usage and would either check if a state was an end state, a state machine was in an end state, or a transition's previous state was in an end state. Now explicit methods should be called for each case.- Use
USMStateInstance_Base::IsEndState()
to check if a state is an end state. - Use
USMStateMachineInstance::IsStateMachineInEndState()
to check if the state machine is in an end state. - Transitions will need their previous state retrieved, casted to USMStateMachineInstance, and IsStateMachineInEndState called on it.
- This also applies to the equivalent FSMNode methods.
- Note that USMInstance::IsInEndState method is not being renamed currently, as it has no conflicting method names and its naming is consistent with other class methods.
- Use
- Deprecated
USMInstance::GetStateMachineClass()
andSetStateMachineClass()
in favor ofGetRootStateMachineNodeClass()
andSetRootStateMachineNodeClass()
. - Deprecated
USMBlueprintUtils::K2_CreateStateMachineInstancePure()
. This has been soft deprecated for multiple versions now in favor of the execution version. - Deprecated
USMStateMachineInstance::GetAllowedStates()
in favor ofGetAllowedNodes
. - Deprecated
USMStateMachineInstance::StatePlacementRules
in favor ofNodePlacementRules
.- Requires C++ usage updated.
- Deprecated virtual method
IsRegisteredWithContextMenu()
. This is no longer used and if you were overriding this you now need to setbRegisterWithContextMenu
in the C++ ctor instead. - Deprecated virtual method
HideFromContextMenuIfRulesFail()
. This is no longer used and if you were overriding this you now need to setbHideFromContextMenuIfRulesFail
in the C++ ctor instead. - Deprecated
bLetInstanceManageTick
. This is a legacy property which has been intended to be deprecated for some time. It is unlikely to be used and adds unnecessary complexity, and is roadblocking future deprecations and refactoring. It still functions if set to true, but is planned to be removed in a future release. - Deprecated
FSMGraphProperty_Base::GetVerticalDisplayOrder()
. This has been obsolete for several versions now. - The following were deprecated as part of the private editor header refactor:
- Deprecated
FSMEditorConstructionManager::GetInstance()
. - Deprecated
FSMEditorConstructionManager::bDisableConstructionScripts
. - Deprecated
FSMKismetCompilerContext::OnStateMachinePreCompiled
. - Deprecated
FSMKismetCompilerContext::OnStateMachinePostCompiled
. - Deprecated
FSMNodeKismetCompilerContext::OnNodePreCompiled
. - Deprecated
FSMNodeKismetCompilerContext::OnNodePostCompiled
. - Deprecated
FSMBlueprintEditor::OnSelectedNodesChangedEvent
.
- Deprecated
Deprecated Cleanup¶
Removed the following previously deprecated functions. Blueprints and C++ will not compile if these are still used.
- USMInstance::GetActiveStateName
- USMInstance::GetNestedActiveStateName
- USMInstance::GetActiveStateGuid
- USMInstance::GetNestedActiveStateGuid
- USMInstance::GetAllCurrentStateGuids
- USMInstance::GetActiveStateInstance
- USMInstance::GetRootStateMachineInstance
- USMInstance::GetMasterReferenceOwnerConst
- USMInstance::GetMasterReferenceOwner
- USMUtils::InitializeGraphFunctions
- USMUtils::ResetGraphFunctions
- USMUtils::ExecuteGraphFunctions
Version 2.7.5¶
April 27th, 2023 - Unreal Engine 4.27 - 5.2
- Fixed variables not displaying their color in UE5.
- Fixed crash when the state machine component was destroyed the same tick it was initialized.
- Additional fix for a possible crash during InitializeGraphFunctions.
- No longer attempt to show notifications if the application cannot render.
- Fixed multiple Initialize/Shutdown nodes not being called. (Includes using autobound events alongside Initialize and Shutdown nodes)
- Fixed transition stacks from an Any State missing their OwningNode during construction scripts.
- Fixed ComponentOwner being null on initial replication when dynamically creating the component.
Version 2.7.4¶
March 1st, 2023 - Unreal Engine 4.26 - 5.1
- Fixed possible crash during InitializeGraphFunctions when using state machine reference templates.
- Fixed
GetAllStateInstances
andGetAllTransitionInstances
not working from state machine references. - Fixed ensure being tripped with a node class assigned to a state machine reference template.
- Fixed Transition Stack not working from Any State transitions.
- Fixed
OnPreCompileValidate
not running for the primary root state machine node instance. - Fixed compile validation and construction scripts running for each reroute node.
- Fixed reroute nodes not having a correct node owner during editor evaluation.
- Fixed changing a transition class when using previous state delegates resulting in a runtime cast error.
- Fixed undoing setting a transition delegate leaving a null BP node in the graph.
- Transition
Delegate Property Name
now displays the delegate name as a tooltip. - Modifying a state machine reference blueprint will no longer dirty state machine blueprints that reference it.
- Fixed running construction scripts on load dirtying assets.
- Fixed compile issue when using the AngelScript Editor causing a crash at run-time.
- Fixed UE4 nativization failing to package with Text Graph properties.
- Fixed UE4 nativization failing at runtime when using child state machines.
Version 2.7.3¶
January 16th, 2023 - Unreal Engine 4.26 - 5.1
- Fixed Text Graph Properties not evaluating properly when used within state machine references.
- Fixed crash from modifying an array nested inside of a non-exposed struct on a node.
- Fixed editor prompting for checkout of files that weren't dirty on startup.
- Fixed json exporter not always exporting arrays properly.
- Fixed json exporter including unnecessary compiler generated properties.
- Limited
GetStateMachineInstance
warning during editor construction scripts to verbose logging. - The node compiler will now log a warning when an invalid variable name is used since this can cause problems in state machine graphs. This can be disabled through the project editor setting
bRestrictInvalidCharacters
.
Version 2.7.2¶
December 24th, 2022 - Unreal Engine 4.26 - 5.1
- Fixed a regression where the state machine graph would refresh on every change.
- Fixed a case in UE 5.1 where a node's parent editor construction scripts may not run.
Version 2.7.1¶
December 21st, 2022 - Unreal Engine 4.26 - 5.1
- Array index is now displayed on array elements exposed on the node.
- Calling
GetStateMachineInstance
from editor construction scripts will now log a warning since this operation isn't supported. - Fixed crash on editor startup relating to tooltips.
- Fixed references not being able to be visually debugged.
- Fixed the debug object not persisting when opening references.
- Fixed modifying a parent state machine and starting PIE throwing a BP compiler error.
- Fixed changing a text value resetting the localization key.
- Fixed text graphs with string tables losing their settings when using compile-only construction scripts.
- Fixed calling
GetGuid
during editor construction scripts returning a new Guid instead of the correct Guid. - Fixed
Cut & Merge States
not destroying reroute nodes. - Fixed
FindOldestParentBlueprint
not returning the correct parent. - Fixed possible run-time crash on shutdown.
- Fixed crash when diffing blueprints.
- Fixed crash when initializing a state machine reference that has no entry state.
Version 2.7.0¶
November 10th, 2022 - Unreal Engine 4.26 - 5.1
Video¶
New Features¶
Compile Validation¶
Add OnPreCompileValidate
to node classes, an editor only function to allow writing to the blueprint compiler log and signaling the type of log. This can display friendly messages to the designer and prevent blueprints from compiling.
Validation can occur for the entire node or a specific exposed property on the node.
- See the Node Validation Guide.
Link State (Warp Node)¶
A special state node which represents another node in the same FSM scope. Accepts input transitions only and does not exist at run-time.
- See the Link State Guide.
Transition Reroute Nodes¶
Reroute nodes can be added via context menu or by double clicking on a transition. A rerouted transition always represents a single transition and has no impact at run-time.
- See the Reroute Node Guide.
Search (Beta)¶
Added new API and UI supporting find and replace within Logic Driver assets.
Supports:
- Find and replace
- Regex, case sensitive, and word search
- Inline editing through the graph window
- Filter by types
- Sorting
Documentation:
Editor Graph Node and Property Interface¶
During editor construction scripts you can now access the editor graph node interface with Try Get Owning Editor Graph Node.
From the graph node you can retrieve specific editor graph properties. Each property has several functions available for setting notifications. See the Graph Property Node Interface.
Using the interface with construction scripts allows real-time property validation.
Embed Rich Text in Text Graph Properties¶
Rich text can now be displayed within text graph properties. The rich text supports Unreal Engine's UMG rich text.
From a text graph's default settings select the rich text style or decorator classes to assign. This will only be used in the editor. At run-time the original text is output and it is up to your UMG widgets to display rich text.
All rich text will now be removed while editing the text graph. This impacts variables in the graph and they will now show up as {VARIABLE_NAME} when in edit mode.
When not in edit mode and a variable is in between rich style attributes, it will also show up as {VARIABLE_NAME} since Unreal Engine does not support nesting rich styles.
- Inline variables and methods have always used rich text which is why they are impacted.
C++ Asset Tools and Graph Generation¶
State machine assets can now be modified through a new Asset Tools Module.
-
The Asset Manager allows creation of state machine blueprints, setting CDO values, or compiling all blueprints.
-
Graph Generation allows the placement of states and transitions, as well as setting default exposed property values.
State Machine Import/Export (Experimental)¶
Custom importers and exporters can now be registered, allowing a state machine blueprint to be imported and exported to a custom format.
A basic JSON implementation is included with this update which can be used as a reference. It imports and exports state and transition template data -- including default property values -- but does not handle blueprint functions or variables.
Enhancements¶
Variable Customization¶
Configuration of public node properties can now be done directly on the variable details panel. This will replace having to edit the ExposedPropertyOverrides
array on the class defaults.
VariableCustomization can be disabled with the project editor setting bEnableVariableCustomization
since VariableCustomization overrides of Logic Driver will overwrite other plugins customizing variables.
- Note that UE 5.1 offers improved variable customization support for plugins.
Optimizations¶
Initialize Sequence¶
Optimize the Initialize
function on state machine instances by offloading work to the compiler and better caching information during initialize.
Profiling has shown blocking Initialize() calls to complete up to ~60% faster.
- Most Guid calculations are now done during compile significantly reducing overall initialization time. Note this optimization doesn't apply to dynamic state machine references or debug builds.
- Exposed graph properties more efficiently cache their data and initialize ~95% faster.
- UFunction mapping is done during compile saving a FindFunctionByName call at runtime. Note this only benefits non-development builds.
Support for Larger State Machines¶
Exposed functions (K2 entry points) for each node are now stored on the owning SMInstance CDO during compile and mapped to nodes during Initialize. This reduces the struct size embedded into each graph node during compile allowing larger state machines.
- State size reduce by 21%
- Conduit size reduced by 20%
- Transition size reduced by 23%
- State Machine size reduced by 13%
Editor Modification Times¶
- Optimize editor cache invalidation improving modification and compile times.
- Optimize conditional compile requests.
- Optimize paste operations.
Deterministic Generated Classes¶
The blueprint compiler now generates all names and Guids deterministically so blueprint generated classes will stay consistent between compiles. This change is so patch generation won't include generated classes that haven't been modified.
Localization¶
Localization has been improved for Text Graph properties and FText properties.
- Changing a localization setting in the node class defaults will now be used when placing new instances of the node and will also propagate to existing instances of the node.
- Note that turning localization off with empty text does not always propagate correctly; Unreal Engine uses static FText for empty text which has localization enabled.
- Text Graph Localization preview is now supported.
- Construction Scripts can now modify localization of text graph properties.
- FText properties have improved package and key handling. This fixes some cases where duplicate localization text was being gathered.
Instanced Sub-Objects in Packaged Builds¶
Non-exposed C++ properties on a node marked Instanced
should now serialize during cook. This requires the object be created manually - such as through PostEditChangeProperty
- with the outer as or belonging to the node instance template.
- Instanced Maps and Sets are not supported.
Modify State Stack During Editor Construction Scripts¶
States can now be added or removed from the state stack during editor construction scripts.
- Added AddStateToStack
- Added RemoveStateFromStack
- Added ClearStateStack
Node Description and Display Improvements¶
- State Stack names now show the display name.
- Behavior should be identical to how normal state display names are calculated.
- Read Class DisplayName and Description metadata when none is set on the instance.
- Support Category metadata when grouping nodes in the context menu.
- Description can be edited during editor construction scripts.
Misc¶
- Added wizard for creating new state machine assets.
- Node class default property value changes will now propagate to loaded instances without requiring a compile.
- The state picker pin can now be assigned to exposed FString properties in C++ with
meta=(UseLogicDriverStatePicker)
. - Editor Construction Scripts now run on blueprint load.
- Added UI indicator when a text graph is in graph edit mode.
- Added a global
ToTextDynamicFunctionName
to a new Text Graph Editor Project Settings. CreateStateMachineInstanceAsync
in C++ has a return type ofUSMInstance
. This will either be null if it wasn't created, or the not yet initialized instance.- When placing a transition through rules, the furthest child class that passes the rules will now be used instead of the first class found.
- Support node context menu extensions
- Added delegate to broadcast the toolmenu and graph node context when the graph schema is populating the context menu of a graph node.
GetExtendGraphNodeContextMenu
added to ISMSystemEditorModule.
- Added delegate to broadcast the toolmenu and graph node context when the graph schema is populating the context menu of a graph node.
- Support node details panel extensions
- Added delegate to broadcast the DetailBuilder when customizing a node instance on a state machine graph node.
GetExtendNodeInstanceDetails
added to ISMSystemEditorModule.
- Added delegate to broadcast the DetailBuilder when customizing a node instance on a state machine graph node.
- Allow newly placed nodes to collapse categories by default with
Collapse Categories by Default
editor preference. - Added
PropertyPinColorModifier
to editor preferences to customize exposed property pin color. - Added
OnStateMachineShutdown
override to SMInstances and components. - Automatically update network settings on pawn possession change.
- Automatically re-register input during a replicated controller change. (UE5 only)
SetCanEverTick
will now update the component's network tick settings if called from the primary instance.- Default transition classes will now respect
bRunParallel
when being placed.- Contributed by angrybullsstudio.
Bug Fixes¶
- Fixed object property pins crashing when retrieving tooltips after a modification, such as dragging a variable to the pin. (This is a work around of an engine bug)
- Fixed long-standing issue of the debug filter not always persisting between PIE sessions.
- Fixed using the same input actions in transitions causing a loop.
- Fixed input axis events not being scoped to their node in UE5.
- Fixed TextGraph array issues:
- Can't insert/delete/duplicate individual elements.
- Can't paste row.
- Rearranging elements is inconsistent.
- Exception being hit when used in a state stack.
- Fixed general array element details panel issues:
- Public arrays can't have their elements rearranged.
- Duplicating array elements doesn't behave consistently and won't copy graph data.
- Copy/Paste rows is buggy.
- Reset to default not consistent.
- Fixed PostEditChangeProperty always firing on the main node instance instead of the correct stack instance.
- Fixed changing a state class to another with similar exposed properties possibly using a stale template for those properties.
- Fixed being able to assign abstract transition classes in rules.
- Fixed possible crash when a state machine with references is destroyed.
- Fixed upgrading from Logic Driver Lite or Logic Driver Pro 1.x defaulting editor construction scripts to Legacy.
- Fixed Any State transitions not generating a new node guid for that transition.
- Fixed client-only components with replication disabled attempting to make remote calls in a replicated environment.
- Fixed manually switching states not respecting
bEvalTransitionsOnStart
. - Fixed the transition's
OnRootStateMachineStart
firing too many times in state machine references.
Version 2.6.3¶
April 13th, 2022 - Unreal Engine 4.26 - 5.0
- Fixed crash in UE5 when dragging a variable to an exposed node property.
- Fixed replicated state machines not starting after pawn possession and re-initializing the state machine.
- Fixed server owned state machine components not starting when replication is disabled.
Version 2.6.2¶
April 5th, 2022 - Unreal Engine 4.26 - 5.0
- The 5.0 release now supports Input Axis Events.
- Fixed crash when using text graph properties in an array.
- Fixed an edge case crash when force deleting multiple assets.
Version 2.6.1¶
March 8th, 2022 - Unreal Engine 4.26 - 4.27 | 5.0 EA
- Fixed public properties under the default category being able to be collapsed on the node.
- Fixed property graphs not being created properly and potentially crashing when switching a state stack parent class to a child class.
- Fixed internal node classes displaying in the state machine context menu.
Version 2.6.0¶
February 14th, 2022 - Unreal Engine 4.26 - 4.27 | 5.0 EA
New Features¶
Transition Stack¶
Quickly generate an expression to determine which transition classes need to pass for a single transition to be taken.
- Add multiple transition classes to a single transition.
- Supports AND/OR and NOT from the details panel.
- The local graph generates blueprint operator nodes which can be manually modified for more complex expressions.
- See the Transition Stack Guide.
References Support Custom Classes and Public Variables¶
References will now display exposed properties of a custom node class assigned to their reference template.
- Added
Enable Reference Templates by Default
project editor setting. - Reference templates will be enabled automatically if the blueprint already has a custom node class assigned.
- See the Reference Node Class Guide.
Dynamic Reference Creation¶
State machine references can be dynamically created at initialization time by assigning a Dynamic Class Variable. This allows a single reference node be assigned a different state machine blueprint at run-time and can greatly simplify graphs that need to be shared across different actors.
- See the Dynamic Reference Guide.
Any State Scoping with Gameplay Tags¶
Any States now support Gameplay Tag Queries to limit their scope to states with matching tags.
- This is an editor time convenience feature and has no effect at run-time.
- Each Any State icon will now appear on the node it impacts. Double clicking the icon will focus the Any State.
- See the Any State Scoping Guide.
Enhancements¶
New Replication System¶
The replication system has been overhauled and is now more reliable and efficient.
- Replication is now entirely reliable to ensure the same transition path is executed across all domains in the correct order.
- New
StateChangeAuthority
is used to standardize behavior for both transitions and any manual state change calls. This replacesNetworkTransitionConfiguration
. - Listen server configurations will be more consistent with dedicated server behavior.
- Only owning clients will receive RPCs unless
IncludeSimulatedProxies
is enabled. - Replicated variables within state machine blueprints and references are now supported (but individual node classes are not).
- See the updated Networking Guide for more information.
Display Categories for Exposed Variables¶
Non-default categories for public properties will now be displayed on the node. Default properties will appear on the top with category order being maintained below.
The details panel has been updated to display properties under their correct category now.
- Exposed arrays will show up on the top most category, but not nested categories.
Retrieve and Set States by Qualified Name¶
States can be retrieved and set by their fully qualified name. When the class type of the state machine is known, a state picker tree view will be available.
- Added GetStateInstanceByQualifiedName.
- Added SwitchActiveStateByQualifiedName.
- To retrieve the
Run
state above, the fully qualified name would beLocomotion.Run
.
Async Initialization¶
State Machines can now be initialized async. This is a multi-threaded solution to help reduce blocking operations on the game thread. See the Performance Guide's Async Initialization section for more information.
Create State Machine Instance is now an Execution Function¶
An execution function is more appropriate as this is an expensive operation that instantiates and initializes a new state machine.
The original pure method has been renamed and soft deprecated. Going forward using the execution method is the preferred solution. Uses of the old function still work and do not have to be updated.
Fast Path Optimization¶
Running the local blueprint graph can now be avoided in more situations, especially benefiting C++ nodes. When a node avoids using a blueprint graph the fast path symbol will appear.
- See the Performance Guide's Fast Path section.
Default Node Instances Optimization¶
Rather than always instantiate node instances that don't have a custom class assigned, they will instead be loaded only if programmatically accessed. This should reduce memory usage and initialization times.
- See the Performance Guide's Node Instance section.
Default Graph Property Optimization¶
Exposed properties that have only default values can optionally avoid graph evaluation at runtime by unchecking Eval Default Properties
in the node class.
- See the Performance Guide's Public Variable Evaluation section.
Switch States Immediately¶
Several methods of switching states have been updated to occur immediately at the time of execution during the same tick. Previously they could trigger a state change on one tick, but OnStateBegin wouldn't fire until the next tick. These changes will allow more precise control over frame sensitive state changes.
The following methods now execute immediately and have had their behavior slightly updated.
-
Automatic event bound transitions use a new optimized routine to only evaluate and take that specific transition at the time of the event, rather than the old way of performing a full transition evaluation of the state machine.
-
EvaluateFromManuallyBoundEvent has been improved to only evaluate and take the transition it was called for, making the behavior similar to how auto bound events function. When using manual bound events this is the preferred way of triggering evaluation now, instead of calling EvaluateTransitions.
-
Manual state change calls such as SetActive and SwitchToLinkedState will process the change immediately, but can be configured not to if needed.
Manually Assign GUIDs¶
It is now possible to manually configure the GUID to use for a state. This may be necessary if you have to update the structure of a state machine that has run-time save data associated with it.
- Added
Guid Redirect Map
to state machine instances. This accepts an oldPathGuid
as the key and the newPathGuid
as the value. A PathGuid is the GUID that is returned fromGetGuid
at run-time. This is the preferred solution for redirecting GUIDs and must be maintained on the primary instance, not on individual references. - Exposed
NodeGuid
to individual states in the state machine graph. This is only used in the final run-time GUID calculation, and in most circumstances it should not be changed. - See GUID Calculation for more information.
Configurable Node Double Click Behavior¶
Nodes can have their double click behavior customized under Editor Preferences to either open the local graph or an external graph, such as a node blueprint.
- The default behavior for references has changed to always prefer the external state machine blueprint.
- The intermediate reference icon can now be double clicked to open the local graph.
- When opening an external graph the current debug object will be maintained.
Misc¶
- Added StopOnEndPlay to components.
- Added GetStateMachineReference to USMStateMachineInstance.
- Added SwitchToLinkedStateByTransition to state instances.
- Added OnRootStateMachineStart to transition instances.
- Added OnRootStateMachineStop to transition instances.
- Transitions now know if they were placed by an AnyState.
- Added IsTransitionFromAnyState to transition instances.
- Added AreAllOutgoingTransitionsFromAnAnyState to state instances.
- Added AreAllIncomingTransitionsFromAnAnyState to state instances.
- Transition Priority is now displayed above transition icons.
- Can be configured with
bDisplayTransitionPriority
under Editor Preferences.
- Can be configured with
- Transition background is now removed on custom icons.
- Can be configured with
bShowBackgroundOnCustomIcon
.
- Can be configured with
- Improved transition tooltip to display the auto bound event, the condition, and class information.
- Local graph entry nodes and other custom nodes now support break points, pin watches, and pin execution visualization.
- Changed Project Editor settings to use the default config, as this is meant to be shared across teams.
- Improved Text Graph Property efficiency during editor construction scripts.
- Improved slate refresh time.
- Added magnifier button to soft actor reference picker.
- The option to enable the soft actor reference picker has been moved from Editor Preferences to Project Editor settings.
- AnyState transitions are now compiled into the final blueprint even if they are always false.
- Changed
IsRegisteredWithContextMenu
to include native classes by default.
Bug Fixes¶
- Fixed intermittent cooking error caused by the state machine component.
- Fixed
OnStateShutdown
firing beforeOnStateEnd
. - Fixed
GetEntryStates
not working in editor construction scripts. - Fixed
Replace With
not clearing the details panel of stale data. - Fixed input bindings not compiling when connected to a For Each loop.
- Fixed input bindings not compiling in Any State transitions.
- Fixed default values entered into an exposed property requiring graph evaluation when using Legacy construction scripts.
- Fixed nativized state stack failing to load at run-time.
- Fixed state machine references possibly updating states in a different order.
- Fixed local graph entry points not executing a Gate when connected directly to it.
- Fixed incorrect behavior with parallel states triggering other parallel states with event based transitions.
- Fixed removing a native delegate from code causing a crash when loading a state machine it was bound in.
Deprecations¶
Deprecated and Redirected¶
These properties are automatically renamed in blueprints. However, C++ code will give deprecation warnings until it is updated.
NetworkTransitionConfiguration
is now StateChangeAuthority.- StateChangeAuthority does everything NetworkTransitionConfiguration did, but also impacts behavior over manual state changes and general commands, like Start and Stop.
NetworkStateConfiguration
is now NetworkStateExecution.- The functionality is the same.
bTakeTransitionsFromServerOnly
is now bWaitForTransactionsFromServer.- All transactions, not just transitions, will wait for a server response. This may impact behavior when using with manual state changes from the client as the client will remain in its current state until the server broadcasts the change.
Deprecated and Renamed¶
These properties will give warnings in blueprints and C++ until they are updated.
GetRootStateMachineInstance
has been renamed to GetRootStateMachineNodeInstance.GetMasterReferenceOwner
has been renamed to GetPrimaryReferenceOwner.GetMasterReferenceOwnerConst
has been renamed to GetPrimaryReferenceOwnerConst.
Deprecated¶
These properties are no longer used and will give errors or warnings until they are removed from blueprints and C++.
bDiscardTransitionsBeforeInitialize
bReplicateStatesOnLoad
TransitionResetTimeSeconds
MaxTimeToWaitForTransitionUpdate
Removed¶
- Completely removed
bReuseReference
from state machine references. This is legacy behavior that is incompatible with many features and is no longer supported.
Version 2.5.2¶
September 1st, 2021 - Unreal Engine 4.26 - 4.27
- Adjusted shutdown sequence to avoid blueprint runtime errors from unbinding autobound transitions and rare crashes when shutting down the editor.
- Fixed details panel sometimes clearing on modification.
- Fixed a linkerload crash and improved sub-object packaging.
- Fixed several crashes from force deleting node blueprints in use. (Force deleting any class that is in use has an inherit risk to it and should be avoided.)
- Fixed setting a state machine reference intermediate graph, then undoing and saving causing a crash on BP reload.
- Fixed calling GetNodeName on state machine references not returning the correct name.
- Fixed nodes without construction scripts not having their variables read properly from other construction scripts.
- Fixed and polished read only variables. All variable types set to read only should now be dimmed and restricted from editing. Property graphs will be made read only. Context options such as 'Reset Property' and 'Convert to Graph Edit' will be restricted based on status.
Version 2.5.1¶
July 31st, 2021 - Unreal Engine 4.26
- Optimized when game and editor construction scripts run.
- Fixed possible compile time construction script crash.
- Fixed slate related crash with multiple tabs open to the same state machine graph.
- Fixed game construction scripts firing too many times when used with references.
- Fixed Cut & Merge states not always removing the old states.
Version 2.5.0¶
July 21st, 2021 - Unreal Engine 4.26
Video¶
New Features¶
Editor Construction Scripts¶
Customize your node through blueprint scripts in response to user input. Set default values, change node properties, hide variables, and more.
- Node construction scripts will now run in the editor whenever a state machine blueprint is modified.
- When editor construction scripts run an editor time state machine is assembled. This allows methods such as GetOutgoingTransitions to function.
- Game construction scripts now run after all nodes have been instantiated.
- See the Construction Scripts Guide for more information including instructions on upgrading your project to support the new construction scripts.
Preview Mode¶
Preview and test your state machine in the blueprint editor while you design it.
- Added new Preview Mode to the state machine blueprint editor.
- Preview Mode contains a sandbox world where actors can be added and properties configured.
- Simulate the world and debug the state machine.
- See the Preview Mode Guide for more information.
Input Bindings¶
Listen to Input Actions or Input Keys from within your state machine classes. Input events can also trigger transitions.
- State machines and nodes now have input options to enable placement of input keys and actions.
- The correct controller can be found automatically from the context.
- See the Input Guide for more information.
Read Only Variables¶
Variables can be made read only. They will display on the node but cannot be modified.
- BlueprintReadOnly flag is now recognized.
- Added optional ReadOnly flag to variable overrides to allow BlueprintReadWrite variables to be read only on the node.
- Added SetVariableReadOnly Developer Only function to node instances for use in construction scripts.
Hidden Variables¶
Variables can be made hidden. Their graphs will exist but they won't be visible on the node.
- Added optional Hidden flag to variable overrides.
- Added SetVariableHidden Developer Only function to node instances for use in construction scripts.
State History¶
- State changes will record the previous state as a struct containing the state guid, start time stamp, and time in state. Total history size can be configured.
- History is maintained at the top level owning state machine.
- Added GetStateHistory to sm instances.
[Experimental] Reset Variables¶
Reset variables to their default values during run-time when a state is entered or on demand. This is an experimental feature, and should be used with caution.
- Added experimental
Reset Variables on Initialize
advanced option to state class properties. - Added new experimental function Reset Variables.
Enhancements¶
Added Default Node Property Blueprint Setters¶
- Default node instance properties such as
bRunParallel
have been assigned public C++/Blueprint Getters and Setters that will properly update the node values. This will allow most properties to be modified during run-time, with the primary purpose being for construction script use in the editor. - Some properties, such as transition
Priority Order
are restricted to construction use only. - Some editor only properties, such as NodeColor, DisplayName, will have DevelopmentOnly setters.
- The original properties are changing from
Public
toPrivate
so any C++ code that accesses them will have to be updated.
Rules Improvements¶
- Added
USMEntryStateInstance
to represent entry states. - Added
Allow Sub State Machines
to StateMachineClass rules. - Added ability to set default sub state machine class to StateMachineClass rules. (Used when adding a new state machine or collapsing a state machine.)
- Restrict
Convert to State Machine Reference
if rules prevent reference placement.
Added Get Previous Active State¶
- GetPreviousActiveState available on base state nodes.
- Returns the last state active state before the current state became active from the last transition chain.
Added Get Previous Active Transition¶
- GetPreviousActiveTransition available on base state nodes.
- Returns the last transition taken to the current state.
Added Support for Default Array Element Values¶
- Individual exposed array elements will now read their class defaults.
Text Graph Property Enhancements¶
- Default values are now supported.
- String tables are now supported.
- Significantly improved compile times.
- Using graph edit will update the node text.
- Changing
ToText
functions in a node class will automatically update the text graph instances. - Added
ToTextDynamicFunctionName
to the text serializer. This function is looked up dynamically during run-time. This allows any object type (such as a UObject) to be provided to the text graph and still support custom text serialization.
Network Enhancements¶
- Expose timestamps to TransitionInfo structs.
- Added GetServerTimestamp to transition instances.
- Added GetServerTimeInState.
- Optimize transaction cleanup.
- Optimize included guids.
- Optimize initial replication by limiting state replication and always discarding pending transitions when states are initially replicated.
- Added domain configuration for OnTransitionEntered which respects bIncludeSimulatedProxies.
- SetActive now updates proxies that aren't ticking.
Eval Graph Properties Enhancements¶
- Each state stack state now respects its
Auto Eval Exposed Properties
configuration. - Removed
EvalGraphPropertiesOnInitialize
since that is redundant withOnStateBegin
evaluation. AddedEvalGraphPropertiesOnInitialize
andEvalGraphsOnTransitionEval
to Conduits. - EvaluateGraphProperties can now target a specific state in the stack, rather than evaluate all states in the stack each time.
States by Name¶
- Added SwitchToLinkedStateByName, GetNextStateByName, GetPreviousStateByName to StateInstance_Base
- Added GetContainedStateByName to StateMachineClasses.
Added Support for Level Actor Selection on Exposed Actor Soft References¶
Change suggested and submitted by Trevor!
- Graph pins allow selection of Actor Soft References, similar to the details panel view.
- Added
Override Actor Soft Reference Pins
to editor settings to adjust the scope of the override (None, Logic Driver, All Blueprints).
Transition Enhancements¶
- Added DoesTransitionPass to transition instances which evaluates the local transition graph.
- Added EvaluateFromManuallyBoundEvent to simplify manually bound event transitions.
- Renaming a delegate should now refresh autobound events when they are compiled.
- Transition icons can be hidden or moved.
- Added project setting
Default New Transitions to True
to default newly placed transitions to true if they don't have a node class assigned.
Copy and Paste Transitions¶
- Copy the transition.
- Select two states in order of "From" to "To".
- Paste to connect the selected states with the pasted transition.
- Or select another transition and paste, adding the pasted transition to the transition stack.
Misc¶
- Added state name restrictions to help with invalid characters that can cause problems at different points in the UE pipeline.
- Added
bRestrictInvalidCharacters
to project settings, defaults to true.
- Added
- State stack names are now displayed.
- Added
bDisplayStateStackClassNames
to editor options, defaults to true.
- Added
- Added simple animations to states when they're placed.
- Added
Enable Animations
to editor settings.
- Added
- PostEditChangeProperty fires when an exposed property changes.
- Component initialization improvements.
- Components will free their instance reference on shutdown.
- Absolute node graph coordinates are available at runtime. See GetNodePosition.
- Added
Show Display Name Only
option to state nodes to always show their display name instead of the real node name. - Added project editor settings to change the default node classes.
- Improved abstract class handling.
- Added
OnStateMachineInitialStateLoaded
native event called when a state has been successfully loaded. - Added AreInitialStatesSetFromLoad using a replicated variable to detect when a state machine has been loaded from guids. Valid until Stop is called.
- Logging now available in debug and development builds.
Bug Fixes¶
- Fixed same tick parallel state execution not respecting transition order.
- Copying and pasting states should correctly increment their name count now.
- Exposed vectors and rotators can now be reset to defaults.
- Fixed edge case of rotators and vectors getting stuck at 0, 0, 0.
- Fixed edge case of state machine graphs being null during creation and duplication.
- Fixed switching states between inherited node classes preventing variable evaluation.
- Fixed state machine components not replicating properly when used in Child Actor Components.
- Fixed
EvaluateTransitions
not working when called from the active state's graph. - Fixed
CreateEvent
button not working and potentially crashing. - Fixed issues when the same autobound event is used to trigger multiple transitions from the same state.
Version 2.4.7¶
May 15th, 2021 - Unreal Engine 4.24 - 4.26
- Added support for Electronic Nodes 3.2.
- Fixed conduits not evaluating exposed properties on transition evaluation.
- Unchecking AllowParallelEntryStates now correctly clears all connections but one.
Version 2.4.6¶
March 8th, 2021 - Unreal Engine 4.24 - 4.26
- Fixed crash when trying to paste an auto bound transition without both connected states.
- Fixed crash from modifying a parent SM before a newly created child SM is initially compiled.
Version 2.4.5¶
January 11th, 2021 - Unreal Engine 4.24 - 4.26
- Fixed crash when adding a new element to an exposed array.
Version 2.4.4¶
December 18th, 2020 - Unreal Engine 4.24 - 4.26
- Fixed autobound transition delegates not refreshing on duplicated state machine blueprints.
Version 2.4.3¶
December 3rd, 2020 - Unreal Engine 4.24 - 4.26
Enhancements¶
- Transition delegate binding dropdown now searchable.
- Improved compatibility with engine plugins by allowing blueprint menu extenders in state machine blueprints. (Configurable under Project Editor settings)
- Added
GetRootStateMachineInstance
to SMInstances.
Bug Fixes¶
- Fixed possible crash when compiling a state machine blueprint on a stand alone development build.
- Fixed calling SetActive(false) on a state not firing state change events.
- Renamed logging macros to prevent possible project redefinition.
Version 2.4.2¶
November 3rd, 2020 - Unreal Engine 4.24 - 4.25
Enhancements¶
- Added support for Remote Procedure Calls to SMInstances.
- Added
GetComponentOwner
to SMInstances. - Added
OnPostInitialize
Blueprint Implementable Event to components. - Added
GetEntryStates
to SMStateMachineInstances.
Bug Fixes¶
- Fixed parallel states updating more than once from transition events.
- Fixed edge case of OnStateBegin and OnStateEnd being called twice when a transition triggers OnStateEnd, and OnStateEnd also triggers a transition event.
- Renaming a node is no longer a context menu option when the node title is hidden.
Version 2.4.1¶
October 4th, 2020 - Unreal Engine 4.24 - 4.25
- Reduced struct property size in compiled state machines.
- Exposed variable properties reduced by 93%.
- Text graph properties reduced by 87%.
- Added support for Electronic Nodes plugin in state machine K2 graphs.
Version 2.4.0¶
September 14th, 2020 - Unreal Engine 4.24 - 4.25
New Features¶
State Combination¶
State Stack¶
- Multiple state classes can be combined into a single state.
- This can be useful for re-using and executing multiple actions per state.
- This is only valid for custom state classes. Local state graphs are not used in the stack.
- All execution node logic executes in the order the states are placed in the stack.
- State->OnStateBegin, StateStack[0]->OnStateBegin, StateStack[1]->OnStateBegin...
Merge States¶
- Existing state classes can be merged into a single state stack by selecting all desired states and right clicking on the destination state.
Cut and Merge States
andCopy and Merge States
are available.- When cutting, inner transitions between the merged states are destroyed and outer transitions are preserved.
Transition Evaluation Visualization¶
- Transitions that are evaluating are now animated.
- This can be useful for identifying transitions that can be optimized.
- Editor preferences options added to configure this feature.
Stats System Profiling¶
- Added system profiling for key areas that impact performance.
State Machine Logging¶
- State machine instances can enable logging for state changes and when a transition is taken.
Enhancements¶
Multiple Transitions Between the Same States¶
- Transitions can now be stacked multiple times between states.
Previous State Supported for Auto-Bind Events¶
- The previous state's delegates can be bound to by outgoing transitions. The correct class is determined automatically.
Blueprint Graph Evaluation Optimizations¶
- Blueprint local graph evaluation is now avoided for transitions with the following conditions:
- The conditional result node defaults to true.
- The conditional result node defaults to false.
- The conditional result node is connected only to a
Can Enter Transition
node for a transition instance. This is mostly beneficial if your transitions are defined in C++.
On State Initialized and On State Shutdown¶
- States now have optional initialize and shutdown nodes.
- OnStateInitialized fires before transitions are initialized.
- OnStateShutdown fires after transitions are shutdown.
New Asset Version Updater¶
- On startup state machine assets are updated to the newest version and marked dirty automatically.
Misc¶
- The debug object is maintained when opening node blueprints from a state machine graph.
Create Child Blueprint Class
context menu option now available for blueprint assets.- Native properties that are exposed can now be sorted with the meta property
DisplayOrder
. - State machine components with replication disabled will behave consistently for client and server domains.
On State Machine Start
will call the parent node by default.On Transition Entered
will no longer change the transition color by default.- Conduits now evaluate their graph properties during their initialize sequence.
- Added
SetCanEvaluate
andGetCanEvaluate
to conduits. Convert to State Machine Reference
improved to maintain the custom state machine node class.
Bug Fixes¶
- Fixed child state machine components not inheriting their parent template properly.
- Fixed
OnRootStateMachineStart
andOnRootStateMachineStop
firing too many times when used in references. - Fixed conduits used as entry states not calling their initialize and shutdown nodes.
- Node template names are now sanitized. This should prevent a crash when switching node classes on a node that has special characters in its name.
- Reduced flicker on transitions when redrawing the state machine graph.
- Reduced instances where stale debug data will display when opening a graph.
Version 2.3.1¶
August 17th, 2020 - Unreal Engine 4.24 - 4.25
- Fixed newly created nodes sometimes losing some of their details panel values on the first editor reload.
- Fixed compile issues with Any State transitions containing manually bound events.
- Fixed crash when editing a text graph property and replacing a line of text containing a variable, then undoing that action without exiting text edit.
Version 2.3.0¶
July 7th, 2020 - Unreal Engine 4.24 - 4.25
Contains file structure changes and deprecations. Make sure everyone on your project is on the same version.
Video¶
New Features¶
Parallel States¶
- Added support to run multiple active states at once.
- Support for multiple entry point connections.
- Support for transitions to run parallel.
- See the Parallel Guide.
- Added
Stay Active on State Change
to states so they may remain active after taking a transition.
Force Set Active State¶
- State node instances can call
SetActive(bool)
. - This call is replicated.
Added State Machine Flag to Wait For End State¶
- Added
bWaitForEndState
to state machines. - This is an optimized routine that will prevent transitions from being evaluated until the state machine is in an end state.
- If this is a nested FSM and also an end state, then the owning FSM won't be in an end state until the nested FSM is also in one.
Enhancements¶
Node Class Defaults¶
- Most state and transition settings previously only available in the state machine graph are now available in their node classes. This allows you to set defaults such as
bExcludeFromAnyState
at a class level. - All regular nodes will be assigned the default node class now. It is no longer possible to set a null class value.
- Old values are imported into the new system. Please verify your state machines operate normally.
State Information Icons¶
- States will display an icon when they are impacted by an
AnyState
node, an FSM that hasbWaitForEndState
set, or an FSM with an intermediate graph. - These can be disabled with a new editor setting
bDisableVisualCues
.
Improved Transition Replication¶
- When the server is in charge of transitions it is now guaranteed the client will take the same transition path, rather than prioritize being on the current active state(s).
- Added
TransitionResetTimeSeconds
to components which dictates the time to maintain the transition buffer over replication. Setting it to 0 is equivalent of the old behavior.
Improved EvaluateTransitions Method¶
- This method is now available on SMInstances.
- It now properly handles nested FSMs.
Added Bindable Events to Node Classes¶
- Added
OnStateBeginEvent
,OnStateUpdateEvent
,OnStateEndEvent
to states. - Added
OnTransitionEnteredEvent
to transitions.
New Function Events¶
- Added
OnRootStateMachineStopped
to states. - Added
OnEndStateReached
event to state machine classes.
Improved Node Display¶
- Adjusted defaults so node widgets should cover the max size of UE4 pins.
- Added clipping configuration to widget options.
Deprecation¶
- Deprecated GetActiveStateName
- Deprecated GetNestedActiveStateName
- Deprecated GetActiveStateGuid
- Deprecated GetNestedActiveStateGuid
- Deprecated GetAllCurrentStateGuids
- Deprecated GetActiveStateInstance
Bug Fixes¶
- Fixed child sm actor components not inheriting their parent class template.
- Switching an sm actor component class to an sm containing a reference which uses a template should no longer crash.
- Calling
GetOutgoingTransitions
orGetIncomingTransitions
from a node owner that is a state machine reference will now find the correct transitions. - Corrected Any States improperly adding transitions by default to their immediate connected states when they had more than one connected state.
SetCanEverTick
will work properly when the default tick is disabled and the sm is used by an actor component.
Version 2.2.0¶
June 18th, 2020 - Unreal Engine 4.23 - 4.25
Enhancements¶
General¶
- Added
GetIncomingTransitions
to state instances. - Added
GetNodeName
to node instances. - Added
GetAllStateInstances
to SMInstances and to custom State Machine node classes. - Transition
Priority
is now available fromGetTransitionInfo
.
Conduits¶
- Added new project preferences setting to default new conduits to be configured as transitions.
- This is set to enabled by default.
- Added support for Initialize, Shutdown, and Entered nodes in Conduits.
- Conduits and their surrounding transitions initialize at once.
- Conduits configured as transitions will display as active when their path is taken during visual debugging.
Convenience¶
- All runtime log messages should now be prefixed with
LogLogicDriver
instead ofSMSystemModule
. - Compiling a node class will in most cases automatically refresh any nodes in an SMGraph where it is used.
- When a behavior rule fails the tooltip will now explain which class is responsible for the rule.
Bug Fixes¶
- Nested FSMs with exposed variables will properly evaluate their variable graphs when multiple FSMs are present.
- Fixed crash when compiling an SM that is also the base class for a macro library.
- Fixed crash when using sub categories on an exposed variable.
- Fixed edge case of exposed graph property defaults not being properly applied on a paste operation or value reset.
Version 2.1.2¶
June 9th, 2020 - Unreal Engine 4.25
- Fixed custom context blueprint delegates not auto-binding properly in UE 4.25.
Version 2.1.1¶
May 28th, 2020 - Unreal Engine 4.23 - 4.25
Enhancements¶
- Added Node Icon Tint property for custom icons.
Bug Fixes¶
- Fixed potential memory stomp in state machine initialization.
- Fixed crash importing 1.x actor components on a map with level streaming enabled.
- Fixed crash when batch opening multiple node classes.
- Disabling tick evaluation on a state won't prevent auto-binded events from switching states.
- Changing a node icon to another icon with the same name now works.
- Conduits can display custom icons.
Version 2.1.0¶
May 11th, 2020 - Unreal Engine 4.23 - 4.25
When updating it is important everyone working on the same project also updates. Assets saved on this version are not fully compatible with older versions.
Enhancements¶
General¶
- Added user tooltips to graph properties.
- Added
IsActive
andGetGuid
to node instances. - Added documentation links to blueprint editor help menus.
Replication¶
- Added
bIncludeSimulatedProxies
to actor components so actors that aren't possessed by a player controller can execute logic when configured for the client domain. - Improved initial instance replication which should resolve issues when leaving bInitializeOnBeginPlay checked not always starting the state machine on simulated proxies.
- Initial replication now replicates the current state(s) of the authority state machine rather than rely on the default initial state being accurate.
- Can be disabled by unchecking
bReplicateStatesOnLoad
- Can be disabled by unchecking
Ticking Optimization¶
- Actor components are now responsible for ticking their instances.
- Instances that don't need to tick (such as references) never register their tick function.
- Instances no longer tick before they are initialized.
- Added
bLetInstanceManageTick
to components as an advanced option. - Added
bTickBeforeInitialize
to instances as an advanced option. - Added
bTickRegistered
to instances as an advanced option so they can unregister their tick function all together.
Changes¶
- Manually calling the actor component
Initialize
function and not passing in a context will now automatically set the context to the component owner. - Renamed Editor and ProjectEditor settings from State Machine Editor to Logic Driver.
- Deprecated
bCanEnterTransition
of conduit classes. - Creating a new conduit class no longer automatically wires a parent node to CanEnterTransition.
- Instance compile validation skips blueprints that are new or loading.
- Updated custom K2 node pin names to be consistent with UE4 naming conventions. Once you save a state machine on this version you cannot open it in an earlier version of Logic Driver or connections may be broken.
Bug Fixes¶
- Fixed intermittent crash during garbage collection for Stand Alone Game builds.
- Fixed actor component state machine templates from being selectable debug objects.
- Fixed const mismatch on GetNodeIconSize which could prevent compiling from source using strict warnings.
Version 2.0.1¶
April 22nd, 2020 - Unreal Engine 4.23 - 4.24
- Nodes that are impacted by an Any State Node will have their color updated appropriately and additional information displayed on their tooltip.
- Fixed crash for conduits that loop back on themselves and are configured to evaluate as transitions.
- Variables exposed on the node can no longer be edited while in debug mode.
- Added missing button images for TextGraphProperty variables.
Version 2.0.0¶
April 16th, 2020 - Unreal Engine 4.23 - 4.24
New Features¶
Custom Node Classes¶
- Create custom state, state machine, conduit, or transition classes either in C++ or Blueprints and assign them to nodes in a state machine graph.
- When placed in a state machine graph you will still be able to override class logic similar to intermediate reference graphs.
- Search the context menu for
Get Node Instance
in order to get or read values from the class instance.
Behavior¶
- Rules can be assigned to each class to define which connections are allowed and where nodes can be placed.
- This can be used to restrict when nodes show up in a context menu. For example Dialogue Choice nodes can be configured to only be placed from a Dialogue Node.
- Custom transition classes can be automatically placed as well depending on which states are being connected.
Graph Properties¶
Variable Properties¶
- Any member variable on a custom state class can be exposed directly on the node.
- Exposing the variable creates an instanced graph on the node.
- Variables or pure return functions can be drag & dropped on to the node.
- Setting default values here will automatically set the default values of the node template.
- This allows editor specific logic to apply, such as changing the icon based on an enum, number, etc.
- To read the return value of a graph simply use the variable as normal.
Text Graph Property¶
- Creates an instanced graph that returns formatted text.
- Formats state nodes to have an editable text box.
- Drag and drop member variables or pure blueprint functions with a return value over the text box to auto place them in the graph.
- To evaluate the graph you just have to break the struct and retrieve the
Result
text variable.
- The appearance of the widget can be customized through the class defaults in the editor.
Event Transition Triggers¶
- Transitions can now auto bind to multicast delegates in the state machine or on the context.
- When the transition succeeds it will automatically update the state machine which means it's possible to disable tick all together.
- Select the delegate name from a drop down on the transition.
- This will automatically create new event nodes within the transition graph.
- When you compile these nodes automatically expand similar to this.
- Delegates on the context can also be bound to.
- The context class must be chosen as this information is only known at run-time.
Any State¶
- New
Any State
Node available which represents any other state on the graph. - Transitions are automatically duplicated from Any State to all other states in the current FSM scope.
- Nodes can be excluded from being considered for AnyState transitions with
bExcludeFromAnyState
.
Enhancements¶
State Machine Components¶
- Actor components now have template support allowing individual properties of the state machine instance to be set.
- Tick Overrides have been deprecated and their values automatically imported to the template.
- Added
bStartOnBeginPlay
to automatically start state machines on begin play. State Machine Class
,bInitializeOnBeginPlay
, andbStartOnBeginPlay
now haveExpose On Spawn
set.
Conduits¶
- Added
bEvalWithTransitions
to conduits. This allows them to behave similar to anim graph conduits-- They will be treated as a transition and the state you are in won't switch unless the conduit and every connected transition (or connected conduits) pass. - Local conduit graphs now support the general helper nodes available in other graphs.
Ticking and Time¶
- State machine instances are able to automatically manage delta seconds if nothing is passed in during an
Update
call, such as from manual tick handling or using the new autobinding transition events. This requires the context have a valid world. - States can disable transition tick evaluation with
bDisableTickTransitionEvaluation
. - Transitions can disable tick evaluation while allowing auto-binded events to still be processed.
- Transitions now allow multiple Initialize and Shutdown Nodes.
On Root State Machine Start¶
- The old
On State Machine Start
node for intermediate reference graphs has been renamed toOn Root State Machine Start
and is now available for any state type graph.
Validation¶
- Added compile validation and additional warnings to help rare cases of state machine children not updating properly when a parent dependency was modified. These are configurable in a new State Machine Project Editor Settings.
Bug Fixes¶
- Several bug fixes regarding children that call parent state machine graphs.
- Dropping a function on a state machine graph no longer results in a crash.