En el juego en red, el rol y el rol remoto de un actor determinan qué máquina tiene la autoridad para cambiar el estado del actor y realizar llamadas a procedimientos remotos. Estas propiedades te ayudan a responder las siguientes preguntas sobre un actor en tu juego multijugador:
¿Este actor está replicado o no?
¿Quién tiene autoridad sobre este actor?
¿Cuál es el rol de replicación para este actor?
¡El rol de actor y el rol remoto no son lo mismo que la propiedad! Para obtener más información, consulta Actores y sus conexiones propietarias.
Ver el rol y el rol remoto de un actor
Puedes ver el rol actual y el rol remoto de un actor en el panel Detalles de Unreal Editor:
El rol de un actor y el rol remoto también se pueden obtener en C++ o Blueprints.
Obtener rol del actor
Para determinar cuánto control tiene la máquina local sobre este actor, llama a AActor::GetLocalRole:
AMyActor* MyActor;
...
// Once you have a valid Actor pointer...
const ENetRole LocalRole = MyActor->GetLocalRole();
// LocalRole contains the Actor's Role
...Obtener rol remoto del actor
Para determinar cuánto control tiene una máquina remota sobre este actor, llama a AActor::GetRemoteRole:
AMyActor* MyActor;
...
// Once you have a valid Actor pointer...
const ENetRole RemoteRole = MyActor->GetRemoteRole();
// RemoteRole contains the Actor's RemoteRole
...Estados de rol del actor
El rol de actor y el rol remoto se representan mediante un estado de la clase de enumeración ENetRole (definida en EngineTypes.h). En la siguiente tabla, se enumeran y describen estos estados:
| Estado de rol de red | Descripción |
|---|---|
| Sin rol. Este actor no está replicado. |
| Proxy simulado de este actor. Este actor simula el estado real, pero no tiene autoridad para cambiar el estado o llamar a funciones remotas. |
| Proxy autónomo de este actor. Este actor simula el estado real y tiene la autoridad para cambiar el estado y llamar a funciones remotas. |
| Control autoritario de este actor. Este actor mantiene el estado real de la red y tiene la autoridad para cambiar el estado y llamar a funciones. Este actor también se encarga de hacer un seguimiento de los cambios de propiedades y replicarlos a los clientes conectados. |
Matriz de roles para cliente-servidor
Unreal Engine usa el modelo cliente-servidor para la conexión en red. Como resultado, el servidor siempre tiene autoridad sobre los actores replicados. Esto significa que solo el servidor debería ver ROLE_Authority para los actores replicados. Los actores no replicados pueden tener un rol local de ROLE_Authority en los clientes y un rol remoto de ROLE_None.
La siguiente tabla proporciona una matriz de función local y función remota, inidca si un servidor o un cliente son testigos de esta combinación de funciones, y una descripción de lo que significa esta combinación:
| Rol local | Rol remoto | Servidor o cliente | Descripción |
|---|---|---|---|
|
| Servidor | Uno de los clientes conectados controla este peón actor. |
|
| Cliente | Este peón actor está controlado por este cliente conectado. |
|
| Cliente | Este peón actor está controlado por uno de los otros clientes conectados. Los actores replicados que no están controlados por ningún cliente también pueden tener esta combinación de roles. |
|
| Cliente | Este es un actor no replicado. |
Simulación de replicación de actores
Los servidores no replican todos los actores en cada actualización porque eso consumiría demasiado ancho de banda y recursos de CPU. En su lugar, el servidor replica actores con la frecuencia especificada en la propiedad AActor::NetUpdateFrequency. Esto significa que pasa un tiempo en el cliente entre las actualizaciones del actor. Esto podría hacer que los actores con un componente de movimiento de personaje se muevan de forma entrecortada y esporádica. Para compensar esto, el cliente simula el movimiento del personaje entre actualizaciones.
Para obtener más información sobre la simulación de replicación y el movimiento de personajes, consulta la documentación sobre Networked Movement in the Character Movement Component.
Referencia de rol y rol remoto
Funciones
| Nombre | Descripción |
|---|---|
Copia el rol remoto de otro actor y añade este actor a la lista de actores de red si es necesario. | |
Intercambiar rol y rol remoto si está en el cliente. | |
Devuelve cuánto control tiene la máquina local sobre este actor. | |
Devuelve cuánto control tiene la máquina remota sobre este actor. | |
Obtiene el nombre de la propiedad para el rol. | |
Si es cierto, este actor ya no se replica a los nuevos clientes y se "desvincula" (pasa a ser | |
Se invoca inmediatamente después de recibir un nuevo rol de la máquina remota. | |
Se utiliza en el constructor de clases que deben establecer el rol remoto por motivos de compatibilidad con versiones anteriores. | |
Establece el valor de rol sin causar otros efectos secundarios a esta instancia. | |
Intercambiar el rol y el rol remoto para este actor. Ten precaución y solo llama a esta función si comprendes los efectos secundarios. |
Propiedades
| Nombre | Descripción |
|---|---|
Si se han intercambiado el rol y el rol remoto en el cliente. |