Is there a reason you’re using Set Relative Location only on Mesh? This would separate it from root capsule. Otherwise, I don’t really see what you’re seeing (though resulting move of Set Relative Location for a component does not seem to be replicating, which I will probably enter a bug report for).
reason I ask is because you might be better off using Add Actor World Offset node instead to move entire Character Actor, rather than only its Mesh. This also replicates properly, so it might be your best option at this point.
Thanks for clarification! I see what you’re trying to do now, and that makes sense. I can’t reproduce exactly what you’re seeing, though: when I use Set Relative Location on a skeletal mesh inside a Character Blueprint, it doesn’t replicate this change in 4.7. I tested in 4.8, however, and results of Set Relative Location on a component replicates as expected.
You will, however, need to do change on Server and not Clients. Making this change on Client will only make that change on that Client, because replication only works from Server to Client and not in reverse. You can use and RPC call to update Server with this change, or you can make change on Server and it will automatically replicate to Clients.
I’m still having this on 4.8.3, trying to do pretty much exact same thing - my crouch changes capsule size so I need to change relative location of mesh to compensate. It works fine on server, but I can’t make change show up on client regardless of where I try to do it - server, multicast, etc. Is relative location of a character’s skeletalmeshcomponent supposed to be replicated, such that I should only need to set it on server? Either way doesn’t work.
Can you set up a small test project that displays this behavior for me and upload it somewhere I can access? Otherwise, a complete set of reproduction steps in a new project would be helpful. Thanks!
You can replicate this problem by simply starting a new third person character and try to change relative location of a skeletal mesh post construction, i can get this to work by deactivating character movement component but moment it gets reactivated character snaps back to default relative location
I just tried to reproduce this, and I didn’t have any trouble with Set Relative Location on Skeletal Mesh in ThirdPersonCharacter not replicating properly in 4.8.3. If you’re able to reproduce this in a new project, please upload it somewhere and post a link so I can take a look at setup that’s causing a problem for you. Thanks!
If you press G you can see shift, problem is client can see neither server nor other clients change. server however can see everyone just fine. Thanks for taking a look
Ah, I see it now. Thank you for project! Looks like I was setting up my test incorrectly in 4.8 and it wasn’t actually replicating there, either.
I was able to reproduce this in a clean project in 4.8.3 as well as 4.9.0 and our internal builds, so I’ve created a bug report for issue (UE-20681). I’ll post here when I see any update. Thanks again!
Ok, so as a workaround i just duplicated skeletal mesh, then set original one to hidden in game and am able to replicate set relative offset with my duplicate. So that might help anyone out waiting for an official fix
I came across same problem. We have characters that changes form including size of capsule which meant changing relative location of mesh so its flush with capsule. In a network game set relative location doesn’t work even if called on all clients. reason being is character movement component keeps a record of relative location at beginning and reuses value when doing movement smoothing. We solved issue by rerecording of relative location when we change it through code. If you don’t have access to code then there are 2 other solutions. 1. if relative location is constant then you can call set relative location every tick. or 2. Set Network Smoothing mode to Disabled which can be found in character movement component in blueprint. Hope that helps!
I still do have this issue in 4.11. Do not know why, but mesh is trying to reach it’s original position every tick on client side. I can move it on server, and it does move. But as soon as I try to move it on client, it start to move back toward orig. loc. every tick.
Have no idea, what to do. Right now I’m going to solve this problem by hiding mesh and spawn a new one as another Actor. But this is really bad.
That is because Character’s Movmenet component and its network prediction and smoothness logic.
To get rid of that, try to disable “Network Smoothing Mode” inside character mov. component. That shold stop tick interpolation of mesh toward it’s original position.