Présentation

  • : XNA Coding 4 the mass
  • digital-squad
  • : Internet
  • : Ce blog traite de la programmation de Jeux video en 3D pour XNA. C'est un site en francais, et très accessible aux débutant grâce à ses tutoriaux écrits et videos ! De plus, si l'envi vous prend d'écrire un tuto, nous le posterons avec grand plaisir !
  • Recommander ce blog
  • Retour à la page d'accueil

Texte libre

Attention, tous les articles ne sont pas affichés sur la page, veuillez naviguer par catégories pour voir tout le contenue du site.

Recommander

Cliquez ici pour recommander ce blog
Vendredi 30 mars 2007
Coucou tout le monde ! Je suis en train de rédiger un long papier sur le C# à la suite d'une demande d'un internaute, et je pense que ça pourrais en interesser plus d'un. Il sera disponible certainement lundi, mardi soir au plus tard !

Voilà, c'était juste pour vous mettre l'eau à la bouche !
+++
par DigitalGuru publié dans : Rien de space'
ajouter un commentaire commentaires (0)    recommander
Mardi 27 mars 2007
Voilà le petit tuto sur l'utilisation du moteur de particules Mercury Project. Voici le lien pour télécharger tout ce dont vous avez besoin :
Ici !

Bon coding à tous !
par DigitalGuru publié dans : [Tuto Video] XNA
ajouter un commentaire commentaires (3)    recommander
Dimanche 25 mars 2007
par DigitalGuru publié dans : Rien de space'
ajouter un commentaire commentaires (0)    recommander
Samedi 24 mars 2007
Tirage aléatoires
Par Digital Guru

1  Introduction

Dans le monde des jeux video, l'aléatoire est necessaire pour faire des rendus qui soient réalistes et pas seulement le reflet d'un effet mathématiquement parfait ! Imaginez un moteur de particules sans un bon générateur pseudo-aléatoire ! C'est pourquoi il m'a semblé necessaire de faire un (court) papier sur la génération de nombres pseudo-aléatoires. Une variante à la morose classe Random, qui n'est pas capable de nous pondre 100 nombres différents !

2  Définition de l'aléatoire

Un générateur de nombres pseudo-aléatoires est un algorithme qui génère une séquence de nombres présentant certaines propriétés du hasard. Par exemple, les nombres sont supposés être approximativement indépendants les uns des autres, et il est potentiellement difficile de repérer des groupes de nombres qui suivent une certaine règle (comportement de groupe).
Cependant, les sorties d'un tel générateur ne sont pas entièrement aléatoires ; elles s'approchent seulement des propriétés idéales des sources complètement aléatoires. John von Neumann insista sur ce fait avec la remarque suivante : " Quiconque considère des méthodes arithmétiques pour produire des nombres aléatoires est, bien sûr, en train de commettre un péché. De vrais nombres aléatoires peuvent être produits avec du matériel qui tire parti de certaines propriétés physiques stochastiques (bruit d'une résistance par exemple). "
La raison pour laquelle on se contente d'un rendu pseudo-aléatoire est : d'une part qu'il est difficile d'obtenir de " vrais " nombres aléatoires et que, dans certaines situations, il est possible d'utiliser des nombres pseudo-aléatoires, en lieu et place de vrais nombres aléatoires ; d'autre part, que ce sont des générateurs particulièrement adaptés à une implémentation informatique, donc plus facilement et plus efficacement utilisables.

3  Un algorithme efficace et rapide !

Je vais vous présenter un algo capable de générer des nombres aléatoires très rapidement et de bonnes qualités (grande répartition et très longue période). A bât les générateurs congruentiels linéaires (pas mal hein ?), et vive les générateur additifs ! Je l'ai tiré de la suite de Fibonacci, la très célèbre !
Voici la définition par récurrence de cette suite : un = (un-24 + un-55) mod M où M est la borne supérieur.
C'est à dire que 0 ³ un £ M
Pour u0, pourquoi ne pas prendre le nombre de ticks écoulé ? ou le nombre de secondes ? C'est aussi simple que ça, il n'y a pas grand chose à rajouter, à part que l'implémentation est ultra simple, l'efficacité démontrée, et d'une rapidité étonnante ! Cependant, dans vos jeux, je vous conseilles de générer un tableau de nombres aléatoires une fois pour toute, et de piocher dedans par la suite !
N'étant pas un pro du domaine, et estimant que vous n'avez pas besoin d'en savoir plus, je vais arrêter mon papier sur ces mots. Cependant, je ne peux que vous conseiller de visiter cette page, très bien faite, et aux mathématiques parfaites :
http://www.alrj.org/docs/algo/random.php
Bon coding à tous !



File translated from TEX by TTH, version 3.77.
On 24 Mar 2007, 22:48.
par DigitalGuru publié dans : [Coding] - Mini tuto
ajouter un commentaire commentaires (2)    recommander
Samedi 24 mars 2007
Les couleurs en infographie
Par Digital Guru

1  Introduction

En infographie (et par conséquent dans XNA) les couleurs ne sont pas gérées de la même manière que dans la vie courante. En effet, nous allons voir que une couleur peut être réprésentez de différentes manières, mais toujours selon la même base.

