I’m working on a multiplayer game in Unreal Engine (using version [your version, e.g. 5.1]) and I’m running into some confusion around how to properly set up actor replication. Specifically, I have some custom actors (like pickups and AI enemies) that behave inconsistently across the server and clients.
For example, I’ve marked them as Replicates and enabled Replicate Movement, but sometimes their positions or state changes (like being destroyed or picked up) don’t seem to update correctly on the client side. I suspect I might be misunderstanding how to use Server, Multicast, or Run on Owning Client events in Blueprints.
Does anyone have a solid workflow or checklist for ensuring actor replication works as expected? What are the most common mistakes to avoid when building multiplayer logic in Blueprints? Also, how do you typically debug replication issues — any recommended tools or console commands?
I’d really appreciate some guidance or example setups. Thanks in advance!
if you are playing Animation, you must Multicast it
if you are changing position of target, Server should already replicate it when RPC Communicates with Server
Hey! For consistent actor replication, ensure your custom actors have Replicates and Replicate Movement checked, and that any state-changing logic runs on the server. Use Server RPCs for actions like pickups, then Multicast for updating all clients. Common mistakes include calling Multicasts on clients or running logic in the wrong network context. For debugging, net dormancy, net relevance, and the Net Log tool are super helpful.
Actors that replicate must be spawned by the server.
Example flow for pick up items.
Pickup item not owned in the game world is a simplistic variant of the picked up item. Lets say a gun. The item pre-pick up is generally an actor with a static mesh and identifier data. Like what the item is.
When the client interacts to pick up it simply does a local animation and RPC’s the server to interact. When the server interacts it gets the identifier and spawns the “working” version of the item. It sets the owner and attaches that item to the character. If any other character states needs to be updated it does so. It then destroys the simple pickup item.
The only RPC from the server in this instance, potentially, would be a multicast that is executed by simulated proxies (copy of your character on all other human clients) to play a pick up montage.
The newly spawned working gun is set to replicate. Each client will now get an update that spawns and attaches the gun to the specific proxy.