Why is my custom C++ actor not replicating correctly even with SetIsReplicated(true) and bReplicates = true?

Hi everyone,

I’ve recently started learning C++ in Unreal Engine after spending a lot of time with Blueprints. I’m currently building a simple multiplayer prototype and wanted to create a custom actor entirely in C++ that can replicate its position across the network.

Here’s what I did so far:

  • Created a class inheriting from AActor
  • In the constructor, I called SetReplicates(true); and bReplicates = true;
  • Overrode GetLifetimeReplicatedProps() and added my properties using DOREPLIFETIME()
  • Spawned the actor on the server using GetWorld()->SpawnActor<>();

The actor spawns correctly for the host, but doesn’t appear at all on the client. I even added NetMulticast debug logs to check if replication is triggering — but no luck. The logs only appear on the server.

Some things I’m unsure about:

  1. Do I need to manually call RegisterAllComponents() or ForceNetUpdate() after spawning the actor in C++?
  2. Are there differences between how Blueprint Actors and C++ Actors handle replication by default?
  3. Should I be setting any additional replication flags or using SetReplicateMovement(true) for positional sync?
  4. When exactly should I use NetMulticast vs. replicated variables for syncing things like transforms or effects?
  5. Could this be an ownership or authority issue? The actor is spawned on the server, but maybe I’m missing something with SetOwner()?

I’m trying to stick with good multiplayer practices early on, and I’d love to understand not just how to fix this issue, but how to think through replication logic properly in C++ for future systems like weapons or projectiles.

Thanks in advance for any help — I know this stuff is tricky, but I’m excited to keep learning and eventually contribute back to the community.

welcome to the forums!

check this out. Multiplayer Network Compendium | An Unreal Engine Blog by Cedric Neukirchen
check the official docs, they’re really comprehensive Networking and Multiplayer in Unreal Engine | Unreal Engine 5.5 Documentation | Epic Developer Community

make sure it’s relevant.
there’s a flag called AlwaysRelevant or smth.
read about relevancy also.

no. never call RegisterAllComponents if you don’t know what you’re doing.

yes. but small details. read the link i’ve shared. mostly you don’t need to worry, except for multicast and overriden methods.

that’s a book in itself. make a thread for that. or read the link i’ve shared (from cedric), it’s explained pretty well.

not necessarily. but it’s important to set the owner.
only actors that owned by the local player controller, or chains to it, can call an rpc. read the link.

“good practices” leads to certain dogmatism. read the link ive gave you.
the only way is to build a ton, and read a ton, there’s no shortcut, since all projects are different.
and dumping all that info could be really long.
you can also search in the forum and the docs here. there’s great content.
i wouldn’t trust youtube much, lots of ppl there has never done big projects. though some do. you’ll have to select yourself.