Multijugador - Game Juice Pro
Game Juice Pro incluye soporte nativo para multijugador. El control más básico está directamente en el nodo Play Juice con el pin Skip Replication.
Skip Replication
El nodo Play Juice tiene un pin Skip Replication (bool). Este es el control principal de replicación:
- Skip Replication = false (por defecto): El feedback se replica a otros clientes según el modo de replicación configurado en el componente.
- Skip Replication = true: El feedback se ejecuta solo localmente en la máquina que lo invoca. No se envía nada por red.
Activa Skip Replication para efectos puramente cosméticos que no necesitan verse en otros clientes, como post-procesado personal, rumble del mando o efectos de primera persona.
Should Replicate (por feedback)
Cada feedback individual tiene una propiedad Should Replicate (bool, default true). Esto permite mezclar feedbacks replicados y locales dentro del mismo preset:
- Un Camera Shake con Should Replicate = true → se replica
- Un Rumble con Should Replicate = false → solo local (vibración del mando del jugador)
Cuando se reproduce un preset sin Skip Replication, solo se envían por red los feedbacks que tengan Should Replicate = true. Los demás se ejecutan solo en la máquina local.
Modos de replicación del componente
Cuando usas el Game Juice Component, puedes configurar su Replication Mode para controlar cómo se distribuyen los feedbacks replicados:
- Local Only: Todo se ejecuta localmente. Equivalente a tener Skip Replication siempre activo.
- Server Multicast: El servidor envía la orden a todos los clientes conectados.
Todos ven el mismo efecto.
Ideal para: explosiones, efectos de entorno, eventos globales. - Server Authoritative: Solo el servidor ejecuta el feedback. Usado para lógica que requiere validación del servidor.
- Owner Only: Solo el cliente propietario del actor recibe el feedback.
Ideal para: efectos de primera persona, feedback personal. - Skip Owner: Todos los clientes excepto el propietario reciben el feedback.
Ideal para: cuando el propietario ya ejecuta el efecto localmente y quieres que los demás lo vean también.
Network Proxy
En Unreal Engine, los RPCs del servidor requieren que el cliente tenga ownership sobre el actor. Esto es un problema para feedbacks en actores del mundo que no pertenecen a ningún jugador (enemigos, objetos del entorno, etc.).
GJPNetworkProxy resuelve este problema automáticamente. Es un componente ligero que se añade al PlayerController de cada jugador y actúa como relay:
- El cliente quiere ejecutar un feedback en un actor del mundo
- El proxy en su PlayerController (donde sí tiene ownership) envía un Server RPC
- El servidor ejecuta el feedback en el actor objetivo para los clientes relevantes
Este proceso es transparente: no necesitas configurar nada. El plugin lo gestiona automáticamente.
Relevancia por distancia
El Game Juice Component soporta Network Relevancy para optimizar el ancho de banda. Solo se replican feedbacks a clientes suficientemente cerca.
- Use Relevancy Distance: Activa el filtrado por distancia (default true)
- Relevancy Distance: Distancia máxima para recibir el feedback (default 5000 unidades)
- Only Replicate If Visible: Solo replica si el actor es visible para el cliente
Ejemplo: una explosión con distancia de relevancia de 5000 solo se enviará a jugadores dentro de ese radio, ahorrando ancho de banda en mapas grandes.
Buenas prácticas
- Activa Skip Replication en el nodo Play Juice para efectos puramente locales (rumble, post-procesado personal, sonidos de UI).
- Usa Should Replicate = false en feedbacks individuales que no necesitan verse en otros clientes aunque el preset sí se replique (ej: Rumble dentro de un preset de impacto).
- Los feedbacks de post-procesado (Chromatic Aberration, Bloom, etc.) afectan a la cámara individual, así que generalmente deben tener Should Replicate = false.
- Los feedbacks de transform (Scale, SquashStretch) en actores replicados necesitan replicarse para que todos vean el efecto visual.
- Configura Relevancy Distance en mapas grandes para evitar replicar feedbacks a jugadores lejanos.
- Activa Only Replicate If Visible para feedbacks sutiles que no merecen replicación si el jugador no los ve.
¿Necesitas ayuda?
Para dudas o sugerencias, únete a nuestro Discord.