Download

Is replication practical for thousands of objects?

I’m looking to make an RTS-style game. I don’t want to do the traditional lockstep model due to all the cons associated with it (lowest common denominator performance, low player count, pains of determinism, etc).

Is replication appropriate for a world were the server tracks thousands of moving and acting objects, and dozens of clients would have dozens to hundreds of actors replicated to them?

I’d imagine the answer could be “it depends” or “prototype it and see”, but if this is an absolute no-go just from that description, I’d like to save time.

As an aside, I have a feeling I could beat simple value replication in terms of bandwidth usage by using Planetary Annihilation’s curves idea. To save you a read, you propagate data updates differently. If you had a moving object, instead of the server sending continuous updates of the location, it could send a one-time packet saying “move entity 32 from tick 23-26 by Vec3(3, 2, 1) per tick” or “lower entity 32’s health by 3 points per tick for the next 4 ticks”. Whereas using value replication would just replicate the actual location or health each time it changed, resulting in many more updates. I could probably do this by having the curve as a property on the actor, and only replicate that and not the value it changes.

Looking far ahead, is there ever a point where it would be advantageous to use a single rpc call to propagate all of a server tick’s changes to clients instead of letting the actor based replication system do it per-actor?