Download

Networking issue? Server only updates bone transform on object when object is actually rendered

Hoping someone can help with this networking issue!

The server only seems to update bone transforms (that changed by animation) when actually visible to the server.

Three actors; a server, a client and a turret. (All three are Character class based)

Setup - Server cannot see turret, client can.

Server is in control of the code (Authority).

Client triggers the turret animation (via NotifyActorBeginOverlap on server), this causes the animation state to change to open (then fire).

The animation is decided with the networked variable ‘state’; it can be closed, open or fire state and plays the anim to match in Anim BP.

Issue is that the when the server starts firing bullets they launch from a bone transform that is incorrect (old).

The bone transform is still in ‘closed’ animation transform, not in the open/firing transform (location/rotation).

This is fixed by the server simply seeing the turret on screen.

We’ve spent ages trying to work out why!!

Ideally this is a simple tick box somewhere and not an actual bug.

Has anyone come across this or have any ideas?

You can change this in the optimization settings for the skeletal mesh component.

Brilliant! That did it!

Thank you so much Zeblote.

If anyone comes across this post:

C++:
[FONT=courier new]SkelMesh->VisibilityBasedAnimTickOption = EVisibilityBasedAnimTickOption::AlwaysTickPoseAndRefreshBones;

BP:
Screenshot_2.jpg