Le parcours du programmeur de jeux vidéos

Je vous propose une série d'articles sur la programmation de jeux vidéos. L'objectif est de vous familiariser avec la structure spécifique d'un programme de jeu et d'amener petit à petit des solutions à des problèmes plus pointus rencontrés dans ce domaine.

Objectif de ces articles

Attention, ne vous attendez pas à apprendre à utiliser Unity ou Unreal Engine dans ces articles ! L'objectif est d'apprendre à développer des jeux par soit-même. Si vous avez quelques bases de programmation, vous constaterez que ces outils, s'ils permettent aux débutants d'obtenir un résultat rapidement, n'apportent pas grand chose à plus long terme.

L'inconvénient de compter sur ce type d'outil est qu'on se prive du plaisir de découvrir comment tout cela fonctionne vraiment. Sans compter que ces solutions propriétaires n'ont que la pérennité des entreprises qui les vendent : si elles mettent la clé sous la porte ou décident d'arrêter de mettre à jour leur logiciel, vous aurez perdu tout votre travail et le temps consacré à apprendre à utiliser leur interface complexe. On a un excellent exemple de ce cas avec Flash qui tend à disparaître alors que c'était un outil très pratique pour les créateurs d'animations et de jeux. Si cet outil avait été libre, il se serait toujours trouvé quelqu'un pour le remettre à niveau.

Je m'efforcerai donc d'utiliser un minimum de bibliothèques externes et uniquement sous licence libre et opensource : principalement SDL2 et OpenGL.

D'autre part, je vais faire mon maximum pour que les programmes proposés soient le plus crossplatform possible. On devrait pouvoir les faire fonctionner avec un minimum d'ajustement au moins sous Windows et sous Linux. Sachant que le portage sous Mac ne devrait pas poser beaucoup plus de problème et que la compilation pour Android est également envisageable via certains ajustements (j'en parlerai peut-être plus en détail par la suite).

Les outils

Mon compilateur de prédilection est g++ qui est inclus dans la plupart des distributions linux. Sous Windows, je vous recommande d'installer Mingw qui permet d'utiliser g++. Pour l'éditeur de texte, vous pouvez vous contenter de Notepad++ pour expérimenter votre code. Pour des projets plus importants, Code::Blocks est une très bonne solution.

Première étape

Vous êtes libres de parcourir les articles dans l'ordre qui vous convient, de brûler des étapes ou même de vous rendre directement à un article qui vous intéresse.

Si vous débutez dans la programmation de jeux vidéos vous pouvez suivre les articles dans l'ordre, les notions seront introduites progressivement.

Pour ceux qui ont déjà une expérience dans le domaine, je vais m'efforcer de faire en sorte que chaque étape soit relativement concise de manière à pouvoir servir de mémo.

Je tiens à rassurer ceux qui seraient rebutés par le fait que les premiers exemples sont en mode console de commande et non en mode graphique : c'est un choix délibéré. Les premières notions abordées ne nécessitent pas de mode graphique mais posent des bases qui resteront vraies même dans un jeu en 3d. J'ai fait ce choix pour que le plus grand nombre puisse s'essayer à ces bases sans avoir à se soucier d'installer autre chose qu'un compilateur c++. Ainsi, les fondamentaux ne seront pas dès le départ noyés dans du code d'initialisation de mode graphique et autres joyeusetés spécifiques à chaque bibliothèque graphique.

Précisons que ces articles ne sont pas des tutoriels. A mon sens, on suit un tutoriel lorsqu'on ne s'intéresse qu'au résultat final : le format tutoriel est idéal lorsque vous souhaitez effectuer une installation laborieuse sans vous prendre la tête, mais je vous parie que le jour ou vous voudrez le refaire, vous demanderez à nouveau à Google ! Ici, il vous faudra avoir une démarche active pour comprendre les notions et être capable ensuite de le faire par vous même.

Commencer l'apprentissage