SOMMAIRE


C++
Introduction
Scripts(54)
Exercices(3)
Liens
Livres
Forums


OpenGL
Introduction
Scripts(8)
Liens
Livres
Forums


IA
Script(6)
Forums


Jeux vidéo
Articles(1)
Forums


SDL
Introduction
Scripts(1)
Forums


Articles
Informatiques
TPE JPEG
Forums
Moteur de jeux 3D


PHP
Leçons
Scripts(11)
Exercices
Liens
Livres
Forums


JavaScript
Leçons
Scripts(2)
Exercices
Liens
Livres
Forums


HTML
Leçons
Scripts(2)
Exercices
Liens
Livres
Forums


Référencement
Leçons
Exercices
Liens
Livres
Forums


Quick Basic
Introduction
Scripts(14)
Exercices
Liens
Forums


Partenaires
Moteurprog.com
Mandragor.org
laltruiste.com
script-masters.com
Prografix
Zone DMC
Studios Tastalian
01php.com
Coder-studio.com
Melancolik.net
freddec.free.fr
InzeProg
Progmatique.fr
SMS
Covoiturage
en Europe

Cours de Yoga
en ligne



Autres liens
magazine - référencement






Les différentes étapes d'apprentissage vers la programmation orienté jeux vidéo et d'un moteur 3D : (mise à jour : 12/07/2006)

Introduction :
J'ai écris ce document car je trouve que la programmation de jeux vidéo et d'un moteur 3D est un domaine très très vague et quand on décide de s'y mettre et bien souvent soit on se noie dans la documentation ou soit on ne sait pas quoi chercher, c'est ainsi que me vînt l'idée de faire un peu une table des matières du débutant et intermédiaire pour avancer vraiment vers la programmation de jeux vidéo/moteur 3D car je n'ai jamais trouvé ce style de document sur internet et il faut s'y connaître dans beaucoup de domaine pour avancer.
J'ai décidé d'en faire un moi-même complet . Ainsi en suivant cette table des matières vous serez sûr de vraiment progresser . En plus du schéma d'apprentissage que je vous met, j'ai mis plein de liens vers les documents indispensables en français pour réellement progresser ainsi même si vous ne voulez pas suivre mon schéma vous pouvez consulter ces documents à absolument consulter :-) . Bon je ne vais pas introduire plus longtemps le sujet, commençons ! Ah oui une chose, si vous décidez d'apprendre tout le contenu des documents qui sont ici, cela peut prendre des mois et je dirais plutôt des années donc avant de se lancer je vous aurait prévenu ;-) il faut également être passionné en jeux vidéo et en 3D, jouer à des jeux c'est aussi apprendre .

Le schéma à suivre :
Avant tout je pars d'un principe que vous ayez des connaissances en mathématiques de niveau 1ère S voir un peu moins car à ce niveau vous avez introduit des connaissances de mathématiques de base et puis que vous connaissez les grands principes de physique et comment ils sont représentés enfin si vous n'avez pas ce niveau vous pouvez quand même continuer à lire ce document car vous pourrez très certainement vous en sortir avec les liens que je vous donnerais pour rattraper ces lacunes mais bon !

Le C++ :
La première chose qu'il faut apprendre c'est un langage de programmation, et là c'est le C++ qui s'impose car c'est le plus utiliser, le plus pratique, il est relativement simple, et sur internet vous trouverez plein de monde qui pourront vous aider ! Enfin je ne vous impose rien mais bon un peu quand même ! Moi je vous conseille d'apprendre le C++ avec un bon livre et pas un petit livre à 150 pages, non un qui fait plutôt vers les 1000 voir 1500 pages car après vous pourrez considérer que vous connaissez le C++ . Voici un très bon livre que je vous conseille qui est :

«Comment programmer C++ - Troisième édition – Introduction à la Conception Orienté Objets avec l'UML» de Deitel et Deitel

