Création d'un projet de jeu vidéo Etape 1

by Fabien Lavocat 18. November 2007 02:46

Dans cet article, nous verrons comment créer un projet de jeu vidéo avec XNA Game Studio Express, et nous verrons dans le détail ce qu’il contient.

Introduction

Nous allons donc créer notre premier projet XNA. Ici, nous n’allons pas entrer dans les détails de chaque méthodes mais uniquement expliquer leur fonctionnement.

Le but de cet article est simplement de vous expliquer l’architecture d’un projet XNA pour enfin, dans les prochains articles, vous aider à créer un jeu vidéo du début à la fin. Je vous donnerai le nom du jeu que nous ferons dans le prochain article :). Si vous avez des suggestions, des idées, n’hésitez pas à poster des commentaires.

Prérequis

Au préalable, vous devez avoir installé Visual Studio C# Express ainsi que son SP1, puis le module XNA Game Studio Express. Si ce n’est pas fait, consultez l’article précédent.

Création du projet XNA

Commencez par ouvrir XNA Game Studio Express, faites File > New > Project…

Nouveau projet

Voici la liste des types de projets que vous pouvez créer pour la plateforme XNA :

  • Windows Game : Projet de jeu pour plateforme Windows
  • Windows Game Library : Projet de bibliothèque de classes pour un projet Windows Game
  • Xbox 360 Game : Projet de jeu pour plateforme Xbox 360
  • Xbox 360 Game Library : Projet de bibliothèque de classes pour un projet Xbox 360

Nous allons créer notre premier jeu pour la plateforme Windows donc choisissez un projet de type Windows Game.

Je vous conseille de placer votre solution à la racine de votre système car les noms de dossiers à rallonge et avec des espaces peuvent poser des problèmes lors de la compilation et lors de l’exécution de votre programme.

Architecture du projet

Lorsque vous avez fini de créer votre projet Windows Game, vous obtenez la solution suivante :

Vous remarquerez que l’architecture est presque identique à une application console C#. Une des différences se situe au niveau des références. En effet ici viennent s’ajouter deux nouvelles références Microsoft.Xna.Framework et Microsoft.Xna.Framework.Game. L’espace de nom Microsoft.Xna.Framework contient toutes les classes permettant d’accéder à des ressources de la machine telles que le son, le graphisme (2D, 3D), les entrées (Clavier, souris, manette) ainsi que le stockage de fichiers.

Ensuite, le point d’entrée du programme est toujours le void Main situé dans la classe Program (Fichier Program.cs). Le jeu se lance en utilisant la méthode .Run() de l’instance de la classe Game1 (Fichier Game1.cs) qui hérite de la classe Microsoft.Xna.Framework.Game. Cette instance représente donc note jeu.

La classe Game

La classe Game qui hérite de la classe Microsoft.Xna.Framework.Game est composée d’un constructeur public et de cinq méthodes protected.

Le constructeur

GraphicsDeviceManager graphics;   ContentManager content;   public Game1()   {  graphics = new GraphicsDeviceManager(this);  content = new ContentManager(Services);   } 

La classe GraphicsDeviceManager est la couche logicielle qui fait la liaison entre votre code et la carte graphique. Cette couche est la pièce maïtresse de la plateforme XNA, en effet elle permet de faire abstraction de la marque ainsi que du modèle du processeur graphique (GPU : Graphic Processor Unit) pour écrire notre jeu. Si nous n’avions pas cette couche, il nous faudrait écrire notre code pour chaque modèle de GPU.

La classe ContentManager permet le chargement et la gestion du Content Graphic (Les éléments graphique) et du Content Pipeline. Le Content Pipeline, permet de faire la liaison avec les objects graphiques issus d’autres programmes (tels que MS Paint, Adobe Photoshop, 3D SMax…), et de les transformer dans un format binaire (XNB) utilisable pour notre application.

Ensuite le constructeur permet d’initialiser ces deux variables (graphics et content) dont nous nous servirons pour créer notre jeu.

