Replication Graph Overview and Proper Replication Methods

  • 24

When you're trying to make an online multiplayer game as massive as Fortnite, the standard network replication strategy simply won't cut it. With up to 100 clients (players) running around in a dynamic world filled with 50,000 synced actors, determining each actor's "network relevance" to each client is taxing on your server's CPU. While you could mitigate some of the CPU demand by dropping the replication rates and staggering actors to update at different times, your client experience will become laggy due to the decreased update frequency. More importantly, this doesn't address the fundamental problem, which is that the overall strategy of testing each actor against each client on every frame does not scale well for large games.

For these kinds of games, we need a different approach, and we built the Replication Graph Plugin to provide it. The Replication Graph scales well to large multiplayer games because it mitigates server CPU issues by reducing redundant work and caching data instead of constantly recalculating it. It accomplishes this by treating actors differently, depending on what they do in the game and what relationships they have to other actors, as well as by storing data for use by multiple actors, multiple clients, and even across multiple frames.

How Replication Graph Works

The Replication Graph contains a series of Replication Graph Nodes that build lists for actors to replicate to each client on demand. These nodes are persistent objects and can store data across multiple frames and share results between client connections. Rather than evaluating each actor for each connection on each frame, the nodes are able to operate on a smaller set of data. This persistent, shared data enables the Replication Graph system to rapidly produce replication lists for clients and is able to scale well to large multiplayer games.

The system provides a more consistent data structure for connections and actors so that you can pull out relevant data and quickly move it to the next stage of the pipeline.

With the Replication Graph Plugin, you can determine what actors should replicate to what connections. This entails customizing when and how you open actor channels, when to replicate an actor on those channels, and when to close those channels. By extension, this allows you to increase productivity and trim redundancies.

 

Replies • 0