Game Animation Sample Ragdoll character goes haywire.

I just got alerted to this problem and been able to reproduce it, so I am reporting it here. Mover character in the GASP gets broken after 30-80 seconds in StandAlone or Cooked build. Character’s limbs get twisted in unusual angles. Or the character won’t recover from the fall, but the capsule moves as if character was walking. This happens to player controlled character or the ai pawn that got tackled by the player.

To reproduce the bug:

  • Open GASP project
  • set it so it opens Ragdoll map
  • Launch the map in StandAlone
  • Press R to trigger ragdoll and and recover from it. (This step is only to ensure the ragdoll works fine at the start)
  • Wait 30-80 seconds
  • Press R to trigger ragdoll again, try to recover from it. Observe broken character.
4 Likes

I have been losing days on this trying to update my steam playtest to mover component, and I was not crazy! IT DID BREAK after a few seconds and I was able to replicate it each time.

I am just sorry that we faced the same issue, in the same time frame, and did not meet before ahah but unfortunately I have no fix yet, tried a lot of stuff though, if you want we can try to figure it out together by sharing our findings on discord and then maybe come back here with more insights for everyone?

Also on my end it happens with trigger ragdoll too, so if i trigger it at begin play and then wait when I retrigger it after a min or so it goes haywire straight when it triggers ragdoll: does this happen to you as well?

2 Likes

Fixed the issue, caused by the loss of reference with the PCAsset, my solution is to force it to load syncrounously, works in shipping build as well, actually I’m pushing it to the steam playtest of my game Quantum era if you want to try my ragdoll implementation, happy to help if you need it

3 Likes

EDIT: I did a test to avoid hitching due to sync load asset, with a custom event instead of a function you can use async load instead, same logic but stutter free (and it still works in shipping as well)

2 Likes

Sir, you are a star. I would never in a million years find this solution! Thank you!! I just tested your load blocking method, and it works nicely.

Could you please provide more details about the Custom Event method? Do you trigger this event before triggering ragdoll or at the begin play, or somewhere else entirely?

Again, Thank you!!!

1 Like

Glad it works I have now still problems in build shipping with mover but i’m inventing new fixes, will let you know, this fix here is not as robust for a game with jetpack, grappling hook and other stuff like mine.

About the custom event, since you can’t do async load asset in a function, I simply call the custom event in the function.

1 Like

So the fix I posted is not enough, in the ABP the update CVAR node is stripped in shipped builds.

You have to bypass it (you can simply use a branch and the provided is for distribution checkbox) and manually set the defaults for the ABP variables that are set in the update CVAR node.

Remember to check for distribution in project settings as well just to be sure.

For me this fixed (until now) the issue with the capsule offset and IK, the sliding still can get messy with detailed collisions, gonna work on that next.

1 Like

This sounds like a state/physics desync that develops over time rather than an initial ragdoll setup issue. Since it reproduces with both the player and tackled AI, I’d check the transition back from ragdoll into the Mover/animation state.

A few things I’d compare between the working first ragdoll and the broken one:

  • whether the skeletal mesh and capsule transforms diverge after recovery

  • whether the physics asset is still simulating when the animation state resumes

  • the character’s movement/pose state immediately before the second ragdoll

  • whether the issue appears only after the cooked/standalone instance has been running for a while

This kind of stability is especially important when building production-ready character systems for game animation services. A short capture of the character’s pose state and movement mode immediately before/after the failed recovery could help narrow down whether this is a physics-state or animation-state issue.