Logic Driver Lite Patch Notes¶
Update Guide¶
Version 1.7.1¶
November 19th, 2024 - Unreal Engine 5.5
- Fixed runtime crash on tick during garbage collection in UE 5.5.
Version 1.7.0¶
November 13th, 2024 - Unreal Engine 5.5
- Added support for UE 5.5.
Version 1.6.3¶
July 8th, 2024 - Unreal Engine 5.4
- Fixed enabling
Replicate as Reference
breaking client state machines.
Version 1.6.2¶
April 23rd, 2024 - Unreal Engine 5.4
- Fixed entry nodes having the wrong context menu options.
- Added UE 5.4 support.
Version 1.6.1¶
November 16th, 2023 - Unreal Engine 5.3
- Fixed GUID cache issues and warnings initializing state machine references.
- Fixed crash when deprecating an autobound delegate.
Version 1.6.0¶
September 6th, 2023 - Unreal Engine 5.3
Enhancements¶
- Added
IsEndState()
to SMStateInstance_Base andIsStateMachineInEndState()
to SMStateMachineInstance. See deprecations for more info. - Added
IsStopping()
to SMInstances. - Added
DefaultStateMachineBlueprintParentClass
to project editor settings. - Added
DefaultStateMachineBlueprintNamePrefix
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.
- 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. - Raw object ptr member properties and some method signatures have been updated to use TObjectPtr. It's unlikely this change will impact licensee code.
Bug Fixes¶
- 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 component events not firing if its SMInstance triggers events from OnStateMachineInitialized.
- 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 editor monolithic linking build blockers and runtime crashes.
Deprecations¶
Most of these deprecations are more likely to impact Pro usage.
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
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 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 1.5.3¶
April 27th, 2023 - Unreal Engine 5.0 - 5.2
- 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 ComponentOwner being null on initial replication when dynamically creating the component.
- Fixed variables not displaying their color in UE5.
Version 1.5.2¶
March 1st, 2023 - Unreal Engine 5.0 - 5.1
- Fixed possible crash during InitializeGraphFunctions when using state machine reference templates.
- Fixed
GetAllStateInstances
andGetAllTransitionInstances
not working from state machine references. - 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 compile issue when using the AngelScript Editor causing a crash at run-time.
Version 1.5.1¶
December 21st, 2022 - Unreal Engine 5.0 - 5.1
- Fixed the debug object not persisting when opening references.
- Fixed modifying a parent state machine and starting PIE throwing a BP compiler error.
- Fixed
FindOldestParentBlueprint
not returning the correct parent. - Fixed crash when initializing a state machine reference that has no entry state.
Version 1.5.0¶
November 20th, 2022 - Unreal Engine 5.0 - 5.1
New Features¶
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.
Enhancements¶
Optimizations¶
Initialize Sequence¶
Optimize the Initialize
function on state machine instances by offloading work to the compiler and better caching information during initialize.
- 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.
- 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.
Misc¶
- Added wizard for creating new state machine assets.
- Added
OnStateMachineShutdown
override to SMInstances and components. - Automatically update network settings on pawn possession change.
SetCanEverTick
will now update the component's network tick settings if called from the primary instance.
Bug Fixes¶
- Fixed long-standing issue of the debug filter not always persisting between PIE sessions.
- Fixed possible crash when a state machine with references is destroyed.
- 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 1.4.1¶
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.
Version 1.4.0¶
February 17th, 2022 - Unreal Engine 4.26 - 4.27 | 5.0 EA
New Features¶
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.
- 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.
-
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¶
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.
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
- 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.
Bug Fixes¶
- Fixed intermittent cooking error caused by the state machine component.
- Fixed
OnStateShutdown
firing beforeOnStateEnd
. - Fixed
Replace With
not 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.
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 1.3.1¶
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.
Version 1.3.0¶
July 31st, 2021 - Unreal Engine 4.26
New Features¶
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.
Enhancements¶
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.
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.
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.
- Added project setting
Default New Transitions to True
to 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
Public
toPrivate
so 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.
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
- Component initialization improvements.
- Components will free their instance reference on shutdown.
- 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¶
- 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.
- 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 1.2.3¶
May 15th, 2021 - Unreal Engine 4.25 - 4.26
- Added support for Electronic Nodes 3.2.
Version 1.2.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.
Version 1.2.1¶
December 18th, 2020 - Unreal Engine 4.25 - 4.26
- Fixed autobound transition delegates not refreshing on duplicated state machine blueprints.
Version 1.2.0¶
December 3rd, 2020 - Unreal Engine 4.25 - 4.26
New Features¶
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.
Enhancements¶
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.
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
.
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.
Misc¶
- 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 Class
context menu option now available for blueprint assets.- 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.- Added
SetCanEvaluate
andGetCanEvaluate
to conduits.
Deprecation¶
- Deprecated GetActiveStateName
- Deprecated GetNestedActiveStateName
- Deprecated GetActiveStateGuid
- Deprecated GetNestedActiveStateGuid
- Deprecated GetAllCurrentStateGuids
- Deprecated GetActiveStateInstance
Bug Fixes¶
- Fixed compile issues with Any State transitions containing manually bound events.
- Fixed
OnRootStateMachineStart
andOnRootStateMachineStop
firing 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.
Version 1.1.0¶
July 11th, 2020 - Unreal Engine 4.23 - 4.25
Enhancements¶
Transitions¶
- New EvaluateTransitions Method available on SMInstances.
- This can be used with manual event transitions to disable tick on the state machine.
- 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.
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.
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.
- 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 1.0.0¶
May 25th, 2020 - Unreal Engine 4.23 - 4.25
Initial release.