sinon voici à mon avis les leçons les plus complètes de C++ écrite en française téléchargeable ici :

http://casteyde.christian.free.fr/cpp/cours/index.html

Mathématiques de niveau terminal général :
Avant de se mettre dans l'apprentissage d'un API 3D il faut introduire quelques connaissances en mathématiques, voici un lien vers un site web qui propose l'essentiel de ce que vous devez connaître en maths jusqu'à un niveau de terminal (marqué pour les ES, S ... ) en géométrie, analyse ...

http://www.planete-maths.com/html/cours.htm

Introduction aux matrices :
Après avoir appris ces connaissances ou alors vous les rappelez cela ne suffit pas avant de se lancer dans un API 3D car il y a des connaissances en mathématiques que vous devez connaître ce sont les matrices car sinon vous ne comprendrez pas tout ! Voici des liens vers des pages qui introduise les matrices :
celui-ci est très lié aux matrices pour les transformations :

http://prografix.games-creators.org/document.php?id=70

tout comme celui-ci sauf qu'il est plus écris mathématiquement !

http://membres.lycos.fr/javamus/articles/trfmat.html

celui-ci apporte d'autres notions, ce document est sous forme de questions/réponses (FAQ) :

http://membres.lycos.fr/javamus/articles/mqfaq.html

Les mathématiques et les jeux vidéo :
Enfin ce serait bien de lire ce document qui est un document de mathématiques mais lié aux jeux vidéo, il sera très certainement un peu moins «gavant» pour vous, et il vous diras ce que vous devez absolument connaître en mathématiques pour se lancer :

http://dlanier.free.fr/cours/maths3D.doc
http://www-ipst.u-strasbg.fr/pat/program/infogr_t.htm
http://membres.lycos.fr/nicolasgate/sommaire_3d.htm
http://jpeglauden.free.fr/documents/directx/Intro%203D.zip

Programmation graphique en C++ sous DOS :
Bon je pense qu'à ce stade si vous maîtrisez ou même pas forcement à fond les documents précédents vous pouvez vous lancer quand même dans l'apprentissage d'un API 3D, bon vous devez très certainement savoir qu'il en existe 2 grands : OpenGL et DirectX . Je tiens ici à préciser que ce document n'a pas pour but de vous former de A à Z dans la programmation de jeux vidéo, si vous voulez en savoir plus sur la création d'un «API», voici quelques liens très intéressent mais vous n'êtes pas obligé de les lire si vous souhaitez utiliser OpenGL ou DirectX mais je vous conseille de le lire pour se lancer un peu dans la conception d'une moteur 3D ou pour après mieux comprendre comment marche OpenGL ou Direct3D, ce document permet de faire de la programmation graphique avec le C++ et Dos et ainsi créer un rendu software 3D, le plus important ce n'est pas que l'on programme sous DOS mais surtout comprendre comment ça marche, il est important de lire avant les documents sur la 2D avant sur le même site web, pour comprendre par la suite les documents sur la 3D :

http://e126.free.fr/

Structure de certains fichiers images :
A ce stade, je pense qu'il serait préférable de connaître la structure de certains fichiers images comme certains de base comme .BMP qui a la plus simple structure vu qu'il n'est pas compresser, ce n'est pas obligatoire mais pour se familiariser avec la structure de fichiers, et comment extraire des données d'un fichier, c'est mieux ! Voici deux sites qui décrivent sa structure et où le 2ème décris la structure du fichier .PCX :

http://antoche.alrj.org/prog/bmp/BMP.htm
http://e126.free.fr/download/2dchap5.zip

Choisir un API : OpenGL ou DirectX ?
Bon, revenons à nos moutons ! Là c'est à vous de choisir lequel vous voulez choisir, c'est un question de goût et de feeling avec le code de l'API ! Je tiens aussi à ajouter qu'en réalité c'est que OpenGL et Direct3D qui peuvent être comparable . Pour peut-être vous aider à choisir l'API de votre choix voici un document qui les présente sans pour autant en enfoncer un des deux, regardez des sources aussi pour voir vite fait comment est le style de code car c'est à mon avis le plus important :

