Download

What is the proper way to move non-pawn actors in a multiplayer environment?

Scenario: Vertically sliding door where the movement must be replicated across all clients.

I guess the core of the question is this: Do people typically use a movement component when moving actors? If so, what movement component do you use?

Since movement is replicated pretty effortlessly, it makes sense to me that utilizing a movement component when moving an actor would make sense. However, it seems to me there are only a couple options for movement components for actors: Interp To Movement, Projectile Movement and Wheeled Vehicle Movement.

Of these three, only the Interp To Movement can actually fit my needs of a sliding door. I have used it to some success but in general it is difficult to control. For example, I can’t seem to manually set the door’s position along the points using the component. Also, once the door is opened (slides all the way to the top), it is difficult to reverse the movement or execute the “open” movement again. The component feels … unfinished and leaves a bit to be desired.

It has occurred to me that I could make my door a pawn and use something like the floating pawn movement. But honestly that seems like it would invite more problems and in general using the wrong tool for the job.

If I abandon the movement components, I could perhaps use a timeline to update the door’s position. The problem here is that “Set Actor Location” does not seem to replicate with “Replicates” enabled (even though I thought it did, so it’s possible I have something misconfigured). So in order to “move” the door, I need to run the timeline on all clients and have them update the position which may cause a de-sync as everyone is calculating the position themselves. With a door, this is generally not an issue: if the door is not fully open at the exact same time for everyone it’s not a big deal. But for other actors this becomes important.

So it comes back to my original question: How do people normally handle actor movement?