Au cours de mon stage de quatre mois chez ArcelorMittal au Digital Lab d’Uckange, j’ai eu l’opportunité de travailler en tant qu’ingénieur solutions immersives. J’ai conçu un outil sur Unity sous forme de package permettant d’enregistrer les données liées à l’utilisation du projet. Cet outil facilite également la création d’applications de formation grâce à un système de graphe dans l’éditeur de Unity.
Le logiciel permet d’enregistrer les données en local sous le format Xapi. C’est un format de données surtout utilisé dans les sites d’e-learning. Cela se présente sous la forme d’une phrase dans un fichier .json. Il y a différents paramètres formant la phrase : acteur, verbe, objet, contexte, data, … Les interactions des utilisateurs sont enregistrées en local. Cela peut être par exemple “L’utilisateur ouvre la porte 8 le 18/09/2023”. Ce format permet donc d’enregistrer des informations très précises.
En plus du local, d’autres données plus globales sont enregistrées en distanciel via Unity Analytics. Sur le site de Unity Analytics on peut créer des dashboards permettant de suivre globalement différentes métriques sur une application. L’envoi d’informations se fait via des events qui sont constituées d’un nom et d’une liste de paramètres. Les paramètres étant un nom associé à une valeur (int, float, string, bool).
Le package contient un système d’objectifs aidant le développeur à créer une application de formation. Pour valider une formation il est commun de devoir réaliser des objectifs et en plus dans un certain ordre. Ces derniers représentent une interaction de l’utilisateur (Xapi). Ces objectifs sont organisés dans ce que j’ai appelé des séquences. Ce sont des listes d’objectifs qui doivent être réalisés en parallèle ou en série. Certaines applications ayant un système d’objectifs complexes, le package permet de gérer plusieurs séquences en même temps.
L’outil utilise un système d’identifiant pour la plupart des objets. Il est possible d’obtenir des erreurs en ayant 2 objets avec le même identifiant. Ce problème est indiqué dans l’éditeur à plusieurs endroits : sur les composants interactable object concernés, dans la hiérarchie les game objects concernés sont rouges, dans le graphe les interactable object sont en rouges.
En plus de cela il est possible de visualiser directement l’avancée de la réalisation des objectifs en playmode grâce au graphe. Les objectifs réalisés se mettent en vert et ceux en cours de réalisation en orange. De plus, un résumé de la dernière interaction réalisée est indiqué.
Pour enregistrer les données et créer les objectifs, le développeur dispose de plusieurs outils dans l’éditeur. Il y a le composant interactable object qui permet d’indiquer que l’utilisateur peut interagir avec le gameobject. Les objectifs sont représentés dans un graphe, dans lequel les nœuds sont des séquences ou des interactables object. On peut lier un interactable object à un objectif contenu dans une séquence pour indiquer que l’objectif consiste à intéragir sur cet interactable object. On peut également remplir les états dans lequel l’objet doit être pour valider l’objectif.