Unreal Engine 4 supports component replication. While it is straightforward to use, it is not that common: most components do not replicate. Most gameplay logic is done in the Actor class and components
usually just represent smaller pieces that make up the Actor. That gameplay logic in the Actor is what replicates, and its results sometimes end up in calls/changes to the components. However, cases exist
where properties or events on components themselves need to directly replicate. This guide explains how to use this.
Components replicate as part of their owning Actor. The Actor still dictates role, priority, relevancy, culling, etc. Once the Actor is replicating, it may also replicate its components. These components
may replicate properties and RPCs in the same way an Actor can. Components must implement a ::GetLifetimeReplicatedProps (...)
function in the same way Actors do.
There are two broad categories of components when talking about component replication. Static components are components that are created when the Actor is created. That is, when the owning Actor is spawned
on client or server, these components are also spawned, whether the component is replicated or not. The server does not tell the clients to explicitly spawn these components. In this context, static components are components created in the C++ constructor as Default Subobjects or that are created in the Blueprint Editor's Component Mode. Static components do not need to be made to replicate to exist on
clients; they exist by default. It only needs to replicate when properties or events need to be automatically synchronized between server and client.
Dynamic components are components spawned on the server at runtime and whose creation and deletion replicate down to clients. They work very much in the same way Actors do. Unlike static components,
dynamic components need to replicate to exist on all clients. Alternatively, clients can spawn their own local, non-replicating components. This is actually fine in many cases. It is only when properties
or events that trigger on the server need to be automatically synchronized to clients does replication come into play.