Téléchargez l'application
Tom's Hardware sur l'App Store
Toute l'actu informatique de référence sur votre iPhone
Oui Non

Prise en main du kit XNA

par

Une fois le kit installé, il ne reste plus qu’à lancer l’environnement Visual C# 2008. En créant un nouveau projet, l’assistant propose plusieurs modèles dédiés à XNA : Windows Game, Windows Game Library, Xbox 360 Game, Xbox 360 Game Library, Zune Game, Zune Game Library, Content Pipeline Extension, Platformer Starter Kit.

Le dernier modèle de la liste donne toutes les bases utiles pour concevoir son propre jeu de plateformes en 2D. L’idée consiste simplement à modifier le programme étape par étape pour y implémenter vos propres idées. Son code source permet de rapidement appréhender les grands concepts de la programmation en XNA. Il permet aussi de vérifier que tout est bien installé :

  • Allez dans Fichier, puis Nouveau Projet.
  • Sélectionnez Platformer Starter Kit et cliquez sur OK
  • Puis lancez l’exécution en appuyant sur [F5]  (ou [Ctrl]+[F5] sans débogage).

Si tout est bien installé, le code doit se compiler et s’exécuter sans problème.

Le fameux « Platformer Starter Kit » du XNA 3.1
Une fois ce premier test réalisé, créez un nouveau projet en choisissant cette fois le modèle « Windows Game ». Le kit XNA génère alors automatiquement un squelette, une architecture générale commune à tous les jeux XNA. Cette architecture repose essentiellement sur une classe Game qui contient ce que l’on appelle communément la « Gaming Loop ». Tous les jeux sont en effet généralement construits autour d’une boucle principale dans la laquelle s’effectue la détection du joystick (ou de la souris), la gestion des déplacements, la gestion des collisions, et le rafraîchissement de l’affichage en fonction de ces éléments.

En étudiant rapidement le code ce squelette, vous découvrirez qu’il ne comporte que 4 méthodes clés :

  • Initialize() dédiée à l’initialisation de tous les éléments non graphiques
  • LoadContent() dédiée au chargement des ressources graphiques
  • Update(GameTime) où l’on met en œuvre les déplacements automatiques, les réactions en fonction des actions de l’utilisateur sur la manette, les détections de collisions.
  • Draw(GameTime) appelée chaque fois que l’écran doit être redessiné après un Update.

Une cinquième méthode UnloadContent() est également présente en fin de jeu, quand on sort de la boucle, pour libérer les ressources allouées.

Cette ossature de base ne demande ensuite qu’à être enrichie par de nouvelles méthodes et d’autres méthodes de base à surcharger. Tout ceci est largement documenté à la fois dans l’aide en ligne de XNA mais surtout dans la multitude de sites et communautés de développeurs XNA.

Squelette d'un jeu XNA

Partager:
10
Commentaires
X
Valider

Commentaires
Lire les commentaires sur le forum
LVM 20/07/2009 10:25
Afficher
LVM 20/07/2009 10:29
Afficher
SpadVIII 20/07/2009 12:07
Masquer
-2+

LVM> Juste pour info, sur PC, un affichage 3D en DX10 sous C# ne montrent pas de grosses différences de perfs avec le C++... (normal, les traitements finaux se font en code natif par la lib DX10 elle même).

De plus, en C#, tu peux généré du code à la volé: Au lieu d'écrire un algo "générique" qui prend en compte tout un tas de variable, tu peux facilement généré un un algo optimisé pour un set donné de variables: Dans ce cas, tu obtiens des performances bien supérieur à ce que tu peux avoir avec du C++.
Savoir si cela est utilisé dans les jeux, c'est une autre histoire, je te l'accorde, mais dire que le C# est plus lent que le C++, OUI, mais ça dépend!

:D ; j'ai déleloppé 7ans en C++ et ça fait 4ans que je fais du C#: Et je suis toujours étonné par les perfs très suffisantes (voir étonnantes) dans 99% des cas (même consta avec Java, d'ailleurs).

