Virtual Laboratory Microsoft.net XNA

[EXPER’TECH] Laboratoire physique virtuel Avec Microsoft.net XNA


Les bases techniques

Le critère principal lors du choix de logiciel pour le développement d’un laboratoire physique virtuel est la rapidité de création des projets. Le travail du laboratoire virtuel doit remplacer les vraies installations expérimentales et le principal avantage est que sa quantité peut être illimitée. Lors du choix de la plateforme de développement, il est nécessaire de passer en revue les solutions existantes comme XNA Framework ou Unity 3D Engine ou Unreal Development Kit.

Microsoft XNA représente l’ensemble des outils compatibles à l’environnement d’exécution (.net) qui a été développé par Microsoft dans le but de faciliter le développement et la gestion des jeux vidéo. Le concept principal du XNA est de permettre aux développeurs de ne pas avoir à réécrire le « modèle de code répété ». De plus, XNA inclus l’intégration de la majorité des outils de développement de jeux vidéo en un seul et même système.

La base de la structure du XNA est composée de .net Compact Framework 2.0 pour développer les jeux sous Windows (certaines implémentations permettent également le développement pour Xbox 360). Cette structure est accompagnée d’une collection de librairies qui sont directement utilisées pour créer des jeux interactifs avec des graphiques élaborés, supportant un maximum la réutilisation de code sur toutes les plateformes cibles, ce qui permet de développer sur plusieurs plateformes. Cette structure s’exécute sur une version modifiée du Common Language Runtime, optimisée pour le développement de jeux, dans le but de fournir un environnement de runtime maniable. L’environnement est disponible pour Windows XP, Windows Vista Windows 7 et pour Xbox 360 (Winterhalter, 2011).

Le toolkit inclus :

  • “Wrapper” pour DirectX (Direct3d, XINPUT, XACT)
  • Classes Game, GameComponent, GameWindow qui composent la structure d’applications jeux
  • Une collection de classes auxiliaires qui fonctionnent avec les vecteurs, matrices, rayons, quaternions et d’autres fonctions mathématiques (fonctions qui ne sont pas implémentées dans le System.Math standard qui est fourni)
  • “Content Pipeline structure” qui détermine les spécificités du contenu du système XNA