2  RGB, les trois composantes magiques !

RGB qui signifie Red Green Blue (RVB en français), est l'acronyme des trois couleurs primaires. Ces trois couleurs, vou le savez, permettent de représenter à peu prêt n'importe quelle couleur visible !.
Ainsi, une couleur peut être vue comme la modulation de trois valeurs, allant chacune de 0 à 255. Ce qui fait 2553 couleurs possibles ! En plus de ça, une dernière composante est ajoutée, la composante Alpha (ici notée a) qui définit la valeur de la transparence, ce qui nous fait 2554 couleurs possible soit plus de 4 milliards de couleur possibles. Pas mal non ? Malheureusement, votre moniteur n'est pas capable de toutes les afficher, mais les différences sont tellement infime que l'oeil n'y voit que du feu !
La représentation la plus simple d'une couleur est faite par la classe Color de XNA, et ses paramètre R,G,B et A, qui contiennt respectivement la valeur rouge, verte bleu et a de la couleur. Cependant, il n'est pas tellement aisé de la manipuler pour plusieurs raisons.
  1. Les shaders n'accepte que les Vector4, il faut donc une conversion à chaque image; pas très commode.
  2. Lorsqu'une classe couleur est instanciée, les valeurs ne peuvent plus être modifiée.
  3. Si les couleur sont non transparentes, un canal est utilisé pour rien.
  4. Lors de l'instanciation d'un classe color, de nombreux objets sont crées pour rien.
  5. Les vecteurs s'ajoutent facilement car l'opérateur + est surchargé. De plus ils sont très légers.
Vous l'avez compris, l'utilisation de vecteurs pour stocker une couleur est la meilleur solutions, mais je me dois de vous en présenter une dernière encore très utilisée, car en un seul entier, elle stocke les trois composante R,G et B.

3  Int32 ARGB

