A bunch of ideas, feature requests and bugs that I’ve been jotting down over the past few weeks of working intensely with StateTrees in UE 5.5.1. I absolutely love this tool and I want to see it succeed as the new defacto-standard for doing gameplay & UI logic, not just AI.
Please feel free to add comments or queries to this document.
Also, if anyone from the StateTree team is reading this: I’m not just tossing these over the wall and hoping someone else will deal with it; I’m very willing to contribute upstream with any of these, but I’m not sure the process. Reach out to me on bsky if I can help more directly or if any of these require clarification.
Update: I've been working on a plugin that addresses some of these requests: Extended State Tree
Plugin is open source, free to use, MIT licenced.
Bugs
- Delay Task with
0.0 delay time always resets to 1.0 on duplicate/paste
- State tree node information (e.g. node name) isn’t always available e.g. on initial state tree running event
- “Inverted” Conditions don’t indicate their inverted state in their description for:
Object Is Valid, Object Equals & Object Class Is. It prepends the <s>Not</s> correctly for the other built-in conditions. This is super frustrating as it makes me repeatedly recheck whether I set up the condition around the wrong way.
“Try Select Children At Random” is completely broken (with a misleading crash) on 5.5.0 and 5.5.1. This is fixed upstream, but I was disappointed that it didn’t ship with the 5.5.1 hotfix.
- Perhaps I’m doing something wrong with how I’m setting up my custom tasks or context, but some state trees are always considered modified by simply opening them in the editor (i.e. they have a
* next to the tab name every time they’re opened).
- Currently impossible to differentiate between debugger-selected states (yellow border) and user-selected states (orange border). The problem is the debugger border always appears over the user border, where it should probably be the other way around, or ideally, show both borders if necessary. This issue is made more of a nuisance when the debugger is opened after a play session is concluded with the debugger closed, as the debugger will highlight state changes as if there’s a debugger track there, but there is none visible, and the trashcan icon is greyed-out so you can’t clear the highlights, best you can do to get it out of the way is to rewind the debugger to the start and have it only highlight the root + initially selected states.
- Sometimes property functions for a task’s inputs run AFTER the task has already been run (??!)
- Bound FVector values trip
check(PropertyName == Z) in FVectorStructCustomization::GetSortedChildren details customisation.
Debugging
- Save the State Tree Editor Debugger tab’s open state or otherwise allow some way to always open it. The debugger was previously automatically opened in 5.4 (IIRC). It’s currently very annoying to keep having to reopen each state tree’s debugger every time I recompile the C++ and restart the editor.