http://glinfrench.apinc.org/comparatif.php3

L'API Win32 pour Microsoft Windows :
Cette partie s'adresse que aux personnes qui souhaitent développer sous Windows et comme la plupart des joueurs jouent et surtout possèdent Windows alors c'est un peu un passage obligé, voici une URL où vous trouverez des documents sur la programmation Windows, durant d'autres tutoriels c'est tout à fait possible que vous ayez des leçons/introduction à cette programmation :

http://www.mandragor.org/tutoriels/tutoriel.php?id=3&chap=0
http://www.alrj.org/docs.php?rubrique=7#Système
http://e126.free.fr/

La librairie SDL :
Cette librairie est une librairie qui gère, le son, le réseau, le graphisme, les événements et plein d'autres choses mais l'intérêt de celle-ci c'est surtout que c'est une librairie portable, tout comme Win32 ce n'est pas obligatoire mais si vous souhaitez du code qui reste un maximum portable, c'est elle qui faut choisir, la première URL est le site officiel et la seconde est une qui vous permettra de l'apprendre car la première ne fait que introduire brièvement cette librairie enfin si vous hésitez à l'apprendre elle est idéal pour vous décidez :

http://www.libsdl.org/intro.fr/tocfr.html
http://www.alrj.org/docs/libs/SDL/
http://www.programmationworld.com/site/Cours.asp?Action=cours&numero=38
http://prografix.games-creators.org/doc_cat.php?id=106

OpenGL :
Maintenant comme je vous l'ai dis il va falloir apprendre soit OpenGL ou alors DirectX ou même les deux si vous juger que vous avez le temps mais moi je vous conseille de commencer par un seul même je vous conseille OpenGL car il a une syntaxe plus simple et donc plus rapidement compréhensible, il existe de nombreuses ressources, voici celle d'OpenGL, je vous en mets quelques unes mais elles peuvent se répéter, pour garder un code portable sur divers OS vous pouvez utilisez Glut qui est aussi décris sur ces ressources, il permet la gestion des événements, du fenêtrage et d'autres fonctionnalités, si vous souhaitez vous spécialisez sur Windows vous pouvez utilisez l'API Win32 :

http://prografix.games-creators.org/doc_cat.php?id=94
http://antoche.alrj.org/prog/opengl
http://nikopol0.alrj.org/articles/files/bases/bases.pdf
http://glinfrench.apinc.org/ogl.php3
http://assos.efrei.fr/game-efrei/body/tutoriaux/opengl
http://gritche.chez.tiscali.fr/OpenGL/index.html
http://iquebec.ifrance.com/eraquila
http://www-evasion.imag.fr/~Fabrice.Neyret/doc/opengl.html
http://perso.wanadoo.fr/ultrafil/opengl.html
http://raphaello.univ-fcomte.fr/IG/OpenGL/OpenGL-1.htm

DirectX :
Si vous n'avez pas choisi OpenGL ou si vous souhaitez apprendre les deux, voilà qu'il va falloir apprendre DirectX ! Hé oui ! Elle est bien aussi mais c'est un produit Windows et donc utilisable que sur les OS de Windows ! Voici quelques URL vers des sites qui propose de vous lancer dans la programmation DirectX :

http://prografix.games-creators.org/doc_cat.php?id=93
http://glinfrench.apinc.org/dx.php3
http://assos.efrei.fr/game-efrei/body/tutoriaux/directx/index.php?theme=default
http://www.microsoft.com/france/vstudio/info/info.asp?mar=/france/msdn/technologies/technos/directx/info/20021223_dx9.html&xmlpath=/france/vstudio/inc/une.xml&rang=2
http://mustapha.bismi.free.fr/articles/dx1/d3dimint.html
http://jpeglauden.free.fr/documents/directx/

