Logic Driver Lite Patch Notes¶
April 13th, 2022 - Unreal Engine 4.26 - 5.0
- 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.
- Fixed an edge case crash when force deleting multiple assets.
February 17th, 2022 - Unreal Engine 4.26 - 4.27 | 5.0 EA
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.
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.
StateChangeAuthorityis used to standardize behavior for both transitions and any manual state change calls. This replaces
- Listen server configurations will be more consistent with dedicated server behavior.
- Only owning clients will receive RPCs unless
- Replicated variables within state machine blueprints and references are now supported.
- See the updated Networking Guide for more information.
Retrieve and Set States by Qualified Name¶
States can be retrieved and set by their fully qualified name.
- Added GetStateInstanceByQualifiedName.
- Added SwitchActiveStateByQualifiedName.
- The state tree picker UI is only available in Pro as it requires construction scripts to generate the selection.
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. 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.
- This will especially benefit Lite as all nodes use the default node instance.
- See the Performance Guide's Node Instance 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.
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.
Guid Redirect Mapto state machine instances. This accepts an old
PathGuidas the key and the new
PathGuidas the value. A PathGuid is the GUID that is returned from
GetGuidat run-time. This is the preferred solution for redirecting GUIDs and must be maintained on the primary instance, not on individual references.
NodeGuidto 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¶
State machine references can have their double click behavior customized under Editor Preferences to either open the local graph or an external graph.
- 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.
- 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
bDisplayTransitionPriorityunder Editor Preferences.
- 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 slate refresh time.
- AnyState transitions are now compiled into the final blueprint even if they are always false.
- Fixed intermittent cooking error caused by the state machine component.
Replace Withnot clearing the details panel of stale data.
- 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 removing a native delegate from code causing a crash when loading a state machine it was bound in.
Deprecated and Redirected¶
These properties are automatically renamed in blueprints. However, C++ code will give deprecation warnings until it is updated.
NetworkTransitionConfigurationis now StateChangeAuthority.
- StateChangeAuthority does everything NetworkTransitionConfiguration did, but also impacts behavior over manual state changes and general commands, like Start and Stop.
NetworkStateConfigurationis now NetworkStateExecution.
- The functionality is the same.
bTakeTransitionsFromServerOnlyis 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.
GetRootStateMachineInstancehas been renamed to GetRootStateMachineNodeInstance.
GetMasterReferenceOwnerhas been renamed to GetPrimaryReferenceOwner.
GetMasterReferenceOwnerConsthas been renamed to GetPrimaryReferenceOwnerConst.
These properties are no longer used and will give errors or warnings until they are removed from blueprints and C++.
- Completely removed
bReuseReferencefrom state machine references. This is legacy behavior that is incompatible with many features and is no longer supported.
September 24th, 2021 - Unreal Engine 4.26 - 4.27
- Adjusted shutdown sequence to avoid blueprint runtime errors from unbinding autobound transitions.
- Fixed a possible linkerload crash.
- 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.
July 31st, 2021 - Unreal Engine 4.26
- 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.
- 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.
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.
States by Name¶
- Added SwitchToLinkedStateByName, GetNextStateByName, GetPreviousStateByName to StateInstance_Base
- Added GetContainedStateByName to StateMachineClasses.
- 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.
- Added project setting
Default New Transitions to Trueto default newly placed transitions to true.
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 connected states.
Added Default Node Property Blueprint Setters¶
- Default node instance properties have been assigned public C++/Blueprint Getters and Setters that will properly update the node values.
- The original properties are changing from
Privateso any C++ code that accesses them will have to be updated.
- This is unlikely to impact Lite users and mostly serves to keep the API in sync with Pro.
- Added state name restrictions to help with invalid characters that can cause problems at different points in the UE pipeline.
bRestrictInvalidCharactersto project settings, defaults to true.
- Component initialization improvements.
- Components will free their instance reference on shutdown.
- Improved abstract class handling.
OnStateMachineInitialStateLoadednative 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.
- Copying and pasting states should correctly increment their name count now.
- Fixed edge case of state machine graphs being null during creation and duplication.
- Fixed state machine components not replicating properly when used in Child Actor Components.
EvaluateTransitionsnot working when called from the active state's graph.
CreateEventbutton not working and potentially crashing.
- Fixed issues when the same autobound event is used to trigger multiple transitions from the same state.
May 15th, 2021 - Unreal Engine 4.25 - 4.26
- Added support for Electronic Nodes 3.2.
March 8th, 2021 - Unreal Engine 4.25 - 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.
December 18th, 2020 - Unreal Engine 4.25 - 4.26
- Fixed autobound transition delegates not refreshing on duplicated state machine blueprints.
December 3rd, 2020 - Unreal Engine 4.25 - 4.26
Pro Feature Auto-Binding Event Transitions Now Available for Lite¶
- 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.
- Delegates on the context can also be bound to.
- The context class must be chosen as this information is only known at run-time.
Pro Feature Get Node Instance Available for Lite¶
- Each node has a node instance which can be retrieved using GetNodeInstance.
- From here additional information and commands for a node are available. Note that creating custom node classes is not supported in Lite.
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.
Added State Machine Flag to Wait For End State¶
bWaitForEndStateto 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.
State Information Icons¶
- States will display an icon when they are impacted by an
AnyStatenode, an FSM that has
bWaitForEndStateset, or an FSM with an intermediate graph.
- These can be disabled with a new editor setting
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.
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.
- Added support for Electronic Nodes plugin in state machine K2 graphs.
- Improved compatibility with engine plugins by allowing blueprint menu extenders in state machine blueprints. (Configurable under Project Editor settings)
Create Child Blueprint Classcontext menu option now available for blueprint assets.
- State machine components with replication disabled will behave consistently for client and server domains.
On State Machine Startwill call the parent node by default.
On Transition Enteredwill no longer change the transition color by default.
- Deprecated GetActiveStateName
- Deprecated GetNestedActiveStateName
- Deprecated GetActiveStateGuid
- Deprecated GetNestedActiveStateGuid
- Deprecated GetAllCurrentStateGuids
- Deprecated GetActiveStateInstance
- Fixed compile issues with Any State transitions containing manually bound events.
OnRootStateMachineStopfiring too many times when used in references.
- Fixed conduits used as entry states not calling their initialize and shutdown nodes.
- Reduced flicker on transitions when redrawing the state machine graph.
- Reduced instances where stale debug data will display when opening a graph.
- Fixed possible crash when compiling a state machine blueprint on a stand alone development build.
- Renamed logging macros to prevent possible project redefinition.
July 11th, 2020 - Unreal Engine 4.23 - 4.25
- New EvaluateTransitions Method available on SMInstances.
- This can be used with manual event transitions to disable tick on the state machine.
Priorityis now available from
- 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.
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).
TransitionResetTimeSecondsto components which dictates the time to maintain the transition buffer over replication. Setting it to 0 is equivalent of the old behavior.
- 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.
- Corrected Any States improperly adding transitions by default to their immediate connected states when they had more than one connected state.
SetCanEverTickwill work properly when the default tick is disabled and the sm is used by an actor component.
May 25th, 2020 - Unreal Engine 4.23 - 4.25