Passer au contenu principal
Version: bleeding-edge 🩸

Authority Concepts

Tout ce que vous avez besoin de savoir sur les concepts d'autorité et d'autorité de réseau.

Autorité

Certaines classes ne peuvent être créées que par le serveur, d'autres ne peuvent être créées que par le client, et il y en a quelques-unes qui peuvent être créées à la fois par le serveur ou par le client. Le côté où la Classe est créée est appelé Autorité.

Disponibilité des méthodes et des événements

Certaines méthodes et événements dans l'API ne sont disponibles que sur un côté spécifique \(Client ou Serveur\), les autres ne sont disponibles que dans le côté qui a l'autorité):

Côté Serveur

Méthode ou Événements qui ne peuvent être appelés que par le côté Serveur.

Côté Client

Méthode ou Événements qui ne peuvent être appelés que par le côté Client.

Côté Autorité

Méthodes ou Événements qui ne peuvent être appelés que par le côté qui l'a créé.

Côté Partagé

Méthodes ou Événements qui peuvent être appelés dans n'importe quel côté.

tip

Toutes les entités créées par le Serveur seront automatiquement synchronisées pour le Client. Par ex. vous pouvez accéder à ses méthodes et obtenir toutes les données sans avoir besoin de la synchroniser manuellement.

De la même manière, les entités créées par le Client n'existeront que pour ce Client, envoyer ces entités au serveur causera des erreurs.

Autorité Réseau

Un autre concept important dans Nanos World est l'Autorité Réseau. Nous avons un concept "d'autorité réseau distribuée" , ce qui signifie que le travail de calcul de la physique et de l'IA (par exemple) sont automatiquement assignés et distribués aux clients. In general, if an Actor is near an in-game Character, it's physics will be calculated by that player's device. Le Joueur qui est responsable du calcul et du partage des résultats s'appelle l'Autorité Réseau.

Le Joueur assigné en tant qu'autorité réseau est automatiquement calculé par le serveur et prend certaines choses en considération, et si le joueur est en posséssion d'un personnage, dont:

  • La distance entre le Personnage et l'objet
  • Si le Personnage saisit un objet Prop
  • If the Character is handling a Pickable
  • Si le Personnage conduit un Véhicule
  • Si le personnage vient juste de tirer sur quelque chose

Dans tous ces cas, le Joueur sera automatiquement assigné à être l'Autorité Réseau de cet objet.

Outrepasser l'Autorité Réseau actuelle

Il est possible de remplacer l'actuelle autorité réseau d'une entité spécifique en utilisant la méthode :SetNetworkAuthority().

caution

Remarque : Certains acteurs ne sont pas Distribués par le Réseau. Cela signifie qu'ils ne seront pas automatiquement assignés ni capables de modifier leur Autorité Réseau. Vous pouvez vérifier si une entité est distribuée par le réseau avec la méthode :IsNetworkDistributed().

Exemples d'actions qui ne sont exécutées que par l'Autorité Réseau de cet acteur

  • Synchronisation de la physique des objets (y compris lors de l'appel de :SetForce()).
  • Les PNJ se déplaçant avec :MoveTo() ou :Follow().

Débogage du Réseau & de l'Autorité Réseau

Nous avons ajouté une nouvelle option dans les paramètres pour Afficher les informations de débogage de réseau dans le monde, vous pouvez l'activer/désactiver dans les paramètres (Settings -> Debug-> Draw Network Debug), il dessinera des carrés sur chaque entité et des traces représenteront leur mouvements sur le réseau.

Signification des Carrés de couleurs sur l'Entité

Le carré sur les entités représente l'état de l'Autorité Réseau et sa santé.

CouleurSignification
BLEUVous êtes l'Autorité Réseau actuelle de cette entité.
Vous partagez des données de synchronisation avec les autres joueurs.
BLANCVous n'êtes pas l'Autorité Réseau et l'entité est en veille.
L'autorité réseau actuelle n'envoie pas de données synchronisées car l'entité est en veille.
VERTVous n'êtes pas l'Autorité Réseau et l'entité est en cours de synchronisation dans une cadence excellente (pas de retard).
ORANGEVous n'êtes pas l'Autorité Réseau et l'entité est en cours de synchronisation dans une cadence correcte (petit décalage - < 100ms).
ROUGEVous n'êtes pas l'Autorité de Réseau et l'entité est en cours de synchronisation dans une cadence ralentie (grand décalage - > 100ms, peut-être même avec la perte de paquets).

Signification des Traces de couleurs sur l'Entité

Les traces dans les entités représentent les données réseau reçues du serveur. Si vous êtes l'autorité du réseau, vous ne verrez pas ces traces. La flèche pointe à partir de l'endroit où l'entité se trouve actuellement sur votre machine et où elle devrait être en conséquence à l'Autorité Réseau.

CouleurSignification
VERTL'entité est en cours de synchronisation dans une cadence de excellente (pas de décalage).
ORANGEL'entité est en cours de synchronisation dans une cadence correcte (petit décalage - < 100ms).
ROUGEL'entité est en cours de synchronisation dans une cadence ralentie (grand décalage - > 100ms, peut-être même avec perte de paquets).