Sciences mathématiques et sciences physique :
Si vous avez tout appris et un peu utilisé aussi jusqu'ici, vous avez déjà une bonne formation en 3D de façon général mais si vous souhaitez vous lancez dans la conception d'un moteur 3D vous avez déjà d'avantages de connaissances à apprendre surtout en mathématiques et en physique c'est pourquoi je vous conseille de bien regarder ces documents, certes c'est déjà beaucoup plus compliqué mais pour optimiser votre code c'est indispensable !

Voici des sites de cours mathématiques :

http://mustapha.bismi.free.fr/articles/math1.html
http://nikopol0.alrj.org/articles/index.php?selected_categ=lecon_agreg_algebre
http://nikopol0.alrj.org/articles/index.php?selected_categ=lecon_agreg_analyse
http://nikopol0.alrj.org/articles/index.php?selected_categ=maths_algebre
http://nikopol0.alrj.org/articles/index.php?selected_categ=maths_analyse
http://nikopol0.alrj.org/articles/index.php?selected_categ=maths_appliquees
http://dlanier.free.fr/cours/MathsTheoriques.doc
http://www.eudil.fr/eudil/jbeuneu/index.html
http://nikopol0.alrj.org/articles/index.php?selected_categ=lecon_modelisation

Cours de mathématiques en classes préparatoire de première année MPSI :

http://perso.wanadoo.fr/mathprepa/cours1pdf.html

et ceux-ci de deuxième année de PC :

http://perso.wanadoo.fr/mathprepa/cours2pdf.html

Voici des sites de cours de sciences physiques, de bonnes connaissances en mathématiques sont nécessaire avant de se lancer dans ces cours :

http://laurent.granjon.free.fr/meca_solide/
http://laurent.granjon.free.fr/meca_point/cours.htm

Cours de classe préparatoire PCSI-PCI :

http://perso.wanadoo.fr/papanicola/s_i/Meca/mecaniqu.htm

Mécanique classique :

http://cours.cstj.net/203-101-r.f/telecharge.htm

Physique statistique de la matière molle :
http://www.lpthe.jussieu.fr/DEA/aslangul.pdf

Moteur 3D :
A ce niveau, maintenant le but est de crée un moteur 3D ou plutôt d'introduire différents éléments qui constituent un moteur 3D, comme les collisions, la gestion du réseau, un moteur physique, moteur à particules .. etc . Ces différents éléments seront détaillés plus loin, pour le moment ce sont plutôt différents documents qui intègrent le moteur 3D en général, c'est-à-dire les bases de la conceptions d'un moteur 3D :

http://tfpsly.planet-d.net/francais/3d/docs.html
http://www.mandragor.org/tutoriels/tutoriel.php?id=5&chap=0

L'animation temps réel :
Avant d'entrer encore plus dans le détail d'un moteur 3D il faut un peu connaître comment marche un jeux vidéo, y compris son animation :

http://dlanier.free.fr/cours/AnimationJV.doc

encore un autre document mais plus hard-ware, il viens d'ailleurs d'un site sur le hard-ware :

http://www.tt-hardware.com/article.php?sid=422

Les arbres BSP et octree, et autres structures de données :
Ceci est un apprentissage aux structures de données que vous aurez très certainement besoins d'utiliser, le premier est sur les BSP, et les deux derniers sur les octree, ne sous-estimer pas ces structures de données :

http://prografix.games-creators.org/document.php?id=108
http://www.alrj.org/docs/3D/octree.php
http://glinfrench.apinc.org/pages/docs/octree.zip

voici un document, qui parle de structures de données mais de façon général, très bien si vous n'avez pas compris les structures de données au-dessus, car c'est plus général :

http://www.mandragor.org/tutoriels/tutoriel.php?id=2&chap=0

Série de documents divers :
Cette section va vous proposer une série de documents divers sur la 3D, la modélisations, etc . Ils ne sont pas vraiment classé tellement ils sont divers . Cette page propose des liens vers pleins de documents intéressants :

