Server/Client: Order of "Events"?

I always thought you could rely on Unreal Engine to do everything that’s replicated from server to client in the same order on both ends.

I am having a tough time implementing a function that is called on the server, creates a relatively large number of replicated actors, and then calls another NetMulticast-function that sorts and organizes these actor in a non-replicated kind of way, meaning every client (and the server) knows how to sort and register what gets created, so there is no need to send this information over the net.

On the server the NetMulticast-sort/register function works as expected. On clients the function gets called before the actors are spawned. They get spawned, but after the function-call. Am I doing something wrong? This is really annoying. If I can’t rely on the order of events to be synced, I will need hundreds of workarounds in my project :confused:

Isn’t there a detailed description of replication in UE4 somewhere? A rough overview (like in the wiki) isn’t good enough. I need the details… How can I write a solid networking implementation, if I don’t know precisely what I can and what I can’t rely on?

Like…

  • Can I rely on actors being created in the same order they were created on the server?
  • Are all actors on clients spawned with their class default-values or do they already spawn with replicated properties? This is extremely important, because it determines if I can rely on BeginPlay or some other initialization-function, rely on ReplicatedUsing, or neither of those…
  • Obviously, spawning actors and calling RPCs does not happen in a reliable order, but can I at least rely on multiple RPCs to be carried out in sequence?