Multiplayer - Game Juice Pro
Game Juice Pro includes native multiplayer support. The most basic control is directly on the Play Juice node with the Skip Replication pin.
Skip Replication
The Play Juice node has a Skip Replication (bool) pin. This is the main replication control:
- Skip Replication = false (default): The feedback replicates to other clients according to the replication mode configured on the component.
- Skip Replication = true: The feedback executes only locally on the machine that invokes it. Nothing is sent over the network.
Enable Skip Replication for purely cosmetic effects that don't need to be seen on other clients, such as personal post-processing, controller rumble or first-person effects.
Should Replicate (per feedback)
Each individual feedback has a Should Replicate (bool, default true) property. This allows mixing replicated and local feedbacks within the same preset:
- A Camera Shake with Should Replicate = true → replicates
- A Rumble with Should Replicate = false → local only (player's controller vibration)
When playing a preset without Skip Replication, only feedbacks with Should Replicate = true are sent over the network. The rest execute only on the local machine.
Component replication modes
When using the Game Juice Component, you can configure its Replication Mode to control how replicated feedbacks are distributed:
- Local Only: Everything executes locally. Equivalent to having Skip Replication always active.
- Server Multicast: The server sends the command to all connected clients.
Everyone sees the same effect.
Ideal for: explosions, environment effects, global events. - Server Authoritative: Only the server executes the feedback. Used for logic that requires server validation.
- Owner Only: Only the owning client of the actor receives the feedback.
Ideal for: first-person effects, personal feedback. - Skip Owner: All clients except the owner receive the feedback.
Ideal for: when the owner already executes the effect locally and you want others to see it too.
Network Proxy
In Unreal Engine, server RPCs require that the client has ownership over the actor. This is a problem for feedbacks on world actors that don't belong to any player (enemies, environment objects, etc.).
GJPNetworkProxy solves this problem automatically. It's a lightweight component added to each player's PlayerController that acts as a relay:
- The client wants to execute a feedback on a world actor
- The proxy on their PlayerController (where they do have ownership) sends a Server RPC
- The server executes the feedback on the target actor for the relevant clients
This process is transparent: you don't need to configure anything. The plugin manages it automatically.
Distance relevancy
The Game Juice Component supports Network Relevancy to optimize bandwidth. Feedbacks are only replicated to clients that are close enough.
- Use Relevancy Distance: Enables distance filtering (default true)
- Relevancy Distance: Maximum distance to receive the feedback (default 5000 units)
- Only Replicate If Visible: Only replicates if the actor is visible to the client
Example: an explosion with a relevancy distance of 5000 will only be sent to players within that radius, saving bandwidth on large maps.
Best practices
- Enable Skip Replication on the Play Juice node for purely local effects (rumble, personal post-processing, UI sounds).
- Use Should Replicate = false on individual feedbacks that don't need to be seen on other clients even though the preset is replicated (e.g.: Rumble inside an impact preset).
- Post-processing feedbacks (Chromatic Aberration, Bloom, etc.) affect the individual camera, so they should generally have Should Replicate = false.
- Transform feedbacks (Scale, SquashStretch) on replicated actors need to be replicated so everyone sees the visual effect.
- Configure Relevancy Distance on large maps to avoid replicating feedbacks to distant players.
- Enable Only Replicate If Visible for subtle feedbacks that don't deserve replication if the player can't see them.
Need help?
For questions or suggestions, join our Discord.