http://www.alrj.org/docs.php?rubrique=7#3D

Ce document est un site très complet sur l'infographie, surtout sur OpenGL, à consulter vraiment car il réunit tout ce que vous devez connaître vraiment :-)

http://raphaello.univ-fcomte.fr/IG/Default.htm

Ce document est sur les isosurfaces :

http://nikopol0.alrj.org/articles/files/isosurface/isosurfaces.pdf

cette ressources est sur les moteur de terrain, LOD :

http://nikopol0.alrj.org/articles/files/terrain/terrain.pdf

illumination réaliste de terrains en temps réel :

http://mustapha.bismi.free.fr/articles/light.html

cette article est sur la subdivision de surfaces :

http://mustapha.bismi.free.fr/articles/subdivisions.html

Explication de la mise en oeuvre du Frustum Culling :

http://glinfrench.apinc.org/pages/docs/gl_FrustumCulling.zip

voici une source sur l'animation réaliste :

http://klaudius.free.fr/material/demos/demoangel.zip

ici voici un document sur Comment structurer sa caméra :

http://glinfrench.apinc.org/pages/docs/cstruct.zip

ce document décris comment se met en place la technique d'effets très réaliste de lumière : le bump mapping :

http://www.mandragor.org/tutoriels/article.php?id=1

en parlant de lumière voici un article sur l'ombrage gouraud et le placage de texture :

http://www.mandragor.org/tutoriels/article.php?id=5

Structure de fichier .3DS :
Ce type de fichier est très utilisé pour stocker toutes les informations sur un objet/une scène 3D, je vous conseille de l'étudier comme un défis car il existe déjà des librairies qui gèrent le chargement de ce type de fichier mais le but c'est d'apprendre pour le moment pas de réinventer la roue !

http://mustapha.bismi.free.fr/articles/3ds.html

Moteur à particules :
Comme son nom l'indique, il sert à produire des effets qui ne peuvent pas être représenter de manières classique, ce moteur doit obligatoirement être présent dans un moteur 3D . Il peut gérer des flammes, fontaines ... Enfin tout ces éléments très petits qui ne peuvent pas être modéliser de manière classique . Voici différents documents sur la modélisation de ce moteur et son principe, je tiens à préciser qu'il existe beaucoup de documents mais surtout en anglais, vous vous contenterez avec ceux-là :

http://mustapha.bismi.free.fr/articles/Particules/Particules.ppt
http://glinfrench.apinc.org/pages/docs/gl_particules.zip

Gestions des collisions :
Ici vous devez vous doutez de quoi je parles, lorsque vous dessinez avec OpenGL par exemple, ce ne sont que des primitives qui peuvent se coller les unes aux autres et pouvant se transpercer, le but des collisions et de donner un peu de réalisme physique sur vos objets, tout ces éléments font normalement partis d'un moteur physique que nous verrons juste après, voici différents documents sur la gestions des collisions qui est un domaine très vague car il faut une très bonne optimisation de code :

http://mustapha.bismi.free.fr/articles/obb.pdf
http://glinfrench.apinc.org/pages/docs/collisions.zip

Moteur physique et gestion de la physique :
Cette partie est très importante dans un jeu vidéo, il permet de le rendre réaliste en ajoutant sur les objets 3D des notions, de gravité, de vitesse, d'énergie cinétique, détections des collisions etc . Voici quelques documents sur ce sujet, les collisions intégrants normalement cette partie aussi :

http://nikopol0.alrj.org/articles/index.php?selected_categ=physique
http://mustapha.bismi.free.fr/articles/phys1.html
http://mustapha.bismi.free.fr/articles/animperso.html

voici un exemple de représentation physique :

http://klaudius.free.fr/material/demos/demophysic.zip

