Logic Driver Pro Patch Notes¶
Update Guide¶
Version 2.6.3¶
April 13th, 2022 - Unreal Engine 4.26 - 5.0
Bug Fixes¶
- 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
Enhancements¶
- The 5.0 release now supports Input Axis Events.
Bug Fixes¶
- 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
Bug Fixes¶
- Fixed public properties under the default category being able to be collapsed on the node.
- Fixed property graphs not being created properly and potentially crashing when switching a state stack parent class to a child class.
- Fixed internal node classes displaying in the state machine context menu.
Version 2.6.0¶
February 14th, 2022 - Unreal Engine 4.26 - 4.27 | 5.0 EA
New Features¶
Transition Stack¶
Quickly generate an expression to determine which transition classes need to pass for a single transition to be taken.
- Add multiple transition classes to a single transition.
- Supports AND/OR and NOT from the details panel.
- The local graph generates blueprint operator nodes which can be manually modified for more complex expressions.
- See the Transition Stack Guide.
References Support Custom Classes and Public Variables¶
References will now display exposed properties of a custom node class assigned to their reference template.
- Added
Enable Reference Templates by Default
project editor setting. - Reference templates will be enabled automatically if the blueprint already has a custom node class assigned.
- See the Reference Node Class Guide.
Dynamic Reference Creation¶
State machine references can be dynamically created at initialization time by assigning a Dynamic Class Variable. This allows a single reference node be assigned a different state machine blueprint at run-time and can greatly simplify graphs that need to be shared across different actors.
- See the Dynamic Reference Guide.
Any State Scoping with Gameplay Tags¶
Any States now support Gameplay Tag Queries to limit their scope to states with matching tags.
- This is an editor time convenience feature and has no effect at run-time.
- Each Any State icon will now appear on the node it impacts. Double clicking the icon will focus the Any State.
- See the Any State Scoping Guide.
Enhancements¶
New Replication System¶
The replication system has been overhauled and is now more reliable and efficient.
- Replication is now entirely reliable to ensure the same transition path is executed across all domains in the correct order.
- New
StateChangeAuthority
is used to standardize behavior for both transitions and any manual state change calls. This replacesNetworkTransitionConfiguration
. - Listen server configurations will be more consistent with dedicated server behavior.
- Only owning clients will receive RPCs unless
IncludeSimulatedProxies
is enabled. - Replicated variables within state machine blueprints and references are now supported (but individual node classes are not).
- See the updated Networking Guide for more information.
Display Categories for Exposed Variables¶
Non-default categories for public properties will now be displayed on the node. Default properties will appear on the top with category order being maintained below.
The details panel has been updated to display properties under their correct category now.
- Exposed arrays will show up on the top most category, but not nested categories.
Retrieve and Set States by Qualified Name¶
States can be retrieved and set by their fully qualified name. When the class type of the state machine is known, a state picker tree view will be available.
- Added GetStateInstanceByQualifiedName.
- Added SwitchActiveStateByQualifiedName.
- To retrieve the
Run
state above, the fully qualified name would beLocomotion.Run
.
Async Initialization¶
State Machines can now be initialized async. This is a multi-threaded solution to help reduce blocking operations on the game thread. See the Performance Guide's Async Initialization section for more information.
Create State Machine Instance is now an Execution Function¶
An execution function is more appropriate as this is an expensive operation that instantiates and initializes a new state machine.
The original pure method has been renamed and soft deprecated. Going forward using the execution method is the preferred solution. Uses of the old function still work and do not have to be updated.
Fast Path Optimization¶
Running the local blueprint graph can now be avoided in more situations, especially benefiting C++ nodes. When a node avoids using a blueprint graph the fast path symbol will appear.
- See the Performance Guide's Fast Path section.
Default Node Instances Optimization¶
Rather than always instantiate node instances that don't have a custom class assigned, they will instead be loaded only if programmatically accessed. This should reduce memory usage and initialization times.
- See the Performance Guide's Node Instance section.
Default Graph Property Optimization¶
Exposed properties that have only default values can optionally avoid graph evaluation at runtime by unchecking Eval Default Properties
in the node class.
- See the Performance Guide's Public Variable Evaluation section.
Switch States Immediately¶
Several methods of switching states have been updated to occur immediately at the time of execution during the same tick. Previously they could trigger a state change on one tick, but OnStateBegin wouldn't fire until the next tick. These changes will allow more precise control over frame sensitive state changes.
The following methods now execute immediately and have had their behavior slightly updated.
-
Automatic event bound transitions use a new optimized routine to only evaluate and take that specific transition at the time of the event, rather than the old way of performing a full transition evaluation of the state machine.
-
EvaluateFromManuallyBoundEvent has been improved to only evaluate and take the transition it was called for, making the behavior similar to how auto bound events function. When using manual bound events this is the preferred way of triggering evaluation now, instead of calling EvaluateTransitions.
-
Manual state change calls such as SetActive and SwitchToLinkedState will process the change immediately, but can be configured not to if needed.
Manually Assign GUIDs¶
It is now possible to manually configure the GUID to use for a state. This may be necessary if you have to update the structure of a state machine that has run-time save data associated with it.
- Added
Guid Redirect Map
to state machine instances. This accepts an oldPathGuid
as the key and the newPathGuid
as the value. A PathGuid is the GUID that is returned fromGetGuid
at run-time. This is the preferred solution for redirecting GUIDs and must be maintained on the primary instance, not on individual references. - Exposed
NodeGuid
to individual states in the state machine graph. This is only used in the final run-time GUID calculation, and in most circumstances it should not be changed. - See GUID Calculation for more information.
Configurable Node Double Click Behavior¶
Nodes can have their double click behavior customized under Editor Preferences to either open the local graph or an external graph, such as a node blueprint.
- The default behavior for references has changed to always prefer the external state machine blueprint.
- The intermediate reference icon can now be double clicked to open the local graph.
- When opening an external graph the current debug object will be maintained.
Misc¶
- Added StopOnEndPlay to components.
- Added GetStateMachineReference to USMStateMachineInstance.
- Added SwitchToLinkedStateByTransition to state instances.
- Added OnRootStateMachineStart to transition instances.
- Added OnRootStateMachineStop to transition instances.
- Transitions now know if they were placed by an AnyState.
- Added IsTransitionFromAnyState to transition instances.
- Added AreAllOutgoingTransitionsFromAnAnyState to state instances.
- Added AreAllIncomingTransitionsFromAnAnyState to state instances.
- Transition Priority is now displayed above transition icons.
- Can be configured with
bDisplayTransitionPriority
under Editor Preferences.
- Can be configured with
- Transition background is now removed on custom icons.
- Can be configured with
bShowBackgroundOnCustomIcon
.
- Can be configured with
- Improved transition tooltip to display the auto bound event, the condition, and class information.
- Local graph entry nodes and other custom nodes now support break points, pin watches, and pin execution visualization.
- Changed Project Editor settings to use the default config, as this is meant to be shared across teams.
- Improved Text Graph Property efficiency during editor construction scripts.
- Improved slate refresh time.
- Added magnifier button to soft actor reference picker.
- The option to enable the soft actor reference picker has been moved from Editor Preferences to Project Editor settings.
- AnyState transitions are now compiled into the final blueprint even if they are always false.
- Changed
IsRegisteredWithContextMenu
to include native classes by default.
Bug Fixes¶
- Fixed intermittent cooking error caused by the state machine component.
- Fixed
OnStateShutdown
firing beforeOnStateEnd
. - Fixed
GetEntryStates
not working in editor construction scripts. - Fixed
Replace With
not clearing the details panel of stale data. - Fixed input bindings not compiling when connected to a For Each loop.
- Fixed input bindings not compiling in Any State transitions.
- Fixed default values entered into an exposed property requiring graph evaluation when using Legacy construction scripts.
- Fixed nativized state stack failing to load at run-time.
- Fixed state machine references possibly updating states in a different order.
- Fixed local graph entry points not executing a Gate when connected directly to it.
- Fixed incorrect behavior with parallel states triggering other parallel states with event based transitions.
- Fixed removing a native delegate from code causing a crash when loading a state machine it was bound in.
Deprecations¶
Deprecated and Redirected¶
These properties are automatically renamed in blueprints. However, C++ code will give deprecation warnings until it is updated.
NetworkTransitionConfiguration
is now StateChangeAuthority.- StateChangeAuthority does everything NetworkTransitionConfiguration did, but also impacts behavior over manual state changes and general commands, like Start and Stop.
NetworkStateConfiguration
is now NetworkStateExecution.- The functionality is the same.
bTakeTransitionsFromServerOnly
is now bWaitForTransactionsFromServer.- All transactions, not just transitions, will wait for a server response. This may impact behavior when using with manual state changes from the client as the client will remain in its current state until the server broadcasts the change.
Deprecated and Renamed¶
These properties will give warnings in blueprints and C++ until they are updated.
GetRootStateMachineInstance
has been renamed to GetRootStateMachineNodeInstance.GetMasterReferenceOwner
has been renamed to GetPrimaryReferenceOwner.GetMasterReferenceOwnerConst
has been renamed to GetPrimaryReferenceOwnerConst.
Deprecated¶
These properties are no longer used and will give errors or warnings until they are removed from blueprints and C++.
bDiscardTransitionsBeforeInitialize
bReplicateStatesOnLoad
TransitionResetTimeSeconds
MaxTimeToWaitForTransitionUpdate
Removed¶
- Completely removed
bReuseReference
from state machine references. This is legacy behavior that is incompatible with many features and is no longer supported.
Version 2.5.2¶
September 1st, 2021 - Unreal Engine 4.26 - 4.27
Bug Fixes¶
- 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
Enhancements¶
- Optimized when game and editor construction scripts run.
Bug Fixes¶
- Fixed possible compile time construction script crash.
- Fixed slate related crash with multiple tabs open to the same state machine graph.
- Fixed game construction scripts firing too many times when used with references.
- Fixed Cut & Merge states not always removing the old states.
Version 2.5.0¶
July 21st, 2021 - Unreal Engine 4.26
Video¶
New Features¶
Editor Construction Scripts¶
Customize your node through blueprint scripts in response to user input. Set default values, change node properties, hide variables, and more.
- Node construction scripts will now run in the editor whenever a state machine blueprint is modified.
- When editor construction scripts run an editor time state machine is assembled. This allows methods such as GetOutgoingTransitions to function.
- Game construction scripts now run after all nodes have been instantiated.
- See the Construction Scripts Guide for more information including instructions on upgrading your project to support the new construction scripts.
Preview Mode¶
Preview and test your state machine in the blueprint editor while you design it.
- Added new Preview Mode to the state machine blueprint editor.
- Preview Mode contains a sandbox world where actors can be added and properties configured.
- Simulate the world and debug the state machine.
- See the Preview Mode Guide for more information.
Input Bindings¶
Listen to Input Actions or Input Keys from within your state machine classes. Input events can also trigger transitions.
- State machines and nodes now have input options to enable placement of input keys and actions.
- The correct controller can be found automatically from the context.
- See the Input Guide for more information.
Read Only Variables¶
Variables can be made read only. They will display on the node but cannot be modified.
- BlueprintReadOnly flag is now recognized.
- Added optional ReadOnly flag to variable overrides to allow BlueprintReadWrite variables to be read only on the node.
- Added SetVariableReadOnly Developer Only function to node instances for use in construction scripts.
Hidden Variables¶
Variables can be made hidden. Their graphs will exist but they won't be visible on the node.
- Added optional Hidden flag to variable overrides.
- Added SetVariableHidden Developer Only function to node instances for use in construction scripts.
State History¶
- State changes will record the previous state as a struct containing the state guid, start time stamp, and time in state. Total history size can be configured.
- History is maintained at the top level owning state machine.
- Added GetStateHistory to sm instances.
[Experimental] Reset Variables¶
Reset variables to their default values during run-time when a state is entered or on demand. This is an experimental feature, and should be used with caution.
- Added experimental
Reset Variables on Initialize
advanced option to state class properties. - Added new experimental function Reset Variables.
Enhancements¶
Added Default Node Property Blueprint Setters¶
- Default node instance properties such as
bRunParallel
have been assigned public C++/Blueprint Getters and Setters that will properly update the node values. This will allow most properties to be modified during run-time, with the primary purpose being for construction script use in the editor. - Some properties, such as transition
Priority Order
are restricted to construction use only. - Some editor only properties, such as NodeColor, DisplayName, will have DevelopmentOnly setters.
- The original properties are changing from
Public
toPrivate
so any C++ code that accesses them will have to be updated.
Rules Improvements¶
- Added
USMEntryStateInstance
to represent entry states. - Added
Allow Sub State Machines
to StateMachineClass rules. - Added ability to set default sub state machine class to StateMachineClass rules. (Used when adding a new state machine or collapsing a state machine.)
- Restrict
Convert to State Machine Reference
if rules prevent reference placement.
Added Get Previous Active State¶
- GetPreviousActiveState available on base state nodes.
- Returns the last state active state before the current state became active from the last transition chain.
Added Get Previous Active Transition¶
- GetPreviousActiveTransition available on base state nodes.
- Returns the last transition taken to the current state.
Added Support for Default Array Element Values¶
- Individual exposed array elements will now read their class defaults.
Text Graph Property Enhancements¶
- Default values are now supported.
- String tables are now supported.
- Significantly improved compile times.
- Using graph edit will update the node text.
- Changing
ToText
functions in a node class will automatically update the text graph instances. - Added
ToTextDynamicFunctionName
to the text serializer. This function is looked up dynamically during run-time. This allows any object type (such as a UObject) to be provided to the text graph and still support custom text serialization.
Network Enhancements¶
- Expose timestamps to TransitionInfo structs.
- Added GetServerTimestamp to transition instances.
- Added GetServerTimeInState.
- Optimize transaction cleanup.
- Optimize included guids.
- Optimize initial replication by limiting state replication and always discarding pending transitions when states are initially replicated.
- Added domain configuration for OnTransitionEntered which respects bIncludeSimulatedProxies.
- SetActive now updates proxies that aren't ticking.
Eval Graph Properties Enhancements¶
- Each state stack state now respects its
Auto Eval Exposed Properties
configuration. - Removed
EvalGraphPropertiesOnInitialize
since that is redundant withOnStateBegin
evaluation. AddedEvalGraphPropertiesOnInitialize
andEvalGraphsOnTransitionEval
to Conduits. - EvaluateGraphProperties can now target a specific state in the stack, rather than evaluate all states in the stack each time.
States by Name¶
- Added SwitchToLinkedStateByName, GetNextStateByName, GetPreviousStateByName to StateInstance_Base
- Added GetContainedStateByName to StateMachineClasses.
Added Support for Level Actor Selection on Exposed Actor Soft References¶
Change suggested and submitted by Trevor!
- Graph pins allow selection of Actor Soft References, similar to the details panel view.
- Added
Override Actor Soft Reference Pins
to editor settings to adjust the scope of the override (None, Logic Driver, All Blueprints).
Transition Enhancements¶
- Added DoesTransitionPass to transition instances which evaluates the local transition graph.
- Added EvaluateFromManuallyBoundEvent to simplify manually bound event transitions.
- Renaming a delegate should now refresh autobound events when they are compiled.
- Transition icons can be hidden or moved.
- Added project setting
Default New Transitions to True
to default newly placed transitions to true if they don't have a node class assigned.
Copy and Paste Transitions¶
- Copy the transition.
- Select two states in order of "From" to "To".
- Paste to connect the selected states with the pasted transition.
- Or select another transition and paste, adding the pasted transition to the transition stack.
Misc¶
- Added state name restrictions to help with invalid characters that can cause problems at different points in the UE pipeline.
- Added
bRestrictInvalidCharacters
to project settings, defaults to true.
- Added
- State stack names are now displayed.
- Added
bDisplayStateStackClassNames
to editor options, defaults to true.
- Added
- Added simple animations to states when they're placed.
- Added
Enable Animations
to editor settings.
- Added
- PostEditChangeProperty fires when an exposed property changes.
- Component initialization improvements.
- Components will free their instance reference on shutdown.
- Absolute node graph coordinates are available at runtime. See GetNodePosition.
- Added
Show Display Name Only
option to state nodes to always show their display name instead of the real node name. - Added project editor settings to change the default node classes.
- Improved abstract class handling.
- Added
OnStateMachineInitialStateLoaded
native event called when a state has been successfully loaded. - Added AreInitialStatesSetFromLoad using a replicated variable to detect when a state machine has been loaded from guids. Valid until Stop is called.
- Logging now available in debug and development builds.
Bug Fixes¶
- Fixed same tick parallel state execution not respecting transition order.
- Copying and pasting states should correctly increment their name count now.
- Exposed vectors and rotators can now be reset to defaults.
- Fixed edge case of rotators and vectors getting stuck at 0, 0, 0.
- Fixed edge case of state machine graphs being null during creation and duplication.
- Fixed switching states between inherited node classes preventing variable evaluation.
- Fixed state machine components not replicating properly when used in Child Actor Components.
- Fixed
EvaluateTransitions
not working when called from the active state's graph. - Fixed
CreateEvent
button not working and potentially crashing. - Fixed issues when the same autobound event is used to trigger multiple transitions from the same state.
Version 2.4.7¶
May 15th, 2021 - Unreal Engine 4.24 - 4.26
Enhancements¶
- Added support for Electronic Nodes 3.2.
Bug Fixes¶
- 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
Bug Fixes¶
- 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
Bug Fixes¶
- Fixed crash when adding a new element to an exposed array.
Version 2.4.4¶
December 18th, 2020 - Unreal Engine 4.24 - 4.26
Bug Fixes¶
- 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
Enhancements¶
- Reduced struct property size in compiled state machines.
- Exposed variable properties reduced by 93%.
- Text graph properties reduced by 87%.
- Added support for Electronic Nodes plugin in state machine K2 graphs.
Version 2.4.0¶
September 14th, 2020 - Unreal Engine 4.24 - 4.25
New Features¶
State Combination¶
State Stack¶
- Multiple state classes can be combined into a single state.
- This can be useful for re-using and executing multiple actions per state.
- This is only valid for custom state classes. Local state graphs are not used in the stack.
- All execution node logic executes in the order the states are placed in the stack.
- State->OnStateBegin, StateStack[0]->OnStateBegin, StateStack[1]->OnStateBegin...
Merge States¶
- Existing state classes can be merged into a single state stack by selecting all desired states and right clicking on the destination state.
Cut and Merge States
andCopy and Merge States
are available.- When cutting, inner transitions between the merged states are destroyed and outer transitions are preserved.
Transition Evaluation Visualization¶
- Transitions that are evaluating are now animated.
- This can be useful for identifying transitions that can be optimized.
- Editor preferences options added to configure this feature.
Stats System Profiling¶
- Added system profiling for key areas that impact performance.
State Machine Logging¶
- State machine instances can enable logging for state changes and when a transition is taken.
Enhancements¶
Multiple Transitions Between the Same States¶
- Transitions can now be stacked multiple times between states.
Previous State Supported for Auto-Bind Events¶
- The previous state's delegates can be bound to by outgoing transitions. The correct class is determined automatically.
Blueprint Graph Evaluation Optimizations¶
- Blueprint local graph evaluation is now avoided for transitions with the following conditions:
- The conditional result node defaults to true.
- The conditional result node defaults to false.
- The conditional result node is connected only to a
Can Enter Transition
node for a transition instance. This is mostly beneficial if your transitions are defined in C++.
On State Initialized and On State Shutdown¶
- States now have optional initialize and shutdown nodes.
- OnStateInitialized fires before transitions are initialized.
- OnStateShutdown fires after transitions are shutdown.
New Asset Version Updater¶
- On startup state machine assets are updated to the newest version and marked dirty automatically.
Misc¶
- The debug object is maintained when opening node blueprints from a state machine graph.
Create Child Blueprint Class
context menu option now available for blueprint assets.- Native properties that are exposed can now be sorted with the meta property
DisplayOrder
. - State machine components with replication disabled will behave consistently for client and server domains.
On State Machine Start
will call the parent node by default.On Transition Entered
will no longer change the transition color by default.- Conduits now evaluate their graph properties during their initialize sequence.
- Added
SetCanEvaluate
andGetCanEvaluate
to conduits. Convert to State Machine Reference
improved to maintain the custom state machine node class.
Bug Fixes¶
- Fixed child state machine components not inheriting their parent template properly.
- Fixed
OnRootStateMachineStart
andOnRootStateMachineStop
firing too many times when used in references. - Fixed conduits used as entry states not calling their initialize and shutdown nodes.
- Node template names are now sanitized. This should prevent a crash when switching node classes on a node that has special characters in its name.
- Reduced flicker on transitions when redrawing the state machine graph.
- Reduced instances where stale debug data will display when opening a graph.
Version 2.3.1¶
August 17th, 2020 - Unreal Engine 4.24 - 4.25
Bug Fixes¶
- Fixed newly created nodes sometimes losing some of their details panel values on the first editor reload.
- Fixed compile issues with Any State transitions containing manually bound events.
- Fixed crash when editing a text graph property and replacing a line of text containing a variable, then undoing that action without exiting text edit.
Version 2.3.0¶
July 7th, 2020 - Unreal Engine 4.24 - 4.25
Contains file structure changes and deprecations. Make sure everyone on your project is on the same version.
Video¶
New Features¶
Parallel States¶
- Added support to run multiple active states at once.
- Support for multiple entry point connections.
- Support for transitions to run parallel.
- See the Parallel Guide.
- Added
Stay Active on State Change
to states so they may remain active after taking a transition.
Force Set Active State¶
- State node instances can call
SetActive(bool)
. - This call is replicated.
Added State Machine Flag to Wait For End State¶
- Added
bWaitForEndState
to state machines. - This is an optimized routine that will prevent transitions from being evaluated until the state machine is in an end state.
- If this is a nested FSM and also an end state, then the owning FSM won't be in an end state until the nested FSM is also in one.
Enhancements¶
Node Class Defaults¶
- Most state and transition settings previously only available in the state machine graph are now available in their node classes. This allows you to set defaults such as
bExcludeFromAnyState
at a class level. - All regular nodes will be assigned the default node class now. It is no longer possible to set a null class value.
- Old values are imported into the new system. Please verify your state machines operate normally.
State Information Icons¶
- States will display an icon when they are impacted by an
AnyState
node, an FSM that hasbWaitForEndState
set, or an FSM with an intermediate graph. - These can be disabled with a new editor setting
bDisableVisualCues
.
Improved Transition Replication¶
- When the server is in charge of transitions it is now guaranteed the client will take the same transition path, rather than prioritize being on the current active state(s).
- Added
TransitionResetTimeSeconds
to components which dictates the time to maintain the transition buffer over replication. Setting it to 0 is equivalent of the old behavior.
Improved EvaluateTransitions Method¶
- This method is now available on SMInstances.
- It now properly handles nested FSMs.
Added Bindable Events to Node Classes¶
- Added
OnStateBeginEvent
,OnStateUpdateEvent
,OnStateEndEvent
to states. - Added
OnTransitionEnteredEvent
to transitions.
New Function Events¶
- Added
OnRootStateMachineStopped
to states. - Added
OnEndStateReached
event to state machine classes.
Improved Node Display¶
- Adjusted defaults so node widgets should cover the max size of UE4 pins.
- Added clipping configuration to widget options.
Deprecation¶
- Deprecated GetActiveStateName
- Deprecated GetNestedActiveStateName
- Deprecated GetActiveStateGuid
- Deprecated GetNestedActiveStateGuid
- Deprecated GetAllCurrentStateGuids
- Deprecated GetActiveStateInstance
Bug Fixes¶
- Fixed child sm actor components not inheriting their parent class template.
- Switching an sm actor component class to an sm containing a reference which uses a template should no longer crash.
- Calling
GetOutgoingTransitions
orGetIncomingTransitions
from a node owner that is a state machine reference will now find the correct transitions. - Corrected Any States improperly adding transitions by default to their immediate connected states when they had more than one connected state.
SetCanEverTick
will work properly when the default tick is disabled and the sm is used by an actor component.
Version 2.2.0¶
June 18th, 2020 - Unreal Engine 4.23 - 4.25
Enhancements¶
General¶
- Added
GetIncomingTransitions
to state instances. - Added
GetNodeName
to node instances. - Added
GetAllStateInstances
to SMInstances and to custom State Machine node classes. - Transition
Priority
is now available fromGetTransitionInfo
.
Conduits¶
- Added new project preferences setting to default new conduits to be configured as transitions.
- This is set to enabled by default.
- Added support for Initialize, Shutdown, and Entered nodes in Conduits.
- Conduits and their surrounding transitions initialize at once.
- Conduits configured as transitions will display as active when their path is taken during visual debugging.
Convenience¶
- All runtime log messages should now be prefixed with
LogLogicDriver
instead ofSMSystemModule
. - Compiling a node class will in most cases automatically refresh any nodes in an SMGraph where it is used.
- When a behavior rule fails the tooltip will now explain which class is responsible for the rule.
Bug Fixes¶
- Nested FSMs with exposed variables will properly evaluate their variable graphs when multiple FSMs are present.
- Fixed crash when compiling an SM that is also the base class for a macro library.
- Fixed crash when using sub categories on an exposed variable.
- Fixed edge case of exposed graph property defaults not being properly applied on a paste operation or value reset.
Version 2.1.2¶
June 9th, 2020 - Unreal Engine 4.25
Bug Fixes¶
- Fixed custom context blueprint delegates not auto-binding properly in UE 4.25.
Version 2.1.1¶
May 28th, 2020 - Unreal Engine 4.23 - 4.25
Enhancements¶
- Added Node Icon Tint property for custom icons.
Bug Fixes¶
- Fixed potential memory stomp in state machine initialization.
- Fixed crash importing 1.x actor components on a map with level streaming enabled.
- Fixed crash when batch opening multiple node classes.
- Disabling tick evaluation on a state won't prevent auto-binded events from switching states.
- Changing a node icon to another icon with the same name now works.
- Conduits can display custom icons.
Version 2.1.0¶
May 11th, 2020 - Unreal Engine 4.23 - 4.25
When updating it is important everyone working on the same project also updates. Assets saved on this version are not fully compatible with older versions.
Enhancements¶
General¶
- Added user tooltips to graph properties.
- Added
IsActive
andGetGuid
to node instances. - Added documentation links to blueprint editor help menus.
Replication¶
- Added
bIncludeSimulatedProxies
to actor components so actors that aren't possessed by a player controller can execute logic when configured for the client domain. - Improved initial instance replication which should resolve issues when leaving bInitializeOnBeginPlay checked not always starting the state machine on simulated proxies.
- Initial replication now replicates the current state(s) of the authority state machine rather than rely on the default initial state being accurate.
- Can be disabled by unchecking
bReplicateStatesOnLoad
- Can be disabled by unchecking
Ticking Optimization¶
- Actor components are now responsible for ticking their instances.
- Instances that don't need to tick (such as references) never register their tick function.
- Instances no longer tick before they are initialized.
- Added
bLetInstanceManageTick
to components as an advanced option. - Added
bTickBeforeInitialize
to instances as an advanced option. - Added
bTickRegistered
to instances as an advanced option so they can unregister their tick function all together.
Changes¶
- Manually calling the actor component
Initialize
function and not passing in a context will now automatically set the context to the component owner. - Renamed Editor and ProjectEditor settings from State Machine Editor to Logic Driver.
- Deprecated
bCanEnterTransition
of conduit classes. - Creating a new conduit class no longer automatically wires a parent node to CanEnterTransition.
- Instance compile validation skips blueprints that are new or loading.
- Updated custom K2 node pin names to be consistent with UE4 naming conventions. Once you save a state machine on this version you cannot open it in an earlier version of Logic Driver or connections may be broken.
Bug Fixes¶
- Fixed intermittent crash during garbage collection for Stand Alone Game builds.
- Fixed actor component state machine templates from being selectable debug objects.
- Fixed const mismatch on GetNodeIconSize which could prevent compiling from source using strict warnings.
Version 2.0.1¶
April 22nd, 2020 - Unreal Engine 4.23 - 4.24
Enhancements¶
- Nodes that are impacted by an Any State Node will have their color updated appropriately and additional information displayed on their tooltip.
Bug Fixes¶
- Fixed crash for conduits that loop back on themselves and are configured to evaluate as transitions.
- Variables exposed on the node can no longer be edited while in debug mode.
- Added missing button images for TextGraphProperty variables.
Version 2.0.0¶
April 16th, 2020 - Unreal Engine 4.23 - 4.24
New Features¶
Custom Node Classes¶
- Create custom state, state machine, conduit, or transition classes either in C++ or Blueprints and assign them to nodes in a state machine graph.
- When placed in a state machine graph you will still be able to override class logic similar to intermediate reference graphs.
- Search the context menu for
Get Node Instance
in order to get or read values from the class instance.
Behavior¶
- Rules can be assigned to each class to define which connections are allowed and where nodes can be placed.
- This can be used to restrict when nodes show up in a context menu. For example Dialogue Choice nodes can be configured to only be placed from a Dialogue Node.
- Custom transition classes can be automatically placed as well depending on which states are being connected.
Graph Properties¶
Variable Properties¶
- Any member variable on a custom state class can be exposed directly on the node.
- Exposing the variable creates an instanced graph on the node.
- Variables or pure return functions can be drag & dropped on to the node.
- Setting default values here will automatically set the default values of the node template.
- This allows editor specific logic to apply, such as changing the icon based on an enum, number, etc.
- To read the return value of a graph simply use the variable as normal.
Text Graph Property¶
- Creates an instanced graph that returns formatted text.
- Formats state nodes to have an editable text box.
- Drag and drop member variables or pure blueprint functions with a return value over the text box to auto place them in the graph.
- To evaluate the graph you just have to break the struct and retrieve the
Result
text variable.
- The appearance of the widget can be customized through the class defaults in the editor.
Event Transition Triggers¶
- Transitions can now auto bind to multicast delegates in the state machine or on the context.
- When the transition succeeds it will automatically update the state machine which means it's possible to disable tick all together.
- Select the delegate name from a drop down on the transition.
- This will automatically create new event nodes within the transition graph.
- When you compile these nodes automatically expand similar to this.
- Delegates on the context can also be bound to.
- The context class must be chosen as this information is only known at run-time.
Any State¶
- New
Any State
Node available which represents any other state on the graph. - Transitions are automatically duplicated from Any State to all other states in the current FSM scope.
- Nodes can be excluded from being considered for AnyState transitions with
bExcludeFromAnyState
.
Enhancements¶
State Machine Components¶
- Actor components now have template support allowing individual properties of the state machine instance to be set.
- Tick Overrides have been deprecated and their values automatically imported to the template.
- Added
bStartOnBeginPlay
to automatically start state machines on begin play. State Machine Class
,bInitializeOnBeginPlay
, andbStartOnBeginPlay
now haveExpose On Spawn
set.
Conduits¶
- Added
bEvalWithTransitions
to conduits. This allows them to behave similar to anim graph conduits-- They will be treated as a transition and the state you are in won't switch unless the conduit and every connected transition (or connected conduits) pass. - Local conduit graphs now support the general helper nodes available in other graphs.
Ticking and Time¶
- State machine instances are able to automatically manage delta seconds if nothing is passed in during an
Update
call, such as from manual tick handling or using the new autobinding transition events. This requires the context have a valid world. - States can disable transition tick evaluation with
bDisableTickTransitionEvaluation
. - Transitions can disable tick evaluation while allowing auto-binded events to still be processed.
- Transitions now allow multiple Initialize and Shutdown Nodes.
On Root State Machine Start¶
- The old
On State Machine Start
node for intermediate reference graphs has been renamed toOn Root State Machine Start
and is now available for any state type graph.
Validation¶
- Added compile validation and additional warnings to help rare cases of state machine children not updating properly when a parent dependency was modified. These are configurable in a new State Machine Project Editor Settings.
Bug Fixes¶
- Several bug fixes regarding children that call parent state machine graphs.
- Dropping a function on a state machine graph no longer results in a crash.