Dans un gameplay en réseau, le rôle et le rôle distant d'un acteur déterminent quelle machine est autorisée à modifier l'état de l'acteur et à effectuer des appels de procédure à distance. Ces propriétés vous aident à répondre aux questions suivantes concernant un acteur dans votre jeu multijoueur :
Cet acteur est-il répliqué ou non ?
Qui a l'autorité sur cet acteur ?
Quel est le rôle de réplication pour cet acteur ?
Le rôle d'acteur et le rôle à distance ne sont pas la même chose que la propriété ! Pour plus d'informations, consultez Acteurs et leurs connexions propriétaires.
Afficher le rôle et le rôle à distance d'un acteur
Vous pouvez voir le rôle actuel et le rôle à distance d'un acteur dans le panneau détails de l'Unreal Editor :
Le rôle d'un acteur et son rôle à distance peuvent également être obtenus en C++ ou dans les blueprints.
Obtenir le rôle de l'acteur
Pour déterminer le niveau de contrôle de l'ordinateur local sur cet acteur, appelez AActor::GetLocalRole:
AMyActor* MyActor;
...
// Once you have a valid Actor pointer...
const ENetRole LocalRole = MyActor->GetLocalRole();
// LocalRole contains the Actor's Role
...Obtenir le rôle à distance de l'acteur
Pour déterminer le niveau de contrôle d'une machine distante sur cet acteur, appelez AActor::GetRemoteRole:
AMyActor* MyActor;
...
// Once you have a valid Actor pointer...
const ENetRole RemoteRole = MyActor->GetRemoteRole();
// RemoteRole contains the Actor's RemoteRole
...États de rôle des acteurs
Le rôle d'acteur et le rôle à distance sont représentés par un état de la classe d'énumération ENetRole (définie dans EngineTypes.h). Le tableau suivant répertorie ces états :
| État du rôle réseau | Description |
|---|---|
| Aucun rôle. Cet acteur n'est pas répliqué. |
| Proxy simulé de cet acteur. Cet acteur simule l'état réel, mais n'est pas autorisé à modifier l'état ou à appeler des fonctions à distance. |
| Proxy autonome de cet acteur. Cet acteur simule l'état réel et a l'autorité de changer l'état et d'appeler des fonctions à distance. |
| Contrôle autoritaire de cet acteur. Cet acteur détient le véritable état pour la mise en réseau et a l'autorité de changer l'état et d'appeler des fonctions. Cet acteur est également chargé de suivre les modifications de propriétés et de les répliquer aux clients connectés. |
Matrice des rôles pour client-serveur
L'Unreal Engine utilise le modèle client-serveur pour la mise en réseau. En conséquence, le serveur a toujours autorité sur les acteurs répliqués. Cela signifie que seul le serveur devrait voir ROLE_Authority pour les acteurs répliqués. Les acteurs non répliqués peuvent avoir un rôle local de ROLE_Authority sur les clients et un rôle à distance de ROLE_None.
Le tableau suivant fournit une matrice des rôles locaux et distants, indiquant si un serveur ou un client est témoin de cette combinaison de rôles, ainsi qu'une description de la signification de cette combinaison :
| Rôle local | Rôle à distance | Serveur ou client | Description |
|---|---|---|---|
|
| Serveur | Ce pion acteur est contrôlé par l'un des clients connectés. |
|
| Client | Ce pion acteur est contrôlé par ce client connecté. |
|
| Client | Ce pion acteur est contrôlé par l'un des autres clients connectés. Les acteurs répliqués qui ne sont contrôlés par aucun client peuvent également avoir cette combinaison de rôles. |
|
| Client | Il s'agit d'un acteur non répliqué. |
Simulation de réplication d'acteur
Les serveurs ne répliquent pas tous les acteurs à chaque mise à jour, car cela utiliserait trop de bande passante et de ressources CPU. Au lieu de cela, le serveur réplique les acteurs à la fréquence spécifiée dans la propriété AActor::NetUpdateFrequency. Cela signifie qu'un certain temps s'écoule chez le client avant la prochaine mise à jour des acteurs. Cela pourrait entraîner des mouvements saccadés et sporadiques pour les acteurs dotés d'un composant de mouvement de personnage. Pour compenser cela, le client simule le mouvement des personnages entre les mises à jour.
Pour plus d'informations sur la simulation de réplication et le déplacement des personnages, consultez la documentation sur les mouvements en réseau dans le composant Character Movement.
Rôle et référence de rôle à distance
Fonctions
| Nom | Description |
|---|---|
Copie le rôle à distance d'un autre acteur et ajoutez cet acteur à la liste des acteurs réseau si nécessaire. | |
Échange le rôle et le rôle à distance si vous êtes sur le client. | |
Renvoie le niveau de contrôle de l'ordinateur local sur cet acteur. | |
Renvoie le niveau de contrôle de l'ordinateur distant sur cet acteur. | |
Donne le nom de la propriété pour le rôle. | |
Si vrai, cet acteur n'est plus répliqué sur les nouveaux clients et est "détaché" (devient | |
Appelé immédiatement après la réception d'un nouveau rôle de la machine distante. | |
Utilisé dans le constructeur des classes qui doivent définir le rôle à distance à des fins de rétrocompatibilité. | |
Définir la valeur du rôle sans provoquer d'autres effets secondaires sur cette instance. | |
Inverser le rôle et le rôle à distance pour cet acteur. Faites preuve de prudence et n'appelez cette fonction que si vous avez conscience des effets secondaires. |
Propriétés
| Nom | Description |
|---|---|
Si le rôle et le rôle à distance ont été échangés sur le client. |