Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parRoland Bureau Modifié depuis plus de 9 années
1
[Title of the course] XNA et la 2D Campus-Booster ID : **XXXXX
14-Apr-17 [Title of the course] La 2D sous XNA XNA et la 2D Campus-Booster ID : **XXXXX Copyright © SUPINFO. All rights reserved Copyright © NameOfTheOrganization. All rights reserved.
2
Objectifs de ce module En suivant ce module vous allez :
14-Apr-17 La 2D sous XNA [Title of the course] Objectifs de ce module En suivant ce module vous allez : Découvrir la plateforme XNA. Qu’est ce que XNA ? Comprendre Les spécificités d’un jeu. De quoi est composé un jeu ? Apprendre les rudiments de la 2D sous XNA. Programmer en 2D. Copyright © NameOfTheOrganization. All rights reserved.
3
Plan du module Voici les parties que nous allons aborder :
14-Apr-17 La 2D sous XNA [Title of the course] Plan du module Voici les parties que nous allons aborder : Introduction : Qu’est ce que XNA ? Définition, architecture… Les spécificités d’un jeu. De quoi est composé un jeu ? Le Content Pipeline. Qu’est ce que le Content Pipeline ? Affichage d’une texture 2D. Les composants de la 2D. Lire les entrées utilisateurs. Les périphériques d’entrées. Opérations avancées sur les Sprites. Rotation, redimensionnement et animation. Copyright © NameOfTheOrganization. All rights reserved.
4
Introduction : Qu’est ce que XNA ?
14-Apr-17 [Title of the course] La 2D sous XNA Introduction : Qu’est ce que XNA ? Définition, architecture… Copyright © NameOfTheOrganization. All rights reserved.
5
Plan de la partie Voici les chapitres que nous allons aborder :
14-Apr-17 Introduction : Qu’est ce que XNA ? [Title of the course] Plan de la partie Voici les chapitres que nous allons aborder : Définition de XNA. Avant XNA. Pourquoi XNA. Pré requis. Architecture de la plate-forme XNA. Copyright © NameOfTheOrganization. All rights reserved.
6
X N A NA’s ot cronymed Définition de XNA
Introduction : Qu’est ce que XNA ? Content Starter Set Définition de XNA X NA’s N ot A cronymed
7
Introduction : Qu’est ce que XNA ?
Content Starter Set Définition de XNA XNA - Framework développé en 2006 par Microsoft, entièrement gratuit, utilisant le langage C#, dédié au développement de jeux vidéo pour les ordinateurs sous Windows XP, Vista mais aussi pour XBox 360. XNA est un Framework constitué de plusieurs librairies .Net et qui permet à des développeurs de tous horizons de développer des jeux qui pourront s'exécuter sur différentes plateformes telles que les multiples systèmes Windows, mais aussi sur la console de Microsoft à savoir la XBOX 360.
8
Avant XNA Microsoft DirectX Essentiellement C++ Mono-plateforme
14-Apr-17 Introduction : Qu’est ce que XNA ? [Title of the course] Avant XNA Microsoft DirectX Essentiellement C++ Mono-plateforme Managed DirectX 1.1 : Wrapper DirectX Puissant Mais trop éloigné du Framework .NET Microsoft avait mis à disposition Managed DirectX 2 beaucoup plus orienté .Net mais celui-ci a été abandonné au profit de XNA. Copyright © NameOfTheOrganization. All rights reserved.
9
Pourquoi XNA ? Microsoft XNA Simplifier le développement des jeux :
14-Apr-17 Introduction : Qu’est ce que XNA ? [Title of the course] Pourquoi XNA ? Microsoft XNA Simplifier le développement des jeux : Approche standardisée Mise à disposition de Starter Kit Permet de porter un jeu Windows sous Xbox théoriquement sans changer une ligne de code. Attention : XNA n’est pas un moteur de jeu. L'intention de Microsoft sur ce point est claire, l'idée de XNA est de fournir un Framework commun tant au développeur pour Windows que pour plateforme XBOX 360. C'est dans cette logique que Microsoft a réalisé un ensemble de classes disponibles qui sont communes à ces deux plateformes, de cette manière il est possible de porter un jeu développé pour Windows via XNA, directement sur XBOX 360 en ne changeant que très peu de code, attention cependant un grand nombre d’optimisations seront nécessaires pour le portage sur XBOX. Le développement de jeux vidéo nécessite des connaissances avancées en développement, ou du moins une maîtrise du langage de développement. XNA permet de simplifier le développement et de le rendre plus facilement accessible aux personnes qui viennent de débuter. Là où dans un contexte plus complexe d'utilisation de DirectX ou d'autre API 3d, on passe plusieurs minutes à initialiser le projet, les classes et dépendances diverses, XNA propose de réduire toutes ses tâches toujours dans l'optique de simplification. Ainsi l'établissement de votre projet qui servira de base au jeu vidéo ne prendra que quelques minutes. Toutes les étapes nécessaires à la création d'une application utilisant DirectX sont automatiquement traitées par le Framework XNA et les outils associés ce qui permet de directement se concentrer sur l'essentiel : le code du jeu. La simplification peut encore être plus prononcée en utilisant des projets de bases appelés « Starter Kit » ce qui permet d'obtenir dans l'assistant de création de projet de Visual Studio, un Template de projet de jeu vidéo XNA qui contient une première architecture qui pourra être utilisée pour le jeu vidéo. Ces kits sont généralement fournis avec une documentation complète et un ensemble de tutoriaux qui guident les développeurs en modifiant et en ajoutant de nouvelles fonctionnalités au jeu de base. Copyright © NameOfTheOrganization. All rights reserved.
10
Pré requis Ce qu’il nous faut : Visual C# 2005 Express Edition (SP1)
14-Apr-17 Introduction : Qu’est ce que XNA ? [Title of the course] Pré requis Ce qu’il nous faut : Visual C# 2005 Express Edition (SP1) XNA Game Studio Express SDK DirectX (Optionel) Le SDK DirectX est optionnel : dans le cadre de XNA il met à disposition un certain nombre d’outils ( Mesh Viewer , Mesh Converter….) Copyright © NameOfTheOrganization. All rights reserved.
11
Architecture de la plate-forme XNA
14-Apr-17 Introduction : Qu’est ce que XNA ? [Title of the course] Architecture de la plate-forme XNA Ce qu’il faut retenir de ce schéma : - La XBOX embarque une version modifiée du .Net Compact FrameWork - Les classes du cœur du framework sont en fait des wrapper vers les composants bas niveau telle que Direct3D. ( XACT est un moteur Audio multi plateforme ) - Le FrameWork Xna comporte quelques classes de haut niveau qui facilitent le développement de jeux vidéos : nous verrons le content pipeline plus en détail par la suite. Pour présenter ce schéma, nous allons procéder de la manière la plus simple, à savoir, nous allons commencer de la partie inférieure pour remonter vers les couches de plus haut niveau. La plateforme d'exécution. Il s'agit ni plus ni moins du système d'exploitation qui va exécuter notre application, on peut ainsi y retrouver dans notre cas, Windows Vista ou Windows XP mais également, et parce que c'est le but de XNA, la plateforme exécutive de la Xbox 360. La plateforme .Net. Chacune de ses plateformes d'exécution possède son Framework .Net associé. Dans le cas d'un système Windows, le Framework .Net est complet, il ne diffère que dans sa version selon les systèmes. Pour la Xbox 360, il faut savoir que le Framework .Net utilisé est un dérivé de la version Compact du Framework .Net 2.0. Le Framework XNA : La plateforme bas niveau : Il s'agit de l'ensemble des composants de bas niveau permettant par exemple, d'accéder aux ressources de la machine comme la carte vidéo (Direct 3D), la carte son (XACT) mais aussi les différentes entrées. Le cœur du Framework Noyau central du Framework XNA, cette partie importante est celle qui contient les classes .Net du Framework qui permettent de réaliser les opérations souhaitées, ce sont généralement ces classes qui sont utilisées par le développeur. Le Framework étendu L'objectif principal de cette couche du Framework XNA est véritablement de rendre le développement de jeu vidéo plus aisé. Dans la version actuelle, ce Framework étendu est composé de deux sous éléments : le modèle applicatif et le content pipeline. Cette partie du Framework devrait être encore étendu dans les prochaines versions de XNA toujours dans l'optique de simplifier le développement. La couche Jeux Cette couche est celle de plus haut niveau, elle correspond au code de votre jeu et à son contenu. C'est également dans cette couche qu'on retrouve les éléments tels que les modèles, les composants de jeux ainsi que les starter-kits. Game Studio Express. Cette partie de l'architecture de XNA correspond à l'outil permettant d'utiliser et de développer avec le Framework XNA. Cet IDE basé sur Visual C# Express se voit pourvu de type de projet dédié à XNA, et est enrichi au besoin, de différents starter kits qui peuvent être utiles pour débuter. Copyright © NameOfTheOrganization. All rights reserved.
12
Pause-réflexion sur la partie 1
14-Apr-17 Introduction : Qu’est ce que XNA ? [Title of the course] Pause-réflexion sur la partie 1 Avez-vous des questions ? Copyright © NameOfTheOrganization. All rights reserved.
13
Les spécificités d’un jeu
14-Apr-17 [Title of the course] La 2D sous XNA Les spécificités d’un jeu De quoi est composé un jeu ? Copyright © NameOfTheOrganization. All rights reserved.
14
Plan de la partie Voici les chapitres que nous allons aborder :
14-Apr-17 Les spécificités d’un jeu [Title of the course] Plan de la partie Voici les chapitres que nous allons aborder : De quoi est composé un jeu ? La classe Game La méthode Initialize La méthode LoadGraphicsContent La méthode UnLoadGraphicsContent La méthode Update La méthode Draw Copyright © NameOfTheOrganization. All rights reserved.
15
De quoi est composé un jeu ?
14-Apr-17 Les spécificités d’un jeu [Title of the course] De quoi est composé un jeu ? Schéma d’exécution La première étape est l’initialisation : c'est-à-dire le chargement des ressources graphiques ou non en mémoire en vu de leur future utilisation dans le jeu : en effet un jeu demande beaucoup de temps processeur il vaut donc mieux charger le plus possible de ressources en dehors du jeu proprement-dit. L’étape de mise à jour effectue le traitement des calculs inhérent au gameplay ( déplacement d’un joueur par exemple) L’affichage imprime à l’écran les données ; une fois cette étape terminée la boucle reprends automatiquement à l’étape de mise à jour et ce jusqu’à l’arrêt du jeu. L’étape de fin consiste simplement à décharger de la mémoire les ressources Après avoir été initialisé, le cœur du jeu s'exécute en boucle (la boucle de jeu) en effectuant les opérations suivantes : Mise à jour : prise en compte des actions du jeu, de actions utilisateurs, du moteur physique, etc. Affichage à l'écran : c’est ici que les informations visuelles sont définies. A la fin de la fonction d’affichages les informations sont envoyées vers le GPU (la carte graphique) Ce fonctionnement logique du jeu vidéo doit en général être traité par le développeur, grâce à XNA, toute cette architecture logicielle est prise en charge. Copyright © NameOfTheOrganization. All rights reserved.
16
De quoi est composé un jeu ?
14-Apr-17 Les spécificités d’un jeu [Title of the course] De quoi est composé un jeu ? Comment développez sous XNA ? abstraction de tous traitements habituels des jeux vidéo : le cycle de vie. Concentration uniquement sur le code du jeu. respect d’un schéma de base simple d’exécution. L'intention de ce modèle applicatif présent dans cette partie du Framework XNA est de faire abstraction de tous traitements habituels des jeux vidéo, à savoir le suivi de son cycle de vie. Avec XNA, pas besoin de s'occuper de créer la fenêtre, de gérer les messages, de créer les différents timers et horloge d'exécution, la seul chose sur laquelle le développeur se concentre, c'est le code de son jeu. Les jeux vidéo en général respectent un schéma de base simple dans leur exécution. Copyright © NameOfTheOrganization. All rights reserved.
17
La classe Game Un jeu sous XNA : dériver de la classe Game
14-Apr-17 Les spécificités d’un jeu [Title of the course] La classe Game Un jeu sous XNA : dériver de la classe Game La création d’un projet XNA entraîne la création d’un objet dérivant de Game. permet d'utiliser de nombreux éléments conteneurs et autres services Cet objet contient : Le Graphics Le ContentManager Propose 5 méthodes décrivant le cycle de vie et simplifiant le développement. Lors de la création d'un jeu vidéo à travers l'IDE dédié, on remarque que la génération du code respecte un schéma particulier et base le projet sur un squelette de base. Une classe principale, dérivée de la classe Game permet d'utiliser de nombreux éléments conteneurs et autres services mais propose également cinq méthodes qui décrivent le cycle de vie du jeu et qui sont très utiles dans la simplification du développement : Initialize LoadGraphicsContent UnloadGraphicsContent Update Draw Cet objet contient : le graphics le contentmanager Graphics : Cette propriété est un accès à la carte graphique en s'appuyant sur les APIs issues de Direct3D 9. A l'origine basé sur Managed DirectX, la partie graphique de XNA a été revue en profondeur pour offrir une solution plus simple et plus propre à utiliser en développement, ainsi les fonctions ne sont plus si proches du langage de bas niveau et une nouvelle fois, l'expérience du développeur est améliorée. La principale amélioration de XNA sur le plan graphique, par rapport aux autres produits de versions précédentes est de favoriser le portage des jeux vidéo sur la plateforme Xbox 360 en imposant un pipeline basé totalement sur les shaders (les shaders sont des jeux d'instructions GPU utilisés au moment du rendu). Le content manager : Le content manager est véritablement l'élément qui vous permet d'utiliser vos contenus dans votre jeu, il s'occupe de charger rapidement ces éléments en mémoire. Copyright © NameOfTheOrganization. All rights reserved.
18
La méthode Initialize Initialize
14-Apr-17 Les spécificités d’un jeu [Title of the course] La méthode Initialize Initialize Initialise les différents éléments non graphiques du jeu : chargement de paramètres instanciations des objets… protected override void Initialize() { // TODO: Add your initialization logic here base.Initialize(); } Cette méthode permet de créer les composants non graphiques, d'initialiser les paramètres du jeu, de créer les différentes instances nécessaires et de récupérer des informations sur la plateforme d'exécution. Copyright © NameOfTheOrganization. All rights reserved.
19
La méthode LoadGraphicsContent
14-Apr-17 Les spécificités d’un jeu [Title of the course] La méthode LoadGraphicsContent LoadGraphicsContent Charge les données graphiques, sonores, effets du jeu… Appelée automatiquement à travers Initialize(). Tous les éléments chargés par le Content Pipeline doivent être chargés dans la condition loadAllContent. protected override void LoadGraphicsContent(bool loadAllContent) { if(loadAllContent) // TODO: Load any ResourceManagementMode.Automatic content } // TODO: Load any ResourceManagementMode.Manual content Cette méthode est appelée automatiquement à travers la méthode Initialize(). C'est à travers cette dernière que l'on charge les éléments et ressources nécessaires au jeu, par exemple les modèles 3d, les textures et autres éléments utiles. Ici l’on s’occupe de charger les données graphiques, données sonores, effets du jeu etc… Tous les éléments chargés par le content pipeline doivent être chargés dans la condition loadAllContent : en effet si la fenêtre perds le focus avec DirectX il fallait gérer manuellement le rechargement lors de la reprise du focus : ici XNA gère tout automatiquement pour nous : il ne restera qu’a charger manuellement ce qui n’est pas géré par le content pipeline. Copyright © NameOfTheOrganization. All rights reserved.
20
La méthode UnLoadGraphicsContent
14-Apr-17 Les spécificités d’un jeu [Title of the course] La méthode UnLoadGraphicsContent UnLoadGraphicsContent Libère les ressources, décharge les éléments en mémoire. « Dispose » les différents éléments graphiques utilisés. protected override void UnloadGraphicsContent(bool unloadAllContent) { if(unloadAllContent) // TODO: Unload any ResourceManagementMode.Automatic content content.Unload(); } // TODO: Unload any ResourceManagementMode.Manual content De la même manière si l’on charge des ressources il faut systématiquement les libérer lorsqu’elles ne sont plus utilisées afin de libérer de la mémoire. C'est à travers cette méthode que nous procédons à la libération des ressources, on décharge ainsi les éléments de la mémoire, on « dispose » les différents éléments graphiques utilisés. Copyright © NameOfTheOrganization. All rights reserved.
21
La méthode Update Update
14-Apr-17 Les spécificités d’un jeu [Title of the course] La méthode Update Update Met à jour les informations du jeu : position du joueur… Prends en compte les actions et entrées utilisateurs. Méthode présente dans la boucle du jeu. GameTime : temps écoulé depuis le dernier affichage. 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); } Cette méthode permet de mettre à jour les informations du jeu telles que la position du joueur par exemple : on peut noter la présence du paramètre gametime : celui-ci contient le temps écoulé depuis le dernier affichage : cela permet de créer des déplacements homogènes et indépendants du framerate Cette méthode correspond à l'étape de mise à jour, de prise en compte des actions du jeu. C'est clairement une méthode présente dans la boucle de jeu qui prends en compte les actions et entrées de l'utilisateur, du moteur physique etc... Copyright © NameOfTheOrganization. All rights reserved.
22
La méthode Draw Draw Correspond à l’étape d’affichage du jeu.
14-Apr-17 Les spécificités d’un jeu [Title of the course] La méthode Draw Draw Correspond à l’étape d’affichage du jeu. Effectue le rendu à l’écran à travers le GraphicsDevice géré par XNA. Technique du « double buffering ». 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’effectuer toutes les opérations nécessaires à l’affichage du jeu. Afin d’obtenir un affichage performant le dessin est d’abord effectué dans le back buffer ( une mémoire tampon) , puis lorsque toutes les images sont dessinées le back buffer est affiché il devient alors le front buffer et l’ancien front buffer devient à son tour le backbuffer : cette techniquement se nomme à juste titre le « double buffering » La méthode Clear permet de définir la couleur de replissage. Cette méthode correspond à l'étape d'affichage, il s'agit réellement de celle qui effectue le rendu à l'écran à travers le GraphicsDevice géré par XNA. Copyright © NameOfTheOrganization. All rights reserved.
23
Pause-réflexion sur la partie 2
14-Apr-17 Les spécificités d’un jeu [Title of the course] Pause-réflexion sur la partie 2 Avez-vous des questions ? Copyright © NameOfTheOrganization. All rights reserved.
24
[Title of the course] Qu’est ce que le Content Pipeline ?
14-Apr-17 [Title of the course] La 2D sous XNA Le Content Pipeline Qu’est ce que le Content Pipeline ? Copyright © NameOfTheOrganization. All rights reserved.
25
Plan de la partie Voici les chapitres que nous allons aborder :
14-Apr-17 Le Content Pipeline [Title of the course] Plan de la partie Voici les chapitres que nous allons aborder : La problèmatique La solution : le content pipeline Inconvénients de la solution Copyright © NameOfTheOrganization. All rights reserved.
26
La problématique Pourquoi le Content Pipeline ?
[Title of the course] La problématique Pourquoi le Content Pipeline ? Un jeu peut contenir un grand nombre de données dans des formats très divers. Gérer l’importation des différents contenues est une tâche pénible et rébarbative La protection des données graphique d’un jeu prend du temps à la conception et au runtime. ( temps de cryptage / décryptage ) Le content pipeline : Les contenus multimédia graphiques et sonores occupent une place plus qu'importante dans les jeux actuels et l'incorporation de ces éléments dans le projet n'est pas chose aisée. La plupart du temps, l'accent est mis sur la recherche de l'exporter approprié, de l'outil nécessaire pour effectuer une tâche particulière. Dans un environnement de travail en équipe, plusieurs personnes travaillent en ce sens pour réussir à inclure ces éléments dans le projet et nécessite des moyens conséquents et réduisent la flexibilité de travail. Le content pipeline faisant partie du Framework XNA propose une approche différente et améliorée. Ilfacilite les actions du développeur en prenant en charge les étapes nécessaires à l'exploitation du contenu. Il se veut également ouvert et personnalisable pour combler au mieux le besoin et enfin il vous laisse le choix des outils de créations de contenu que ce soit au niveau des graphismes 2D, 3D ou sonore. Pour comprendre comment fonctionne cette partie importante du Framework, il peut être utile de comprendre comment il fonctionne à plus bas niveau et de découvrir les différentes parties de celui-ci. Copyright © NameOfTheOrganization. All rights reserved.
27
La solution : le Content Pipeline
14-Apr-17 Le Content Pipeline [Title of the course] La solution : le Content Pipeline Le Content Pipeline Afin de faciliter la tâche du développeur et améliorer les performances le content pipeline a été crée. Lors de la compilation chaque ressource sera transformée en fichier .XNB Sérialisé facilement exploitable. Le content DOM : Une fois que les importers ont réalisé leur tâche d'importation, les données sont présentes dans le content DOM. Le terme DOM est ici simplement utilisé pour représenter une collection de classes et de schémas (de la même manière qu'un fichier XML). Les données présentes dans le content DOM sont des données fortement typées ce qui signifie qu'elles sont stockées sous un format bien connu ainsi, par exemple, une collection de sommets ou des données de textures auront le même format dans ce content DOM. Ce point est important pour la suite du traitement de ces données, ce résultat peut d'ailleurs être inscrit sur le disque au format XML pour le débogage uniquement, il permet un traitement homogène dans les autres étapes d'exploitation des contenus. Les processors : Un processor est chargé de récupérer les données présentes dans le content DOM et de créer un objet qui pourra être utilisé en exécution. Cet objet peut alors être simple comme un processor model ou complexe en combinant plusieurs de ces processors. Par défaut, le Framework XNA propose plusieurs processors de base tels : Le processor model : utile pour les objets simples avec textures Le processor Texture2D : utile pour les sprites ou pour combiner avec les models Le processor Effect : utile pour manipuler les effets ou shader Il en existe bien d'autres... La plupart du temps donc, ces processors sont utilisés en combinaison et sont très utiles pour effectuer des tâches importantes de traitements des données en plus du fait qu'ils sont très permissifs et personnalisables pour exploiter n'importe quel contenu car en utilisant le content DOM qui normalise les données, ces processors peuvent traiter tout type de fichiers de contenus. Il est possible depuis ces processors et le content DOM, d'effectuer des opérations d'optimisation qui peuvent améliorer le rendement de votre jeu vidéo. Le content building : Cette partie du content pipeline est également important et il est géré par le coordinateur de construction du projet. Ainsi lorsque le projet est compilé, le contenu est construit et enregistré sur le disque de la même façon que votre code. Les importers : Lorsque vous ajoutez du contenu à votre jeu vidéo pour la première fois, vous avez besoin de choisir un importer (même si ce choix peut être assisté). Cet importer est responsable de récupérer les données, des les traiter et de les normaliser pour la suite du traitement, il vérifie également leur cohérence. Il n'est donc plus nécessaire de s'occuper de l'importation et des soucis liés, l'importer s'occupe de tout à condition d'être rigoureux dans la création de contenu (fichier respectueux du format). Il existe de nombreux importers parmi ceux-ci bien sur nombre d'importer habituel, mais également quelques uns très intéressant tels que ceux lié au format Autodesk FBX. Ce format présente la possibilité de pouvoir sauvegarder des scènes 3D complètes à travers la plupart des outils de créations graphiques tant open source que commerciaux, s'avérant ainsi une bonne alternative en attendant un réel standard dans les formats de fichier 3D. Les fichiers audio de format XAP sont issus de l'outil XACT (Microsoft Cross-Platform Audio Creation Tool) qui sait traiter les fichiers sonores dans des formats standards. Le content manager : Le content manager est véritablement l'élément qui vous permet d'utiliser vos contenus dans votre jeu, il s'occupe de charger rapidement ces éléments en mémoire. Copyright © NameOfTheOrganization. All rights reserved.
28
La solution : le Content Pipeline
14-Apr-17 Le Content Pipeline [Title of the course] La solution : le Content Pipeline Les importers Voici les formats supportés par défaut mais l’on peut créer soit même son importer. Copyright © NameOfTheOrganization. All rights reserved.
29
Inconvénients de la solution
14-Apr-17 Le Content Pipeline [Title of the course] Inconvénients de la solution Et oui, il y a des inconvénients. Cette approche intéressante souffre d’inconvénients : Ecrire son propre importer n’est pas facile et peu en rebuter plus d’un. Une image .jpg est converti en données sérialisées : même si elle sera plus rapide à lire elle prendra plus de place dans la mémoire de la carte graphique. Copyright © NameOfTheOrganization. All rights reserved.
30
Pause-réflexion sur la partie 3
14-Apr-17 Le Content Pipeline [Title of the course] Pause-réflexion sur la partie 3 Avez-vous des questions ? Copyright © NameOfTheOrganization. All rights reserved.
31
Affichages d’une texture 2D
14-Apr-17 [Title of the course] La 2D sous XNA Affichages d’une texture 2D Les composants de la 2D Copyright © NameOfTheOrganization. All rights reserved.
32
Plan de la partie Voici les chapitres que nous allons aborder :
14-Apr-17 Affichage d’une texture 2D [Title of the course] Plan de la partie Voici les chapitres que nous allons aborder : L’objet Texture2D L’objet SpriteBatch DrawableGameComponent Afficher du texte à l'écran Copyright © NameOfTheOrganization. All rights reserved.
33
L’objet Texture2D Texture2D
14-Apr-17 Affichage d’une texture 2D [Title of the course] L’objet Texture2D Texture2D L’objet Texture2D contient la représentation en mémoire d’une image. Chargement de l’image en mémoire dans LoadGraphicsContent() L’image est maintenant chargée en mémoire mais il faut encore l’afficher mTexture = content.Load<Texture2D>("Folder/image"); Attention : il faut d’abord ajouter l’image au projet afin que celle-ci soit compilée au préalable au format .XNB Ou alors utilisé une image déjà compilé au format XNB et la mettre dans le dossier de l’exécutable. Copyright © NameOfTheOrganization. All rights reserved.
34
L’objet SpriteBatch SpriteBatch
14-Apr-17 Affichage d’une texture 2D [Title of the course] L’objet SpriteBatch SpriteBatch Prépare l’affichage de textures à travers le GraphicsDevice. Dans la méthode Initialize() : mSpriteBatch = new SpriteBatch(_graphics.GraphicsDevice); Enfin l’affichage dans la méthode Draw() : Afficher une texture nécessite de préparer la carte graphique. Le spriteBatch est utilisé dans ce but et peut afficher plusieurs textures. Dans un premier temps il faut instancier le SpriteBatch dans la méthode Initialize Enfin lors de l’affichage l’on spécifie le SpriteBlendMode : il s’agit de l’option de mélange qui permet notamment la transparence. - AlphaBlend : Permet la gestion de la transparence basée sur des valeurs Alpha. - Additive : mode de fusion additive… les valeurs colorimétriques seront ajoutées - None : pas de mélange Entre le begin et le End la méthode Draw pourra être appelée afin d’afficher la texture sohaitée : il reste à spécifier les coordonnées, la taille , et une couleur de teinte ( blanc signifie que la texture est affichée sous sa couleur originale) mSpriteBatch.Begin(SpriteBlendMode.AlphaBlend); mSpriteBatch.Draw(mTexture, new Rectangle(x,y,width,height), Color.White); mSpriteBatch.End(); Copyright © NameOfTheOrganization. All rights reserved.
35
DrawableGameComponent
14-Apr-17 Affichage d’une texture 2D [Title of the course] DrawableGameComponent DrawableGameComponent Afin de gérer proprement l’affichage des différentes textures il est préférable de créer une classe dérivée de DrawableGameComponent : class Heros : DrawableGameComponent { private ContentManager mContent; public Heros(Game game): base(game) this.mContent = new ContentManager(this.Game.Services); } Il faudra ensuite redéfinir les méthodes Initialize, LoadGraphicsContent , UnLoadGraphicsContent et Draw Copyright © NameOfTheOrganization. All rights reserved.
36
DrawableGameComponent
14-Apr-17 Affichage d’une texture 2D [Title of the course] DrawableGameComponent Le nouvel élément graphique est alors utilisable : private Heros mMyHeros; protected override void Initialize() { // TODO: Add your initialization logic here mMyHeros = new Heros(this); this.Components.Add(mMyHeros); base.Initialize(); } Copyright © NameOfTheOrganization. All rights reserved.
37
Afficher du texte à l’écran
14-Apr-17 Affichage d’une texture 2D [Title of the course] Afficher du texte à l’écran Les SpriteFont Représente une texture de police. Fichier XML décrivant comment construire une texture à partir d’une police. A la génération XNA créé une texture contenant les caractères correspondant à la police utilisée. Disponible depuis la 1.0 Refresh Il est très facile d’ajouter un SpriteFont : Click droit sur le projet -> Add -> New item -> SpriteFont Copyright © NameOfTheOrganization. All rights reserved.
38
Afficher du texte à l’écran
14-Apr-17 Affichage d’une texture 2D [Title of the course] Afficher du texte à l’écran SpriteFont <?xml version="1.0" encoding="utf-8"?> <XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics"> <Asset Type="Graphics:FontDescription"> <FontName>Comic Sans MS</FontName> <Size>23</Size> <Spacing>2</Spacing> <Style>Regular</Style> <CharacterRegions> <CharacterRegion> <Start> </Start> <End>~</End> </CharacterRegion> </CharacterRegions> </Asset> </XnaContent> Copyright © NameOfTheOrganization. All rights reserved.
39
Afficher du texte à l’écran
14-Apr-17 Affichage d’une texture 2D [Title of the course] Afficher du texte à l’écran SpriteFont Déclaration : Initialisation : SpriteFont spriteFont; public override void LoadGraphicsContent(bool loadAllContent) { if (loadAllContent) this.spriteFont= content.Load<SpriteFont>(“SpriteFont1”); } Copyright © NameOfTheOrganization. All rights reserved.
40
Afficher du texte à l’écran
14-Apr-17 Affichage d’une texture 2D [Title of the course] Afficher du texte à l’écran SpriteFont Affichage du texte dans la méthode Draw : this.spriteBatch.Begin(); this.spriteBatch.DrawString(this.spriteFont, "Mon texte", Vector2.Zero, Color.Red); this.spriteBatch.End(); Un spriteBatch est nécessaire à l’affichage du spritefont Copyright © NameOfTheOrganization. All rights reserved.
41
Pause-réflexion sur la partie 4
14-Apr-17 Affichage d’une texture 2D [Title of the course] Pause-réflexion sur la partie 4 Avez-vous des questions ? Copyright © NameOfTheOrganization. All rights reserved.
42
Lire les entrées utilisateurs
14-Apr-17 [Title of the course] La 2D sous XNA Lire les entrées utilisateurs Les périphériques d’entrées Copyright © NameOfTheOrganization. All rights reserved.
43
Plan de la partie Voici les chapitres que nous allons aborder :
14-Apr-17 Lire les entrées utilisateurs [Title of the course] Plan de la partie Voici les chapitres que nous allons aborder : Les périphériques d’entrées Copyright © NameOfTheOrganization. All rights reserved.
44
Les périphériques d’entrées
14-Apr-17 Lire les entrées utilisateurs [Title of the course] Les périphériques d’entrées Gestion des périphériques Clavier Classe Keyboard Souris Classe Mouse Gamepad Classe GamePad Copyright © NameOfTheOrganization. All rights reserved.
45
Les périphériques d’entrées
14-Apr-17 Lire les entrées utilisateurs [Title of the course] Les périphériques d’entrées Classe Keyboard Il est possible de connaître à tout instant l’état d’une touche du clavier grâce à la classe statique Keyboard et sa méthode IsKeyDown Keyboard.GetState().IsKeyDown(Keys ) Il est possible de récupérer un tableau contenant toutes les touches pressés par l’utilisateur actuellement à l’aide de la méthode GetPressedKeys Keyboard.GetState().GetPressedKeys() Copyright © NameOfTheOrganization. All rights reserved.
46
Les périphériques d’entrées
14-Apr-17 Lire les entrées utilisateurs [Title of the course] Les périphériques d’entrées Classe Mouse Il est possible de connaître à tout instant l’état de la souris à l’aide de la méthode GetState : Mouse.GetState() Il est également possible de définir la position de la souris à l’aide de la méthode SetPosition : Mouse.SetPosition(int x , int y); Copyright © NameOfTheOrganization. All rights reserved.
47
Les périphériques d’entrées
14-Apr-17 Lire les entrées utilisateurs [Title of the course] Les périphériques d’entrées Classe GamePad Il est possible de connaître à tout instant l’état de la manette d’un joueur donné à l’aide de la méthode GetState : GamePad.GetState(PlayerIndex) Il est également possible de récupérer les informations concernant le type de gamePad utilisé : GamePad.GetCapabilities(PlayerIndex) A noter qu’il est aussi possible d’activer le vibreur de la manette en 1 appel de fonction : GamePad.SetVibration Copyright © NameOfTheOrganization. All rights reserved.
48
Pause-réflexion sur la partie 5
14-Apr-17 Lire les entrées utilisateurs [Title of the course] Pause-réflexion sur la partie 5 Avez-vous des questions ? Copyright © NameOfTheOrganization. All rights reserved.
49
Opérations avancées sur les Sprites
14-Apr-17 [Title of the course] La 2D sous XNA Opérations avancées sur les Sprites Rotation, redimensionnement et animation Copyright © NameOfTheOrganization. All rights reserved.
50
Plan de la partie Voici les chapitres que nous allons aborder :
14-Apr-17 Opérations avancées sur les Sprites [Title of the course] Plan de la partie Voici les chapitres que nous allons aborder : Rotation Redimensionnement Copyright © NameOfTheOrganization. All rights reserved.
51
14-Apr-17 Opérations avancées sur les Sprites [Title of the course] Rotation Démarche Il faut spécifier le centre de la rotation ( coin supérieur gauche par défaut ) private Vector2 origin; origin.X = SpriteTexture.Width / 2; origin.Y = SpriteTexture.Height / 2; Copyright © NameOfTheOrganization. All rights reserved.
52
Rotation Démarche Puis il faut spécifier l’angle en radian :
14-Apr-17 Opérations avancées sur les Sprites [Title of the course] Rotation Démarche Puis il faut spécifier l’angle en radian : Enfin lors de l’affichage il suffit de spécifier l’angle de rotation et l’origine float rotationAngle = MathHelper.Pi ; mSpriteBatch.Draw( mSpriteTexture, screenPosition, null, Color.White, rotationAngle ,origin, 1.0f, SpriteEffects.None, 0f ); screenPosition est la position du sprite à l’écran Copyright © NameOfTheOrganization. All rights reserved.
53
14-Apr-17 Opérations avancées sur les Sprites [Title of the course] Redimensionnement Pour le redimensionnement uniforme il suffit de spécifier le scale paramètre dans la méthode Draw du SpriteBatch. Pour un redimensionnement non uniforme il suffit de spécifier un Vector2 Copyright © NameOfTheOrganization. All rights reserved.
54
Pause-réflexion sur la partie 6
14-Apr-17 Opérations avancées sur les Sprites [Title of the course] Pause-réflexion sur la partie 6 Avez-vous des questions ? Copyright © NameOfTheOrganization. All rights reserved.
55
La gestion des entrées utilisateur Les spécificités d’un jeu
14-Apr-17 La 2D sous XNA [Title of the course] Résumé du module La gestion des entrées utilisateur Les textures 2D XNA Le ContentPipeline Les spécificités d’un jeu Copyright © NameOfTheOrganization. All rights reserved.
56
Pour aller plus loin… Si vous voulez approfondir vos connaissances:
14-Apr-17 La 2D sous XNA [Title of the course] Pour aller plus loin… Si vous voulez approfondir vos connaissances: Publications Professional XNA Game Programming: For Xbox 360 and Windows par Benjamin Nitschke XNA Game Studio Express: Developing Games for Windows and the Xbox 360 par Joseph B Hall Sites web Copyright © NameOfTheOrganization. All rights reserved.
57
Vous avez suivi avec succès le module de cours n°01
14-Apr-17 [Title of the course] Félicitations Vous avez suivi avec succès le module de cours n°01 La 2D sous XNA Copyright © NameOfTheOrganization. All rights reserved.
58
Fin La 2D sous XNA Programmez des jeux en XNA avec C#. Pratiquez.
[Title of the course] Fin Programmez des jeux en XNA avec C#. Pratiquez. Copyright © NameOfTheOrganization. All rights reserved.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.