Et oui, vous avez bien entendu, en un seul entier, 3 voir 4 composantes peuvent être contenues !
Etudions la fonction de création de cet entier : RGB = R + G ×256 + B ×2562
Je vous épargne la démonstration (mais ceux qui ont étudié les congruences devraient s'en sortir assez facilement) mais sachez que :
  1. R = RGB mod 256
  2. G = E([RGB/256]) mod 256
  3. B = E([RGB/(2562)]) mod 256
(où E(x) est la fonction qui a x associe le grand entier ³ à x (fonction partie entière))
Faisons un petit test avec la couleur blanche : 16777215
R = 16777215 mod 256 = 255
G = E([16777215/256]) mod 256 = E(255,99609375) mod 256 = 255
R = E([16777215/(2562)]) mod 256 = E(255,990087) mod 256 = 255
Nous retrouvons bien nos composantes R,G et B a 255 (ouf :p).
Et la couche a me direz vous ! Et bien, c'est simple, c'est une composante de plus, on l'obtient donc comme ceci : a = B = E([RGB/(2563)]) mod 256

4  Conclusion

Deux choses à retenir. D'abord, vous êtes apte à programmer de nombreux filtres pour vos images, quelque soit le conteneur de couleur (un vecteur, un int, une classe Color). Ensuite, utilisez le plus souvent possible des vecteurs pour traiter vos couleurs.
En espérent que ce papier vous a plu !


File translated from TEX by TTH, version 3.77.
On 24 Mar 2007, 22:51.
par DigitalGuru publié dans : [Coding] - Mini tuto
ajouter un commentaire commentaires (0)    recommander
Vendredi 16 mars 2007
Voillà ! Je vous ai fait un nouveau tuto vidéo pour vous apprendre a gérer les collisions contre les bords de votre fenêtre, çela vous permettra de vous lancer dans vos premiers pongs et autres casse bricks ! En esperant que ça vous plaira !
par DigitalGuru publié dans : [Tuto Video] XNA
ajouter un commentaire commentaires (2)    recommander
Vendredi 16 mars 2007
Voilà, je voulais juste vous faire par d'une belle et heureuse nouvelle ! Le squadrons attend un enfant ! JanusGuru arrive parmis nous pour vous concocter de nombreux papiers sur le coding XNA ! Pour avoir été son mentor CSharpiste, et l'avoir vu évoluer, je sui aujourd'hui très fière de sa venu ! A ton premier article alors !
par DigitalGuru - AnalogGuru publié dans : Rien de space'
ajouter un commentaire commentaires (0)    recommander
Mercredi 14 mars 2007
Voici un tout petit code mais qui vous servira certainement beaucoup ! En effet, il sert à redimensionner le viewport (la fenêtre) d'XNA (par défaut en 800x600, pas très pratique pour vos futurs jeux HD !) :

[CODE]

            graphics.PreferredBackBufferWidth = 1280;

           graphics.PreferredBackBufferHeight = 1024;

            graphics.ApplyChanges();

Ici par exemple, nous passons en 1280x1024.
par DigitalGuru publié dans : [Astuce]
ajouter un commentaire commentaires (1)    recommander
Mercredi 14 mars 2007
Salut ! Une première video pour afficher un simple sprite, c'est basique, ça se fait en 2 min, mais ça vous permettra surement de coder votre premier pong assez facilement !

Voici le lien pour la classe CSprite, elle gère le redimmensionnement, les collision, la redéfinition du centre etc... Ici !

Bon coding à tous !
par DigitalGuru publié dans : [Tuto Video] XNA
ajouter un commentaire commentaires (11)    recommander
Mardi 13 mars 2007

Cours : Les bases d’XNA

 

 

Cours : Les bases d’XNA.. 1

I – Le GraphicsDeviceManager. 1

II – Le ContentManager. 1

III – Les différents overrides de XNA.. 2

1 – Définition d’un override : 2

2 – Définition des overrides XNA.. 2

 

I – Le GraphicsDeviceManager

Cet objet gère toute la partie graphique en rapport avec le device. Le device est la couche logicielle en liaison directe avec le GPU, et nous permet ainsi de faire abstraction de la marque du GPU, de son drivers, ou tout autre particularité qui nous obligerais a coder pour une carte graphique spécifique.

De plus il gère aussi les paramètres de création et contient l’objet GraphicsDevice, qui est l’objet device en lui-même.

 

II – Le ContentManager

Il gère ce qu'on appel le content pipeline, une nouveauté de la Beta2 de XNA.

Il y a de très nombreux articles en français sur le sujet, je ne vais donc pas tout redétailler, mais sachez que c'est ce qui nous permet de charger, des meshs, des sprites, etc, et ce, sans passer par des constructeurs ou pire encore : System.IO.

Quelques liens :

http://www.microsoft.com/france/vision/WebcastMsdn.aspx?eID=7651b49a-4c4d-43a8-89c4-5d584fbecb06

http://blogs.msdn.com/xna/archive/2006/08/29/730168.aspx

 

 

 

Pour charger un objet :

MonObject = content.Load<TypeDeMonObjet>("DossierDeMonObjetMonObjet");

Remarquez qu’on ne met pas l’extension de l’objet. De plus, pour être dans les assets à charger, l’objet doit être ouvert avec VS, c'est-à-dire, inséré directement dans le projet :

III – Les différents overrides de XNA

1 – Définition d’un override :

Remarque : Cette partie théorique est relativement compliquée, si vous ne désirez pas lire tout le chapitre, retenez qu’un override est un type de fonction qui est prédéfinis par une autre classe et qui sera appelée automatiquement.

            Le modificateur override est nécessaire pour étendre ou modifier l'implémentation abstraite ou virtuelle d'une méthode, d'une propriété, d'un indexeur ou d'un événement hérité(e).

Une méthode override fournit une nouvelle implémentation d'un membre hérité d'une classe de base. La méthode substituée par une déclaration override est appelée méthode de base substituée. La méthode de base substituée doit avoir la même signature que la méthode override. Pour plus d'informations sur l'héritage, consultez Héritage.

Vous pouvez substituer une méthode statique ou non virtuelle. La méthode de base substituée doit être virtual, abstract ou override.

Une déclaration override ne peut pas changer l'accessibilité de la méthode virtual. Les méthodes override et virtual doivent avoir le même modificateur de niveau d'accès.

Vous ne pouvez pas utiliser les modificateurs new, static, virtual ou abstract pour modifier une méthode override.

Une déclaration de propriété de substitution doit spécifier exactement les mêmes modificateurs d'accès, type et nom que la propriété héritée, et la propriété substituée doit être virtual, abstract ou override.

 

2 – Définition des overrides XNA

Initialize() :

Cette fonction est un endroit réservé au chargement des ressources non graphiques, comme l’instanciation des classes utilitaires, ou autres.

Elle n’est appelée qu’une seule fois, après le chargement du GraphicsDeviceManager.

LoadGraphiscContent() et UnloadGraphicsContent() :

Ces deux fonctions sont respectivement réservées à la création des objets graphiques et à leur destruction.

Ils sont appelés respectivement après le chargement du ContentManager et juste avant sa destruction.

Update() :

Fonction qui permet de mettre à jour les informations concernant le jeu, gérer la logique de jeu, l'intelligence artificielle, le réseau, le son, l'entrée utilisateur, les collisions entre les objets;

Draw() :

Cette fonction est réservée au dessin. Elle est bien sûr appelée à chaque image

Attention, l’utilisation du mot « réservé » pour les overrides ne signifient pas que vous devez obligatoirement faire les actions conseillées, mais sachez qu’une optimisation est faite en arrière plan pour telle ou telle tâche, il serait dommage de ne pas en profiter.

par DigitalGuru publié dans : [Tuto] XNA
ajouter un commentaire commentaires (0)    recommander

Texte libre




 Pour nous soutenir et nous payer un hebergement correct !
Ca vous coute rien, et nous rapporte tellement...mais croyez moi, on vous oulieras pas dans l'affaire :D

Calendrier

Juillet 2008
L M M J V S D
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
<< < > >>

Recherche

W3C

  • Feed RSS 2.0
  • Feed ATOM 1.0
  • Feed RSS 2.0
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur avec TF1 Network - Signaler un abus