Skip to main content

Didacticiels de Rocket Commander

Publication : 6 novembre 2006

 Bienvenue dans les didacticiels de Rocket Commander. Grâce à une série de vidéos de 30 minutes, vous apprendrez, pas à pas, à créer des jeux en 3D comme Rocket Commander. De quoi entrer de plain pied dans l’univers du développement de jeux.
Auteur : Benjamin Nitschke
Consulter l’article en anglais

Difficulté  : Moyenne
Durée requise : Plus de 10 heures
Coût : Gratuit
Logiciels : Visual C# Édition Express
Matériel :
Téléchargement :


 

Game

Bienvenue dans les didacticiels de Rocket Commander. Grâce à une série de vidéos de 30 minutes, vous apprendrez, pas à pas, à créer des jeux en 3D comme Rocket Commander. De quoi entrer de plain pied dans l’univers du développement de jeux. Si vous souhaitez simplement jouer, visitez la page http://www.rocketcommander.com/ et téléchargez le jeu (10 Mo).

Vous pouvez aussi jeter un rapide coup d’œil au code source(accessible tout aussi gratuitement que le jeu) ou prendre connaissance du projet en consultant l’ affichage des classes. Il y a environ 20 000 lignes de code et peut-être 50 classes. Un gros projet, direz‑vous. Certes, mais nous n’aborderons que les classes les plus importantes et apprendrons, dans le didacticiel n° 4, à écrire un moteur graphique en moins de 30 minutes. Si vous décidez de vous plonger dans le code source après avoir suivi les didacticiels, vous parviendrez à mieux comprendre les mécanismes du jeu. Le code source, tout comme les projets dignes de professionnels, est particulièrement bien documenté. Si vous souhaitez poser d’autres questions, trouver une aide complémentaire ou rencontrer des développeurs de jeux vidéo, consultez les forums de Rocket Commander.

Sommaire

Principes de base
Installation
Affichage des classes
Didacticiels
Conclusion

Principes de base

Ces didacticiels s’adressent à toute personne ayant une bonne maîtrise de la programmation en C# et de solides bases de Managed DirectX. Si vous ne connaissez pas .NET ni les langages de programmation comme C# ou VB.NET, commencez par des didacticiels et des webcasts plus simples. Vous pourrez revenir à celui-ci par la suite. Si vous recherchez des didacticiels sur Managed DirectX, commencez par ceux du SDL DirectX. Il existe de nombreux didacticiels gratuits sur Internet ; Coding4Fun constitue un bon point de départ. Si vous souhaitez encore approfondir vos connaissances, reportez-vous aux liens, webcasts et didacticiels mentionnés ci-dessous.

Ce didacticiel insiste sur l’aspect pratique de la programmation et des jeux, contrairement à bien d’autres qui ne vous présentent que quelques astuces avec 100 à 1000 lignes de code. Vous pouvez écrire ces quelques lignes de code sans commentaires. Ce sera assez facile à suivre. Les projets plus ambitieux réclament un minimum de documentation et de planification et beaucoup plus de commentaires. Dès que vous atteignez 20 000 lignes de code (sans parler des 100 000 à 500 000 lignes indispensables aux projets de grande envergure), vous devez envisager une approche plus structurée, un style de programmation propre et une bonne quantité de refactoring. Qu’est-ce que le refactoring ? Les deux premières vidéos vous permettront de vous familiariser avec ce concept ainsi qu’avec les tests d’unité. Le refactoring consiste à retravailler le code source, pas pour en modifier les fonctionnalités, mais pour en faciliter la lisibilité, simplifier la maintenance et optimiser les performances.

Il existe un grand nombre de projets open source (même des jeux), mais la plupart manque cruellement de documentation, n’intègre aucun commentaire dans le code et ne s’accompagne d’aucun didacticiel. Ces projets sont alors malheureusement annulés ou arrêtés. Les projets open source sont souvent très intéressants à étudier. Les novices vont toutefois rapidement perdre pied. Ces didacticiels servent de passerelle : ils vous fournissent le code source d’un gros projet et vous aident à vous y retrouver.

Installation

OK, passons aux choses sérieuses. Les étapes suivantes sont également expliquées en détail dans le premier didacticiel. Si vous avez quelques difficultés, regardez la vidéo et procédez pas à pas. Pour commencer, nous devons nous procurer Visual Studio 2005 ! Si vous ne disposez pas de Visual Studio 2005 et que vous n’avez pas les moyens de vous payer l’édition Standard ou Professionnel (sans parler de la version Team System), il existe une version gratuite : Visual C# 2005 Express. Elle n’est pas aussi puissante et ne permet pas d’utiliser de compléments, mais elle nous suffit amplement pour ce jeu. Vous pouvez également utiliser toute autre version ou un IDE prenant en charge .NET 2.0. Pour télécharger gratuitement Visual C# 2005 Express, cliquez ici.

