J’ai parlé à mon jeune cousin qui vient de commencer une école d’informatique, et il m’a demandé quels sont les outils pour développer un jeu vidéo et quel langage il doit apprendre. La question semble simple, mais la réponse ne l’est pas tant que ça.
Pour commencer, la programmation d’un jeu vidéo (tout comme la programmation de toute chose d’ailleurs, enfin, selon moi) n’est pas une question de langage, mais une question de philosophie : on commence d’abord par se définir un objectif, puis selon les ressources et les connaissances disponibles on avise (on voit moins gros, on prends des cours, etc.) mais ..
Dans un premier temps, cadrons nos ambition
En effet, faire un jeu vidéo, c’est un peu vague parce que, vous vous en doutez bien, il y a tout un monde entre le petit jeu en marge d’un site web et le dernier Jeu de Rôle en Ligne Massivement Multi-joueurs (MMORPG) à la mode. Pour le premier, une seule personne pourrait le faire en un weekend alors que le second engagerait plusieurs centaines de personnes pendant des mois, voire des années.
Maintenant que vous avez une idée des extrêmes, avoir une idée de ce que demande votre idée de jeu sera (juste un tout petit peu) plus facile
Maintenant voyons comment développer un jeu vidéo
Il y a beaucoup de choses à gérer dans un projet jeu vidéo :
- principalement gérer le multimédia (images, sons, vidéos, modèles 3D, etc.).
- la logique du jeu (implémentation des règles du jeu, simulation de physiques, etc.).
- les problèmes de de compatibilité car chaque ordinateur, tablette ou smartphone est différent.
Des outils sont disponibles qui prennent en charge tout ou partie de ces problème. Mais bien sûr il y a toujours la possibilité de tout coder soi-même.
La programmation brute (from scratch)
Tu peux bien sûr tout développer toi-même si tu as la solution aux problème cités plus haut. Ou encore si ça ne s’applique pas. Par contre, ça te donne une totale maîtrise de ton application. Si tu n’es pas pressé de jouer à ton jeu, lance ton IDE préféré et code !
Mais tu peux aussi utiliser des librairies tierces pour tout ou parties de ton jeu.
Quelques librairies utiles
Certaines librairies proposent une solution réutilisable pour les problèmes communs. Ces librairies sont disponible gratuitement ou moyennant finances.
- SDL (Simple Directmedia Layer) qui gère tout ce qui est Multimédia et multi-plateforme
- Box2D qui gère la simulation de physique en 2D
- Irrlicht qui est un moteur de rendu
Je ne peux pas tout citer, mais voici un lien pour une liste plus complète
Les moteurs pour développer un jeu
Les moteurs de jeu sont comme les librairies, mais plus complètes. Ils fournissent l’architecture générale et réalisent déjà le gros du travail. Mais il reste encore beaucoup à programmer. Voici quelques exemples :
- en python : PyGame, PyKra, Pyglet
- en Javascript : Phaser, MelonJS, PixiJS
- en Java : LibGDX, Lightweight Java Game Library (LJGL)
Et pour les moins à l’aise avec le code, nous avons les éditeurs de jeux
Les éditeurs de jeu
Ce sont l’étape au dessus. Ce sont des logiciels complets qui intègre tous les outils pour gérer et intégrer tous les assets.
Voici les plus populaires :
- Unity3D
- Unreal Engine
- Godot
Ils permettent de développer un jeu rapidement et confortablement.
Plus qu’un programmeur
Bien qu’il y ait beaucoup d’outils et de librairies pour faire des jeux, être programmeur ne suffit pas. En effet la programmation n’est qu’une partie du développement d’un jeu. Parmi le graphisme, le son, la scénaristique, le game design par exemple et j’en passe.
De plus la frontière entre ces métier est mince et changeante, il n’est pas rare qu’un programmeur s’occupe de tâches graphiques (sur la programmation de “shaders” par exemple) ou que le scénariste fasse du game design et inversement, et bien souvent les animateurs ôtent une sacrée épine du pied des programmeurs.
Ce n’est donc pas “un” outil ou “un” langage qu’il faut apprendre mais “des” outils, “des” langages et même des compétences, leurs choix dépends vraiment du jeu à faire, et le choix est tellement large que je ne pourrais pas tout décrire dans un seul article. Je vais en écrire plusieurs (fufufu).
Menka