La plateforme XNA insiste fortement sur le PARADIGME ORIENTÉ OBJET, qui permet l’optimisation du code, en accélérant les procédures de développement et de modifications du code en équipe (C# Language Specification, 2015).


La structure et l’implémentation du fonctionnement du laboratoire

Le laboratoire fonctionne comme une application sur XNA qui repose sur les systèmes suivants :

  • Le contenu et son chargement (les ressources nécessaires aux graphiques des jeux, les textes, les fichiers audios, etc.)
  • L’affichage graphique (en 2D)
  • Le traitement des contrôles (la réaction du jeu aux différentes actions de la souris, du clavier ou de la manette)
  • La logique du jeu et l’interaction entre tous les composants du jeu

La classe Game est utilisée de la même manière que le noyau de fonctionnement du laboratoire ou de n’importe quel jeu sur XNA. Dans la classe Game, les méthodes abstraites telles que Draw, Update, LoadContent, UnloadContent, Initialize et d’autres encore sont implémentées. Ainsi, chaque application ultérieure hérite de cette classe et remplace les méthodes importantes (événement dans le cas des jeux) pour ses objectifs. Cela détermine la logique de la future application. De plus, GameWindow classes, Graphic Device, etc. sont les propriétés de la classe parente du jeu (Winterhalter, 2011).

L’implémentation de la classe de base permet de gérer la boucle du jeu, de nettoyer l’écran (le remplir avec une couleur uniforme) et de manipuler les événements en appuyant sur certains boutons (pour fermer la fenêtre du jeu). Le chargement du contenu est supporté par la méthode LoadContent.


Chargement du contenu

Travailler sur XNA présume des opérations spécifiques au contenu du système. XNA fournit un ensemble de « content processors » et « content importers » (il est possible d’ajouter ses propres ressources, en plus de l’utilisation des ressources standards). Le contenu apporté par les importateurs au moment de la compilation transformera le contenu de formats externes supportés vers une interprétation interne, compatible avec XNA (Winterhalter, 2011). Ensuite, les ressources du programme, comme des textures dans les formats dds, bmp et png lors de la compilation, sont converties en un seul et même format externe, uniforme à toutes les structures. Cette approche permet d’éviter la dépendance à un seul format de contenu, par exemple en utilisant les modèles md3 il est nécessaire d’écrire uniquement via un importateur de contenu additionnel. Les processeurs de contenu sont engagés pour reformater le contenu depuis une représentation externe des objets du code géré, comme le chargement du contenu dans la mémoire lors de l’exécution. De plus, XNA approvisionne les importateurs et processeurs pour la plupart des types de contenu. Solution Explorer studio est utilisé pour ajouter le contenu à l’application grâce à un fichier spécial « Content ». Ici, un importateur et un processeur spécifique sont assignés à chaque ressource. Le contenu du code géré est représenté dans les classes Texture, Texture2D, Model, Model Mesh, Effect, etc.

Le chargement dans un code est réalisé par la classe ContentManager (Content Field Class Game), et est supporté par la méthode LoadContent des classes de jeux (selon le bon style de code).

Les processeurs standards sont :

  • Models
  • Textures
  • Raster fonts
  • Shaders


L’affichage graphique

L’affichage des graphiques et des textes est basé sur la classe SpriteBatch. En conséquence, le cas SpriteBatch est créé lorsque la méthode Draw est appelée :

  • SpriteBatch.Begin () dessine
  • SpriteBatch.Draw () est appelée pour dessiner le ‘’sprite’’ (le dessin de toutes les textures ou de ses fragments)
  • SpriteBatch.End () achève le processus de dessin

Avec SpriteBatch.Draw (), les paramètres (la position sur l’écran où la texture est dessinée) pivotent, s’inclinent et se balancent. Aussi, les classes SpriteBatch font automatiquement un tri par Z (Z-order). Les ressources des textures sont transférées par la méthode SpriteBatch.Draw () comme référence à la classe Texture2D, qu’on obtient en téléchargeant le contenu dans l’application.


Les contrôles

Le projet d’un laboratoire virtuel « Détermination du champ magnétique terrestre (composante horizontale) » inclut la classe, sa structure et les relations entre eux qui sont données en Figure 2.

En plus du projet des classes montré dans la figure, il existe un ensemble spécial de classes avec des méthodes statiques, comme Keyboard, Mouse, GamePad, qui représentent un appareil spécifique. Chaque classe possède la méthode GetState() qui déclare respectivement KeyboardState, MouseState, GamePadState (par exemple, position X,Y sur curseur de la souris), ou l’état du code du clavier.

Ci-dessous, la liste des projets de classes :

  • Button
  • Desktop
  • DesktopElement
  • Element
  • Frame
  • Global
  • Message
  • Table
  • Toolbars
  • Toolbox
  • ToolboxElement
  • Wire

Circuit Testing est réalisé par la classe Button dans la méthode checkCircuit(). Le programme détermine si les éléments nécessaires sont présents à l’écran (la liste des objets définis dans la série) et s’ils sont connectés (la connexion est définie pas la classe Wire). Table est une classe qui est en charge de l’affichage de la table des calculs et de l’information qu’elle contient.

Figure 2: La classe du diagramme du fonctionnement du laboratoire virtuel
« Détermination du champ magnétique terrestre (composante horizontale) ».


Gestion de l’application jeu sur la machine utilisateur

Ci-dessous la liste des logiciels nécessaires pour gérer le fonctionnement du laboratoire sur l’ordinateur personnel de l’utilisateur :

  •  .net Framwork 2.0 Redistributable
  • XNA Redistribuable
  • DirectX Redistribuable

De plus, la carte vidéo compatible avec Shader 1.1 est nécessaire.


L’interaction utilisateur

Le processus de gestion du fonctionnement du laboratoire virtuel dans la réalisation de certaines séquences d’actions, qui inclut la saisie des données initiales, commence avec l’expérimentation et l’enregistrement des résultats. La figure 3 montre la Flow Chart de l’interaction utilisateur avec le fonctionnement du laboratoire « Détermination du champ magnétique terrestre (composante horizontale) ».

Figure 3: Etape du diagramme du fonctionnement du laboratoire virtuel
« Détermination du champ magnétique terrestre (composante horizontale) ».


Le début du scénario signifie le point d’entrée dans le fonctionnement du laboratoire. Après le lancement du programme, le menu principal du programme est affiché à l’utilisateur, qui est désigné comme Desktop. En plus de la simulation du support pour la construction du circuit électrique, le menu principal possède le bouton Submit pour commencer la simulation du verrouillage/déconnexion du circuit et l’affichage du signe Help. Après le verrouillage du circuit, les résultats des calculs et des mesures des éléments du circuit sont enregistrés dans la table (classe Table). Tous les éléments du projet sont connectés en utilisant une classe Global spéciale. Dans le cas d’une construction erronée du circuit, le message d’erreur « Circuit is incorrect » est affiché.

Les fenêtres de contrôle des éléments sont utilisées pour la conception de l’interface utilisateur pour le fonctionnement du laboratoire virtuel. En général, tous les étudiants connaissent bien les systèmes d’exploitation Microsoft Windows. L’usage des éléments de contrôle communs, comme les boutons, les champs de donnée, les fenêtres, les barres de défilement, etc. simplifient le processus de compréhension et de gestion du laboratoire virtuel. De plus, la référence complète est disponible pour les étudiants. L’interface modèle pour le laboratoire « Détermination du champ magnétique terrestre (composante horizontale) » est donnée en figure 4.

Figure 4: Le modèle de l’interface de fonctionnement du laboratoire virtuel
« Détermination du champ magnétique terrestre (composante horizontale) ».

Figure 5: Le modèle de l’interface de fonctionnement du laboratoire virtuel
« Détermination du champ magnétique terrestre (composante horizontale) ».


Une formation sur la simulation du support pour construire un circuit électrique est disponible pour les étudiants (figure 5). Dans ce cas, les étudiants choisissent des objets dans la liste des outils et les placent sur le support. Les étudiants ont besoin de déployer un câble entre les éléments pour construire le circuit. Le câble est un outil par défaut, par conséquent il sera l’élément de fonctionnement si aucun de ces outils n’est choisi. Les boutons pour débuter la simulation et le menu auxiliaire sont situés sur l’écran initial. Si le circuit est construit avec une erreur, le message d’erreur apparait. Pendant la simulation, les étudiants ont l’option de l’arrêter et de continuer à construire le circuit depuis la dernière sauvegarde.



Ecrit par Alibek Jakupov, traduit de l’anglais.