Commençons par installer Visual Studio 2005. Si vous l’avez déjà fait, passez immédiatement à l’étape suivante.

Installation Options

C’est maintenant le moment d’installer l’aide de MSDN. Rien ne vous y oblige toutefois. Vous pourrez toujours accéder à l’aide en ligne, quoi qu’il arrive, mais les recherches prendront plus de temps.

Vous devez ensuite vous procurer le kit de développement (SDK) DirectX en le téléchargeant, par exemple, à partir du Centre de développement Microsoft DirectX

Custom Setup

Lors de l’installation, optez pour une installation personnalisée de façon à activer l’emploi des fichiers redistribuables. Vous en aurez besoin pour installer votre jeu sur d’autres ordinateurs. Une fois DirectX installé, vous pouvez prendre connaissance des nouvelles fonctionnalités en regardant les exemples fournis dans l’outil DirectX Sample Browser. Si vous n’avez pas encore beaucoup travaillé avec Managed DirectX, lisez attentivement la documentation et les didacticiels.

Pour finir, il nous faut aussi installer NUnit, accessible à partir de la page http://www.nunit.org/.

Select Installation Folder

Vous vous demandez peut-être pourquoi installer NUnit. Et bien, Rocket Commander s’appuie sur les tests d’unité et la méthodologie Agile. Dans les deux premiers didacticiels, j’expliquerai en détail ce qu’il en est et vous donnerai quelques exemples. En bref, il faut savoir que nous ne pouvons pas tout concevoir et tout planifier à l’avance. En cas d’invention de nouveaux programmes, il est très fréquent de découvrir les choses pas à pas. Nous partons donc d’un concept de base (voir Didacticiel n° 2) que nous ajusterons dynamiquement au fur et à mesure. Les tests d’unité du code nous permettent de vérifier que tout fonctionne comme prévu même en cas de changement massif lors de la conception. Les programmes de mini-test inclus dans le code nous laissent constamment vérifier les fonctionnalités et jouer avec notre moteur.

Si vous utilisez Visual Studio 2005 Team System, vous pouvez également utiliser les tests d’unité implémentés directement dans VS. Il existe d’autres structures de tests d’unité (par exemple, MbUnit, csUnit, etc.). En cas d’utilisation de Visual Studio 2005 Standard (et versions suivantes), vous pouvez également faire appel à TestDriven.NET (un plug-in qui permet de lancer des tests d’unité à partir de votre environnement de développement). Dans le cadre de ces didacticiels, nous essaierons de rester le plus simple possible et de n’utiliser que les fonctions de base de NUnit.

Affichage des classes

Model

(Cliquez sur l’image pour l’agrandir)

Il s’agit en fait de la vue d’ensemble du projet. Ce schéma peut paraître déroutant à première vue mais. Par la suite, il nous aidera à mieux appréhender les classes et à mieux comprendre le moteur du jeu. Le programme commence par la classe Program (coin supérieur gauche). C’est par là aussi que commencera le Didacticiel n° 1. L’affichage des classes et le moteur graphique font l’objet d’une description détaillée dans les didacticiels suivants. Vous pouvez considérer que toute classe qui affiche quelque chose à l’écran est dérivée de la classe IGraphicObject. Dans les deux premiers didacticiels, nous nous contenterons des classes Texture et Model. DirectX nous permet de faire beaucoup de choses, mais en jouant avec l’abstraction, nous éviterons d’écrire le même code à plusieurs reprises. Cela est très important pour notre moteur graphique.

Le deuxième didacticiel explique aussi le concept même du jeu. À ce stade, nous ne savons pas encore grand chose des classes, mais prendrons néanmoins un peu de recul pour nous consacrer au jeu proprement dit. Dans le troisième didacticiel, nous nous intéresserons aux classes helper. Le quatrième didacticiel nous donnera la possibilité d’écrire notre moteur graphique en moins de 30 minutes et de comprendre plus rapidement de quoi il retourne. Dans les didacticiels suivants, nous passerons en revue chaque élément du jeu pour arriver à l’assemblage final dans le dernier didacticiel. Nous pourrons alors envisager d’écrire nos modifications.

Didacticiels

