FAQ¶
Transitions aren't being taken / state machine isn't starting¶
Are you running as Client or Listen Server? This will impact when transitions evaluate or the state machine starts. If you don't want to replicate the state machine, turn Component Replicates
off on your state machine component. See the Networking Guide.
Verify the transition is evaluating by applying the debug filter. The transition will play an animation while it is evaluating. If it is evaluating, then the problem is likely with your transition logic. Otherwise you may be running in the wrong network domain or have conditional evaluation disabled on the transition.
Compiling from source is causing compile errors or other problems on new engine versions¶
Every engine version requires a specific branch of Logic Driver's source code. You are almost certainly using the wrong code base for the engine you are compiling against. Always use the correct Marketplace engine download or private GitHub branch.
See the Engine Compatibility Guide for more information.
How to access the state machine instance (SMInstance) from editor construction scripts or pre-compile validate? ¶
You cannot. When construction scripts run on compile Unreal has already cleared out the old class default object at this point and the new one is in the process of being generated. The only way to retrieve this information is using UE's FBlueprintCompilationManager
in C++. Here an old default value can be retrieved in an exported string format. See FBlueprintCompilationManager::GetDefaultValue
. Depending on your Logic Driver Pro version, you may find an example of it being used in the FSMEditorConstructionManager.
Exposed properties aren't evaluating ¶
Public properties on a graph node evaluate when a state is entered.
If you are trying to read properties from a future state, such as from a transition's GetNextStateInstance function, you will need to manually evaluate the graph properties of the next state instance first, by calling EvaluateGraphProperties on that state.
You can check the automatic evaluation settings of the state class's Graph Evaluation Settings and configure when graph properties should evaluate by default.
Will Logic Driver impact performance?¶
Performance is almost entirely up to your implementation. Please see the Performance Guide.
The state machine stops working after about 60 seconds¶
It is probably being garbage collected. If you are creating the state machine through CreateStateMachineInstance
you need to assign the result to a member variable so Unreal knows not to garbage collect it.
Accessing the state machine from a component¶
When using state machine components you may need to access the state machine instance (your state machine blueprint). To do so call GetInstance from the component. From here you can cast to your correct blueprint type and perform any operation on the instance, such as loading or saving state guids.
When performing basic management on the state machine (Initialize/Start/Update/Stop/Shutdown) you should call the methods on the component itself, not the instance. This allows replication to work correctly.
Can I use auto-binding with a component's events?¶
No, you have to use manual event binding. See Automatic Event Binding for all supported options.
Updating the state machine manually¶
If you want to update the state machine without using tick you can either call the Update
method manually or call EvaluateTransitions.
- Evaluate Transitions will efficiently evaluate the transitions without calling a state's update routine.
- When updating from a manual bound event you can use EvaluateFromManuallyBoundEvent.
- Autobound events automatically update the state machine.
- Update will evaluate transitions and run state update logic if needed. Update might be better if tick is disabled and you are completely managing the update method on a regular basis and have your own delta seconds to pass in.