Créer la base d'un jeu vidéo avec DirectX

DirectX est la brique de Windows gérant les applications multimédia. Elle offre aux développeurs des librairies pour programmer des jeux vidéos. Construction d'une interface de base en C#.

DirectX offre aux développeurs de hautes performances graphiques pour les jeux vidéos. Aujourd'hui en version 10, cette brique de Windows est compatible avec la dernière génération de matériels d'accélération graphique 3D. DirectX propose également des librairies permettant aux développeurs de créer leurs propres jeux vidéos. DirectX est utilisable avec de nombreux langages de programmation : C, C++, .Net, Delphi...

 

Pour créer un jeu vidéo dans cet environnement, deux outils sont indispensables : un environnement de développement assez puissant comme Visual Studio, et l'API DirectX. L'interface de programmation contient une collection de fonctions conçues pour interagir avec les fonctionnalités matérielles de l'ordinateur. Le SDK DirectX fournit les API avec des exemples, de la documentation et des outils de développement, ainsi que les DLL nécessaires pour exécuter un programme sous DirectX.

 

 
Les grandes bibliothèques de DirectX
Source : Benchmark Group
DirectGraphics Gestion des graphismes 2D et 3D. Elle est accompagnée de D3DX qui apporte des fonctionnalités supplémentaires.
DirectMusic Gestion des sons et musiques
DirectSound Gestion des sons au format Wave
DirectShow Gestion des vidéos
DirectInput Gestion des périphériques d'entrées (clavier, souris...)
DirectSetup Gestion de l'installation des composants DirectX.
DirectPlay Gestion des échanges réseau.

 


Pour utiliser une bibliothèque, il faut créer une référence vers celle-ci. Les API de DirectX possèdent toutes une classe abstraite Device qui évite au développeur de traiter les spécificités de chaque matériel installé sur la machine du joueur. Le design du projet est créé avec la méthode Paint.

 

L'exemple suivant utilise DirectX avec C#. Le programme affiche un simple écran bleu qui servira de support au projet.

 

//références vers les bibliothèques

        using Microsoft.DirectX;

        using Microsoft.DirectX.Direct3D;

 

// création d'un Device

        private Device device = null;

 

// initialisation du Device

public void InitializeGraphics( ) 

         { 

           //On definit les paramètres de présentation
           PresentParameters Params = new PresentParameters();


           //On spécifie que l'application sera dans une fenêtre
           Params.Windowed = true;
           Params.SwapEffect = SwapEffect.Discard;


           //Création du device
           device = new Device(0, DeviceType.Hardware, this,  CreateFlags.SoftwareVertexProcessing, Params);
          }

 

 

 

// initialisation de la méthode Paint qui va créer le design

private void Form1_Paint(object sender, PaintEventArgs e)
       {
           //la fenêtre sans rien sera de couleur Bleu
           device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0f, 0);
 
           //entre BeginScene et EndScene on informe directX qu'on
           //veut dessiner
           device.BeginScene();
           //Aujourd'hui on ne veut rien dessiner 
           device.EndScene();
 
           device.Present();
       }

// création du main

static void Main()   
       {
           using (Form1 frm = new Form1())
           {
               //Fait apparaître la form
               frm.Show();
               //Initialise le device
               frm.InitializeGraphics();

               //Ce qui suit est par défaut lorsqu'on crée un projet Windows Application nous n'en auront pas besoin
              //Application.EnableVisualStyles();
              //Application.SetCompatibleTextRenderingDefault(false); 
  
               //Execute l'application
               Application.Run(frm);
           }
       }

Cette base contiendra par la suite les objets 3D du monde virtuel. Un objet 3D est formé d'une multitude de triangles assemblés les uns aux autres. Ils sont créés à la main, ce qui nécessite de nombreux calculs, ou avec des outils dédiés comme 3DsMax.

DirectX ne pouvant lire les fichiers 3D qu'en format X, le SDK contient un utilitaire pour transformer les fichiers 3D propriétaires en format X. Les objets vont être manipulés à l'aide de coordonnées cartésiennes (X, Y et Z pour la profondeur). Il faut également gérer la lumière et la vue que l'utilisateur va avoir de la scène à l'aide d'une caméra virtuelle. 

 

Code provenant de Games Creators Network sous licence Creative commons Attribution-Noncommercial-Share Alike 3.0 Unported