Didacticiel n° 1. Comment configurer Visual Studio pour notre projet ?

Ce didacticiel explique toutes les étapes requises pour installer Visual Studio Express et indique où se procurer Managed DirectX (Fév06 ou postérieur). Nous nous intéresserons aussi aux outils les plus courants utilisés dans le cadre du développement de jeux, à savoir : CodeRush, FxComposer, 3DSMax8, ZBrush, Panda Exporter pour fichiers X, Photoshop, Paint.NET. À la fin du didacticiel, nous jetterons un coup d’œil rapide sur le projet et sur toutes les classes. Nous écrirons ensuite notre premier test d’unité pour vérifier le bon fonctionnement de notre moteur. Le test d’unité est, en fait, une visionneuse de modèles qui présente une animation du jeu dans l’espace.

Didacticiel n° 1.

Windows Media Player Icon

Liens :

Didacticiel n° 2. Conception et concept :

Nous écrirons le concept de notre jeu. Vous comprendrez le concept de Rocket Commander avant même d’écrire la première ligne de code. Nous passerons alors en revue le concept et les classes initialement prévues. Cette phase donne libre cours à de grandes idées, mais bien que cette étape soit très importante et que les projets non étayés soient généralement voués à l’échec, nous souhaitons aborder le codage le plus vite possible et voir des trucs sympas s’afficher à l’écran. Par conséquent, à la fin de didacticiel, nous écrirons un autre test d’unité et parviendrons à rendre un astéroïde dans l’espace (20 lignes de code simplement). Nous développerons cette idée de façon à rendre plusieurs astéroïdes et, ainsi, à mieux comprendre les classes dont a besoin Rocket Commander pour tout gérer à notre place.

Didacticiel n° 2.

Windows Media Player Icon

Liens :

Didacticiel n° 3. Classes Helper :

À quoi servent-elles ? Dans ce didacticiel, nous apprendrons la raison de l’existence des classes nommées helper : éviter de répéter les mêmes opérations à maintes reprises. Ces classes permettent de réduire considérablement la quantité de code à écrire par la suite. Elles améliorent la lisibilité et facilitent l’administration du projet. Nous nous attarderons sur les classes ElapsedTime, Log, StringHelper, RandomHelper, WindowsHelper, etc. Nous écrirons aussi quelques tests d’unité et comprendrons l’importance d’un développement piloté par le test.

Didacticiel n° 3.

Windows Media Player Icon

Liens :

Didacticiel n° 4. Classes Graphic :

Nous apprendrons en l’espace de 30 minutes à écrire notre moteur 3D avec le secours d’un développement piloté par le test. Nous créerons des classes non seulement pour le rendu des textures et des modèles, mais aussi pour le rendu des polices à l’écran. Nous aurons recours aux fichiers DDS pour les textures et au format de fichier X de Microsoft pour les modèles. Ce didacticiel permet de répondre à des questions du genre :

  • Comment rendre les textures directement à l’écran ?
  • Comment rendre des modèles en 3D ?
  • Comment afficher du texte à l’écran ?

Didacticiel n° 4.

Windows Media Player Icon

Liens :

Didacticiel n° 5. Musique et son :

Nous aborderons ici les classes DirectSound et DirectX AudioVideoPlayback. Ce sont les classes de base pour la lecture des sons (.wav) et de la musique (.mp3). Nous apprendrons aussi, à l’aide de plusieurs tests d’unité, à régler le volume, la balance stéréo et la fréquence des fichiers .wav à lire.

Didacticiel n° 5.

Windows Media Player Icon

Liens :

Didacticiel n° 6. Présentation des nuanceurs (classe TangentVertex et FxComposer) :

Dans ce didacticiel, nous aborderons les composants les plus intéressants de Rocket Commander : les shaders (ou nuanceurs). Nous consulterons plusieurs jeux vidéos du marché et comparerons la capture des scènes, avec et sans shader. Nous étudierons ensuite en détail le rôle important que jouent les shaders dans les jeux d’aujourd’hui. Nous apprendrons en quoi ils diffèrent du rendu par pipeline graphique (Fixed-Function Pipeline) et nous nous consacrerons au développement de shaders avec FxComposer. Nous découvrirons les classes de base de notre moteur et, plus particulièrement la classe VertexFormat utilisée. Pour parler plus clairement, nous créerons notre propre classe de shaders et écrirons un shader SpecularPerPixel simple, mais efficace, avec Pixel Shader 2.0.

Didacticiel n° 6.

Windows Media Player Icon

Liens :

