Le principe de l’automatisme est de mettre automatiquement à jour une grande liste d’objets.
Il est ainsi particulièrement utile de créer un groupe contenant les objets à mettre à jour, et appeler l’action pour générer les identifiants sur ce groupe, le tout au lancement de la scène afin que tous les ordis possèdent les mêmes identifiants.
-Donc, si tu gère deux joueurs, le mieux est peut être de gérer toi même leur déplacement, d’autant plus que le deuxième doit pouvoir être bougé par le deuxième ordinateur. Ainsi, tu peux envoyer toi même la position/angle/animation des joueurs par exemple.
-Tu peux aussi utiliser un automatisme avec un nom différent pour chaque objet joueur, et ensuite configurer l’automatisme en envoi/réception suivant que l’ordinateur controle le joueur ou non. Dans ce cas, il te faut donc un automatisme avec un nom différent pour chaque joueur, et faire attention à ce que le nom des données envoyées par chaque automatisme diffère. Tu peux ainsi remplacer “Object” par “Player1” ou “Player2”… dans la configuration de l’automatisme.
Question pas facile, dans l’exemple que j’ai commencé à faire, j’ai laissé chaque ordinateur gérer ses projectiles vu qu’on les voit pas.
Sans automatisme, le principe serait le suivant :
Quand un ordinateur créé un tir, il envoie une demande au serveur de créer un nouveau tir à telle position.
Le serveur reçoit la demande, et créer un objet tir. Il envoie aux clients une information comme quoi ils doivent créer un tir à telle position, avec telle force.
Le principe est que l’autorisation et la gestion des tirs est faite par le serveur. Les clients ne font qu’afficher le tir.
Avec l’automatisme, il faut t’assurer de créer un objet tir sur chaque ordinateur, en envoyant comme précédemment une demande de création d’objet tir par exemple, et qu’ils possèdent tous le même identifiant, en envoyant par exemple aussi l’identifiant aléatoire choisi par le serveur.
Ensuite, l’ordinateur qui envoie les données doit s’occuper de gérer le déplacement de l’objet, et ce sera répercuté sur les ordinateurs recevant les données.
Une seule fois, à la création par exemple, suffit. De même pour l’état de réception.
Si tu met en mode réception de donnée, l’automatisme va récupérer les données de la forme ObjectX/… ( X représentant un nombre, et les … représentant le nom de la donnée, genre X, Y, Angle… ). Ensuite, il mettra à jour l’objet ayant l’identifiant X avec les données.
A l’inverse, en mode envoi de données, l’automatisme va envoyer pour chaque objet des données de la forme ObjectX/… où X représente l’identifiant de chaque objet, et les … le nom de chaque donnée.
C’est aussi pour cela que si tu utilise plusieurs automatismes de ce type, il est possible de changer le “Object” en autre chose. Tu peux aussi vérifier manuellement les données que tu reçois en affichant par exemple la valeur de la donnée nommée “Object0/X” qui te donnera la position X de l’objet avec l’identifiant 0. ( Souvent le premier objet )