toys3d 20/07/2009 13:05
Masquer
-0+

bon dossier de présentation.
dommage qu'il n'y ait pas une page "pour aller plus loin" consacrée au kit de dev pro avec les xbox devkit, les outils, les couts

bastien95 20/07/2009 13:46
Masquer
-0+

Le catalogue jeux pour mac n'est pas très impressionnant ...

http://store.apple.com/fr/browse/h [...] ware/games

C'est vrai que EA Games prend la peine de porter ses jeux sur mac (d'ailleurs ils sous-traitent ça à TransGaming) en proposant la version PC et Mac sur le même DVD, mais bon c'est pas le cas de tous leurs jeux ...

ultrabill 20/07/2009 16:24
Masquer
-3+

Citation :

(...)Donc OK, parlez du XNA pour la Xbox 360 (même si tout le monde sait que cette console est maintenue en vie parce qu'elle est vendue bien en dessous de son coût réel), mais pour les baladeurs et smartphones, restez sérieux, les vrais outils (et le marché) sont chez Apple.


Avec des ordinateurs qui atteignent péniblement 10% de pdm, des téléphones à 2% de pdm et 0% dans les consoles de salon, clair qu'Apple est un incontournable :sarcastic:
Voir les capacités des MacBook/Pro et l'évolutivité des iMac en matière de 3D ludique prêtent également à sourire... Soit sérieux, s'il te plaît :o

Le PC, même s'il est délaissé au fil des années, reste un gros marché de joueurs. La XBox/360 n'est pas non plus un micro-marché.
Il n'y a guère que le zune/HD : tant qu'il sera cantonné à une partie du marché, il restera inintéressant au possible pour les éditeurs.

Ce qui bloquera WM7 ce sont les capacités des téléphones qui en seront équipés. Là où l'offre unique d'Apple avec son iPhone est intéressante, c'est qu'on sait à quoi s'en tenir. Avec WM (idem pour Symbian et Android), on ne sait pas toujours ce qu'on a sous le capot.

anonymous 20/07/2009 16:55
Masquer
-0+

@ultrabill: lit au moins ce que tu quotes, il parle du marché smartphone/baladeur. Et aujourd'hui c'est bien Apple qui trust de ce côté...

ultrabill 20/07/2009 17:08
Masquer
-0+

Citation :@ultrabill: lit au moins ce que tu quotes, il parle du marché smartphone/baladeur. Et aujourd'hui c'est bien Apple qui trust de ce côté...
J'allais pas quoter tout son post, non plus...
Et je pense avoir répondu à ce que j'ai quoté [:spamafote]

Mictateur 29/07/2009 11:05
Masquer
-0+

Deux réactions :
[*] :jap: pour ce dossier
[*] [:bap2703bis] LVM

HyundaiMenuSelect 15/03/2010 10:24
Masquer
-0+

Je débarque après la guerre (oui oui j'ai vu l'avertissement c'est plus vieux que chéplucombiendemois :D), mais pour avoir testé ça de façon extensive, on sent franchement pas passer le C# sur console comme sur PC, ou même sur Zune.
Ça nécessite quand même une méthodologie un peu différente, car même si les appels à l'API sont hyper rapides et permettent d'exploiter toute la puissance de la console, si la logique de jeu derrière est un peu trop lourde, on commence à sentir un peu le C#, même si sur PC comme sur 360, avec la marge de puissance, y'a de quoi faire. C'est pourquoi il faut toujours systématiquement utiliser les fonctions de l'API qui font déjà pas mal de choses plutôt que de chercher à faire le codeur malin qui construit ses propres solutions, on gagne énormément en rapidité.

Mais pour peu qu'on code ça bien, c'est d'une incroyable rapidité, et j'en suis sur le cul. Je vois difficilement ce qui pourrait arrêter quiconque (hormis la taille max du jeu de 150 Mo) de pondre un truc qui côté visuel, sonore, musical, gameplay, et complexité pourrait rivaliser avec les plus gros cartons du jeu vidéo sur PC et 360.

Les offres du moment

Newsletters


OK