Didacticiel n° 7. Shaders (Effets de parallaxe, Instanciation) :

Nous aborderons, pour finir, les shaders avancés. Ce didacticiel nous aidera à produire des effets stupéfiants. Nous commencerons par voir, une nouvelle fois, ce qui existe sur le marché et étudierons plus en détail les différentes techniques utilisées. Nous découvrirons, pas à pas, le nuanceur ParallaxShader utilisé dans Rocket Commander. Nous verrons comment il a été développé avec FxComposer et comment la classe de Rocket Commander fonctionne de pair avec le fichier ParallaxShader.fx. Il nous restera à écrire notre propre test d’unité et à vérifier les textures du didacticiel dans le moteur.

Didacticiel n° 7.

Windows Media Player Icon

Liens :

Didacticiel n° 8. Effets de post-traitement :

Pour rendre les scènes encore plus réalistes, nous leur appliquons ce qu’on appelle des effets de post-traitement. Ces shaders permettent de manipuler l’image finale que nous avons rendue sur l’écran et de donner une plus grande fluidité à l’ensemble. Nous commencerons par FxComposer et étudierons les effets post-traitement existants. Nous nous intéresserons ensuite à l’effet post-traitement le plus complexe de Rocket Commander. Nous passerons en revue les effets Sepia, Sky cube mapping, Bloom, Glow, HDR et Motion Blur. Pour finir, nous analyserons les classes shader du moteur et procéderons aux différents tests.

Didacticiel n° 8.

Windows Media Player Icon

Liens :

Didacticiel n° 9. Saisie et interface :

Dans ce didacticiel, nous apprendrons à utiliser la classe DirectInput et verrons comment Rocket Commander gère toutes les saisies clavier et souris à l’aide de plusieurs classes helper. Ensuite, nous étudierons rapidement les classes Menu et User Interface du jeu. Cela demande généralement beaucoup de travail et ne peut être réalisé en 30 minutes, mais nous verrons encore une fois que les classes helper nous font gagner beaucoup temps. Elles nous permettent notamment de réutiliser le code dans bien des cas. Le code est alors beaucoup plus lisible et le produit final forme un tout d’une grande cohérence. Nous examinerons les graphismes créés par les artistes et apprendrons à les manipuler et à les déformer (technique souvent appelée skinning). Cette étape revêt une importance particulière pour le didacticiel qui suit.

Didacticiel n° 9.

Windows Media Player Icon

Liens :

Didacticiel n° 10. Logique du jeu :

Nous disposons dorénavant de tous les éléments de base pour notre moteur de jeu et pouvons implémenter la logique. Dans 80 % des cas, les didacticiels n’ont pas abordé les principes du jeu Rocket Commander, mais ont expliqué le fonctionnement du moteur. Pour tirer partir de ces connaissances, nous apprendrons à étendre le jeu. Nous développerons notamment Flower Commander, une version revue et corrigée de Rocket Commander que nous pourrons réaliser en changeant quelque peu le code.

Comme vous pouvez le constater sur les différentes captures, le jeu se présente de manière tout à fait différente (menu principal compris. Il suffit de changer trois ou quatre textures et un modèle (une fleur au lieu des astéroïdes). Les principes du jeu changent légèrement : il n’est plus question d’éviter des astéroïdes, mais de cueillir des fleurs. Nous ne nous trouvons plus dans un engin spatial, mais sommes au cœur d’une ruche chargés de produire du miel (cela semble fou, mais tellement fun). Nous en profiterons aussi pour apprendre quelques trucs et astuces. Le didacticiel vous montre qu’une simple modification peut engendrer des problèmes. Au lieu de les ignorer, nous analyserons ce qui ne fonctionne pas et apprendrons à ajuster le jeu en fonction de nos besoins.

Didacticiel n° 10.

Windows Media Player Icon

Liens :

Conclusion

Tous les aspects du jeu sont désormais couverts : saisie, interface, logique du jeu, helpers, musique, son, graphismes : shaders, ParallaxMapping, TangentVertex, instanciation, effets post-traitement, modèles, polices, matériaux, textures, effets Lumière diffuse.

D’autres didacticiels pourront être publiés ultérieurement. Le didacticiel n° 10 aborde plusieurs sujets intéressants : capacité d’extension, physique, écrans de jeu, classes manager, space camera, fonctions monojoueur et multijoueur, etc.

Liens supplémentaires

Si vous souhaitez approfondir vos connaissances sur .NET ou DirectX, des sites Web et des didacticiels sont à votre disposition.