Change skeletal mesh, blueprint, multiplayer

I am messing with some multiplayer stuff, I have movement replicating so you can see the proper animations of another player in game. I have it set up so when they connect it goes right to a team selection then class selection, which determines which skeletal mesh is used. I then ‘SetSkeletalMesh’ with the one for the class/team they picked.

On the side of the player, you see it change. But when looking at them in game, from a different client, they do not change, they are the default skeletal mesh set up for that character.

Have tried having the server run the ‘setskeletalmesh’, replicated the variable that holds the skeletalmesh reference. Not sure what I am missing. Have been through loads of video tutorials and searched endlessly, have found nothing out there… as if ‘it should just work’… but it doesn’t.

Hi arbopa,

Unfortunately, this is a known bug with UE4 (UE-16478). Right now, Set Static Mesh and Set Skeletal Mesh, and possibly other component values, do not replicate their changes. For now, you’ll need to create separate Characters and swap between them, rather than swapping the Skeletal Mesh in the Character. If you make children of that Character and use those, any references should remain intact.

Well thanks for a reply. It is disappointing, but at least it is a reply. How do you swap characters? No idea.

The easiest way is to spawn a new Character, use the Player Controller to possess it, and then delete the old Character. Most people use the Spectator Spawn as a default for the map to spawn and then perform the Spawn/Possess function in the Player Controller.

Thanks again. Have searched for info on this, and find nothing of substance. Oh well. Would be nice if they just fixed the bug, seeing that 4.10 is supposed to be a ‘bug fix’ update. And it seems this is a relatively important issue that setting meshes replicates properly.

yeah it would be a lot easier if it just works as intended. But is not fixed yet btw in 4.12

Please Epic team fix it if possible :slight_smile:

Hello,

Here is a link to the issue on our public tracker so you can keep up with its status: Unreal Engine Issues and Bug Tracker (UE-16478)

Have a great day

is the bug (UE4 (UE-16478)) fixed now?

From the tracker page “This issue has been closed as ‘Won’t Fix’ due to an extended period of time without updates. If this issue is important to you please let us know by posting on the AnswerHub or UDN, and Epic will re-open the ticket for further review.”

So after YEARS, they have not bothered to fix a simple bug. SMH.

The public tracker has a status of ‘wont fix’. So it appears this is not important enough to be fixed. Which is total BS.

Hey arbopa,

The status of the ticket on the public tracker was due to the priority of the ticket. This is something that you can work around using the method suggested above, which is why it was given a low priority. However, I can go ahead and reopen the ticket for investigation based on the fact that it’s still occurring in the latest engine version.

Thanks for the update

This Issue still exists for skeletal meshes and Absolutely need to be fixed Immediately.

I lost 3 weeks trying to find what is going on with my code. Tried everything, read a lot of documentation. It was driving me crazy. It still doesnt work in 4.26

There is an incredibly simple and more preferable solution to this:

  • Replicate a separate ‘Mesh’ variable.
  • Use an OnRep callback to call SetSkeletalMesh on the component.

This is considerably cheaper than replicating both the mesh component and an internal mesh, especially as USceneComponent contains additional properties which are also replicated by default.

There are also other connotations, if the ACharacter classes skeletal mesh component was replicated it will also mess with the character movement networking.

3 Likes

Could you elaborate on this, and explain it in a way a replication noob will understand?
This bug is still present in UE5 and is currently a massive roadblock for my project, but I don’t understand your proposed solution.

It’s explained here.