Skip to content

Logic Driver Pro Patch Notes


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.
  1. 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 the OnStateMachineInitialized 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.

SampleContent

  • The sample content contains Templates and Examples.
    • 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.

UtilityLauncher

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.

NamedTransitions

  • Added GetOutgoingTransitionByName, GetIncomingTransitionByName, and SwitchToLinkedStateByTransitionName to SMStateInstance_Base.
  • Added DisplayDefaultTransitionName and DisplayCustomTransitionName 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.

ObjectPinThumbnails

  • 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 and IsStateMachineInEndState() to SMStateMachineInstance. See deprecations for more info.
  • Added IsStopping() to SMInstances.
  • Nodes can be renamed from editor construction scripts, using the ISMEditorGraphNodeInterface's SetNodeName() and GetNodeName()
  • Recognized DisplayAfter meta specifier.
  • Recognized NotPlaceable class specifier.
  • Added DefaultStateMachineBlueprintParentClass to project editor settings.
  • Added DefaultStateMachineBlueprintNamePrefix and DefaultNodeBlueprintNamePrefix 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.
  • Deprecated USMInstance::GetStateMachineClass() and SetStateMachineClass() in favor of GetRootStateMachineNodeClass() and SetRootStateMachineNodeClass().
  • Deprecated USMBlueprintUtils::K2_CreateStateMachineInstancePure(). This has been soft deprecated for multiple versions now in favor of the execution version.
  • Deprecated USMStateMachineInstance::GetAllowedStates() in favor of GetAllowedNodes.
  • Deprecated USMStateMachineInstance::StatePlacementRules in favor of NodePlacementRules.
    • Requires C++ usage updated.
  • Deprecated virtual method IsRegisteredWithContextMenu(). This is no longer used and if you were overriding this you now need to set bRegisterWithContextMenu in the C++ ctor instead.
  • Deprecated virtual method HideFromContextMenuIfRulesFail(). This is no longer used and if you were overriding this you now need to set bHideFromContextMenuIfRulesFail 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 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 and GetAllTransitionInstances 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.

CompileWarning

A special state node which represents another node in the same FSM scope. Accepts input transitions only and does not exist at run-time.

LinkState

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.

Search (Beta)

Added new API and UI supporting find and replace within Logic Driver assets.

Search

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.

PropertyNotification

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.

RichText RichTextSettings

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.

ExposedPropertyOverrides

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.

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).
    • ExposedPropertyOverrides
  • 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 of USMInstance. 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.
  • 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.
  • 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.

TransitionStack

  • 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.

ReferenceTemplate

  • 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.

Dynamic

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.

AnyStateTagsOverview

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 replaces NetworkTransitionConfiguration.
  • 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.

Categories

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.

StatePicker

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.

CreateStateMachineAsyncInstance

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.

CreateStateMachineInstance

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.

FastPath

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.

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.

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 old PathGuid as the key and the new PathGuid as the value. A PathGuid is the GUID that is returned from GetGuid 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.

DoubleClickSetting

  • 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.
  • Transition Priority is now displayed above transition icons.
    • Can be configured with bDisplayTransitionPriority under Editor Preferences.
  • Transition background is now removed on custom icons.
    • Can be configured with bShowBackgroundOnCustomIcon.
  • 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 before OnStateEnd.
  • 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.

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.

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 asbRunParallel 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 to Private 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

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 with OnStateBegin evaluation. Added EvalGraphPropertiesOnInitialize and EvalGraphsOnTransitionEval 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 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
  1. Copy the transition.
  2. Select two states in order of "From" to "To".
  3. Paste to connect the selected states with the pasted transition.
  4. 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.
  • State stack names are now displayed.
    • Added bDisplayStateStackClassNames to editor options, defaults to true.
  • Added simple animations to states when they're placed.
    • Added Enable Animations to editor settings.
  • 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...

https://i.imgur.com/S6C8CET.png

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 and Copy and Merge States are available.
  • When cutting, inner transitions between the merged states are destroyed and outer transitions are preserved.

https://i.imgur.com/NpVICwM.gif

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.

https://i.imgur.com/URIJi7x.gif

Stats System Profiling

  • Added system profiling for key areas that impact performance.

https://i.imgur.com/WqvMKmS.png https://i.imgur.com/4PJPTgr.png

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.

https://i.imgur.com/ExhROPL.png

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.

https://i.imgur.com/KHcZJiw.png

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 and GetCanEvaluate 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 and OnRootStateMachineStop 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.

https://i.imgur.com/reTspVS.png

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.

https://i.imgur.com/sKDeuJv.png

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 has bWaitForEndState set, or an FSM with an intermediate graph.
  • These can be disabled with a new editor setting bDisableVisualCues.

https://i.imgur.com/sNXJ9P1.png

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

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 or GetIncomingTransitions 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 from GetTransitionInfo.

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 of SMSystemModule.
  • 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 and GetGuid to node instances.
  • Added documentation links to blueprint editor help menus.

/images/Tooltip.jpg

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

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.

https://i.imgur.com/jueMghw.png

  • 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, and bStartOnBeginPlay now have Expose 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 to On 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.