L'intelligence artificiel (ou le plus souvent appelé IA) :
Ce point est très important dans un jeux vidéo car c'est lui qui va donner un comportement réaliste aux ennemis à combattre par exemple ou encore pour trouver un chemin à vos personnages (jeux de stratégie), il existe plein de techniques pour simuler l'IA de la plus simple à des techniques beaucoup plus complexe, voici différents documents sur ce domaine, certains moins importants que d'autres, car il ne parle pas forcement de l'IA intégré dans les jeux vidéo :

http://prografix.games-creators.org/doc_cat.php?id=79
http://www.alrj.org/viewdoc.php?doc_id=142
http://www.vieartificielle.com
http://www.chez.com/produ/badro
http://glutro.free.fr/projet/nasp.htm
http://www.gpa.etsmtl.ca/cours/gpa779
http://iridia.ulb.ac.be/~cphilemo/
http://www.iro.umontreal.ca/~marsanjo/multi_couche.html
http://www.barth.netliberte.org/ia/nn.html
http://www.grassouille.org/docs/memoire.pdf
http://diwww.epfl.ch/mantra/tutorial/french/predic/html/index.html
http://www.frams.poznan.pl/findex.html
http://www.nimbustier.net/publications/djikstra/djikstra.html

voici un exemple graphique :

http://klaudius.free.fr/material/demos/demoants.zip

Librairies sonore :
Un jeux vidéo ne se résume pas à l'image, certes c'est elle qui est la plus dur à programmer si l'on inclus tout ce qui est à côté à savoir le moteur physique etc . Pour la programmation sonore il existe pleins de librairies, SDL que vous avez étudier plus tôt inclus la gestions sonore mais il existe pleins d'autres librairies (FMOD, DirectX...), voici un site qui les regroupe, à vous de choisir laquelle vous souhaitez choisir, et à vous documenter d'avantages su celle-ci :

http://prografix.games-creators.org/ressources.php?cat=12

pour la librairie FMOD, voici quelques ressources :

http://www.fmod-fr.tk
http://prografix.games-creators.org/doc_cat.php?id=246

Réseau :
Il y a un autre point important : dans les jeux vidéo aujourd'hui, il est important de proposer un mode de jeux en réseau, il existe ici des librairies réseaux des plus diverses, la SDL_net propose ça mais il y a aussi la programmation windows, ici vous trouverez des tuts :

http://progfr.tuxfamily.org/index.php?url=reseau
http://prografix.games-creators.org/doc_cat.php?id=109
http://www.libsdl.org/projects/SDL_net

Sources de moteurs 3D :
Maintenant que vous possédez de bonnes bases en programmation orienté jeux vidéo, il serait intéressent pour vous d'aller jetez un coup d'oeil sur des moteurs 3D déjà existant mais aussi leurs sources, vous en trouverez à cette adresse :

http://prografix.games-creators.org/logitheque-cat/315

Regarder des codes sources et une autre façon qu'il faut ajouter pour bien progresser, la section suivante et un peu comme celle-ci .

Sources de jeux vidéo :
Comme je le disais, cette section propose des liens vers des sources de jeux vidéos commercial où l'éditeur à bien voulu nous publié ses sources !

http://prografix.games-creators.org/ressources.php?cat=17

Conclusion :
A ce stade je pense que vous avez beaucoup de connaissances dans le domaine de la programmation orienté jeux vidéo . Bien sur maintenant il y a certainement pleins d'autres documents bien sur internet mais en d'autres langues, si vous trouvez des documents en français lié à la programmation orienté jeux vidéo, faîtes moi parvenir leurs URL à webmaster@startjeux.com . Ce document sera tenu à jour le plus possible pour permettre de recueillir un maximum d'informations sur ce domaine ainsi que pour vérifier s'il n'y a pas de liens morts, enfin je ne garantis rien mais il n'y a rien de plus énervant que des liens morts !






Tout le contenu de ce site web est protégé par les lois internationales de droits d'auteurs . Webmaster : Fabien Menou