La méthode Initialize()

protected override void Initialize()   {  // TODO: Add your initialization logic here  base.Initialize();   }

La méthode Initialize() est une méthode override c’est à dire qu’elle est déjà définie dans la classe héritée (Microsoft.Xna.Framework.Game). Elle nous permet de faire toute l’initialisation de nos objets, de toute la partie non-graphique. L’appel de cette méthode n’est effectué qu’une seule fois, juste après le chargement de notre GraphiqueDeviceManager.

La méthode LoadGraphicsContent()

protected override void LoadGraphicsContent(bool loadAllContent)   {  if (loadAllContent)  {    TODO: Load any ResourceManagementMode.Automatic content   	}   // TODO: Load any ResourceManagementMode.Manual content   } 

Dans la méhode LoadGraphicsContent(), nous allons effectuer tous les chargements des objets graphiques. Elle est appelé juste après le chargement de notre objet ContentManager.

La méthode UnloadGraphicsContent()

protected override void UnloadGraphicsContent(bool unloadAllContent)   {   	if (unloadAllContent)  {   // TODO: Unload any ResourceManagementMode.Automatic content   content.Unload();  }  // TODO: Unload any ResourceManagementMode.Manual content   }

Dans la méthode UnloadGraphicsContent(), nous allons effectuer toutes les destructions des objets graphiques. Elle est appelée juste avant la destruction de notre objet ContentManager.

La méthode Update()

protected override void Update(GameTime gameTime)   {  // Allows the game to exit  if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)   this.Exit();
	// TODO: Add your update logic here   	base.Update(gameTime);   } 

Dans la méhode Update(), nous allons gérer l’intelligence artificielle, les entrées utilisateur (Clavier, Souris, Manette…), les musiques, les colisions… C’est donc à partir de cette méthode que nous allons gérer les déplacements des joueurs.

Le GameTime est l’objet qui permet de savoir par exemple le temps écoulé depuis la dernière frame, depuis le dernier appel de la méthode Update() mais également le temps d’exécution de l’application, le tout avec une précision à la milliseconde. MSDN.

La méthode Draw()

protected override void Draw(GameTime gameTime)   {  graphics.GraphicsDevice.Clear(Color.CornflowerBlue);  // TODO: Add your drawing code here  base.Draw(gameTime);} 

La méthode Draw() permet d’afficher tous nos objets graphique à l’écran, elle est déclenchée à chaque fois qu’une frame (image à l’écran) doit être affichée (Par exemple : pour un jeu qui tourne à 24 frames par seconde (fps) la méthode Draw() sera déclenchée 24 fois par seconde).

Mots clés Technorati : ,,

Tags: ,

XBox 360 - XNA

Comments

12/4/2008 2:12:23 PM #

ChR0uF

bonjour je vais entamné un PFA(Projet Fin d'Année) et le sujet c'est cree un jeux video.
-j'ai aucune ideé sur ni XNA ni C#.(vos conseilles svp)
-mon encadreur m a demandé de créer une personnage qui bouge comme une premiere etape pour mon projet en utilisant l'XNA donc j ai besoin de votre aide
merci d'avance Smile

ChR0uF France

12/5/2008 4:46:08 AM #

Fabien Lavocat

Bonjour,

Je peux vous conseiller les articles de Developpez.com comme celui là : fearyourself.developpez.com/tutoriel/xna/intro/
Ils sont vraiment de très bonne qualité pour commencer.

Merci.

Fabien Lavocat France

12/5/2008 4:54:05 PM #

ChR0uF

merci c trés gentill de ta part

ChR0uF France

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading



About

Fabien Lavocat

Lavocat Fabien
Ingénieur Multimédia - TMM Communication



"Blog-Microsoft.fr is an independent blog and is not affiliated with, nor has it been authorized, sponsored, or otherwise approved by Microsoft Corporation."

Contactez-moi Send mail

MVP
Microsoft Most Valuable Professional
Client Application Development