StateTree Tasks not ticking when executed via 'Use Smart Object with Gameplay Interaction'

I am using the Gameplay Interaction plugin to make an NPC interact with a ‘Chair’ Actor.

[Setup]

  1. Chair Actor: Has a USmartObjectComponent and a defined State Tree asset.

  2. NPC: Uses the Use Smart Object with Gameplay Interaction Blueprint node to trigger the interaction.

  3. Execution: The State Tree successfully starts, and I can see the tasks being executed in the State Tree debugger.

[The Problem] The Tick functions of the Tasks within that State Tree are never called.

  • In my C++ Task classes, I have set bShouldCallTick = true; in the constructor.

  • In the State Tree Editor, the “Should Tick” option is clearly enabled for these tasks.

  • Even though the debugger shows the State Tree is “Running” and active on the specific state, no breakpoints inside Tick() are ever hit.

[Observation] It seems like the State Tree starts correctly through the Gameplay Interaction system, but the actual ticking mechanism is somehow suppressed or not being registered by the GameplayInteractionComponent or the underlying execution context.

[Question]

  1. Is there a known issue or a specific setting required for Tasks to tick when they are part of a Smart Object’s State Tree executed via Gameplay Interaction?

  2. Does the GameplayInteractionComponent require additional configuration to allow its internal State Tree evaluator/tasks to tick?

  3. Since this is not a standard UStateTreeComponent on an Actor, but rather a context-driven execution, where is the Tick actually managed in this flow?

If anyone has encountered this issue with the Gameplay Interaction system, I would greatly appreciate your guidance.

**Thank you!

[ My ‘Chair’‘s State Tree ]**

[ Chair’s Smart Object Definition ]

It has been some time since I worked around in GameplayInteractions plugin. The plugin has not been seeing any further development but rather working in the Game Animation Sample Project to use Smart Objects with Gameplay Behaviors. I do not believe we were using any ticking tasks in our internal test projects for GameplayInteractions, so there might be something suppressing the tick, but I do not remember or see anything doing that explicitly in the code.

If you up the log for StateTree to VeryVerbose, I believe it should print out if ticking is skipped as well as the reason it was not ticked in a frame. It would also be beneficial to see the VisLog recording of the StateTree or Rewind Debugger output showing the decisions it is making each frame when the behavior is not what is expected. It might shine some light on where the problem lies.

Also, are you using the struct base for your StateTree tasks or attempting to extend the BP base classes? I have another report from a user where the BP base class was not properly calling their overridden tick. The best way to create custom nodes in C++ is to use the struct bases such as FStateTreeTaskCommonBase. This is better for memory, performance and GC, and beats the BP implementations by ~30% on both mem and CPU.

-James