Em jogabilidade em rede, a função de ator e a função remota determinam que máquina tem autoridade para alterar o estado do ator e realizar chamadas de procedimento remoto. Essas propriedades ajudam você a responder às seguintes perguntas sobre um ator no jogo multijogador:
Este ator é replicado ou não?
Quem tem autoridade sobre este ator?
Qual é a função de replicação para este ator?
Função de ator e função remota não são o mesmo que propriedade! Para obter mais informações, consulte Atores e suas conexões proprietárias.
Ver a função de ator e função remota
Você pode ver a função de ator e função remota atual no painel Detalhes do Unreal Editor:
A função de ator e função remota também podem ser obtidas em C++ ou Blueprints.
Obter função de ator
Para determinar quanto de controle a máquina local tem sobre este ator, chame AActor::GetLocalRole:
AMyActor* MyActor;
...
// Once you have a valid Actor pointer...
const ENetRole LocalRole = MyActor->GetLocalRole();
// LocalRole contains the Actor's Role
...Obter função remota do ator
Para determinar quanto de controle uma máquina remota tem sobre este ator, chame AActor::GetRemoteRole:
AMyActor* MyActor;
...
// Once you have a valid Actor pointer...
const ENetRole RemoteRole = MyActor->GetRemoteRole();
// RemoteRole contains the Actor's RemoteRole
...Estados de função de ator
A função de ator e a função remota são representadas por um estado da classe de enumeração ENetRole (definida em EngineTypes.h). A tabela a seguir lista e descreve esses estados:
| Estado da função de rede | Descrição |
|---|---|
| Nenhuma função. Este ator não é replicado. |
| Proxy simulado deste ator. Este ator simula o estado verdadeiro, mas não tem autoridade para alterar o estado ou chamar funções remotas. |
| Proxy autônomo desse ator. Este ator simula o estado verdadeiro e tem autoridade para alterar o estado e chamar funções remotas. |
| Controle autoritário deste ator. Este ator mantém o estado verdadeiro para a rede e tem autoridade para alterar o estado e chamar funções. Este ator também é responsável por acompanhar as alterações de propriedade e replicá-las para os clientes conectados. |
Matriz de funções para cliente-servidor
A Unreal Engine usa o modelo cliente-servidor para a rede. Como resultado, o servidor sempre tem autoridade sobre atores replicados. Isso significa que apenas o servidor deve ver ROLE_Authority para atores replicados. Atores não replicados podem ter uma função local de ROLE_Authority nos clientes e uma função remota de ROLE_None.
A tabela a seguir fornece uma matriz de função local e função remota, determina se um servidor ou cliente está testemunhando essa combinação de funções e descreve o que essa combinação significa:
| Função local | Função remota | Servidor ou cliente | Descrição |
|---|---|---|---|
|
| Servidor | Este ator pawn é controlado por um dos clientes conectados. |
|
| Cliente | Este ator pawn é controlado por este cliente conectado. |
|
| Cliente | Este ator pawn é controlado por um dos outros clientes conectados. Atores replicados que não são controlados por nenhum cliente também podem ter essa combinação de funções. |
|
| Cliente | Este é um ator não replicado. |
Simulação de replicação de ator
Os servidores não replicam todos os atores a cada atualização porque consumiria muita largura de banda e recursos da CPU. Em vez disso, o servidor replica atores na frequência especificada na propriedade AActor::NetUpdateFrequency. Isso significa que há um intervalo de tempo no cliente entre as atualizações do ator. Isso pode resultar em atores com um componente de movimento de personagem parecendo desconectados e esporádicos. Para compensar, o cliente simula o movimento do personagem entre atualizações.
Para obter mais informações sobre simulação de replicação e movimento de personagens, consulte a documentação Movimento em rede no componente de movimento do personagem.
Referências sobre função e função remota
Funções
| Nome | Descrição |
|---|---|
Copie a função remota de outro ator e adicione este ator à lista de atores de rede, se necessário. | |
Troque a função e a função remota se estiver no cliente. | |
Retorna quanto controle a máquina local tem sobre este ator. | |
Retorna quanto controle a máquina remota tem sobre este ator. | |
Obter o nome da propriedade para a função. | |
Se verdadeiro, este ator não é mais replicado para novos clientes e é "desvinculado" (torna-se | |
Chamado imediatamente depois que uma nova função é recebida da máquina remota. | |
Usado no construtor de classes que devem definir a função remota para fins de compatibilidade com versões anteriores. | |
Defina o valor da função sem causar outros efeitos colaterais a esta instância. | |
Troque a função e a função remota para este ator. Use cautela e só chame esta função se você entender os efeitos colaterais. |
Propriedades
| Nome | Descrição |
|---|---|
Caso a função e a função remota tenham sido trocadas no cliente. |