Tonton, dessine moi un JV : les moteurs dans le Jeu Vidéo
Dans le cadre de notre partenariat avec le campus Ynov Bordeaux, nous avons l'immense plaisir de vous proposer aujourd'hui un nouveau type de contenu. Intitulé : "Tonton, dessine moi un JV", ce nouveau format aura pour but de rendre accessible et compréhensible certains aspects techniques du Jeu Vidéo souvent évoqués, mais rarement compris. Ray-Tracing, moteur graphique, teraflop et j'en passe, on va tout vous expliquer. Enseignant chez Ynov et professionnel expérimenté reconnu dans l'industrie du Jeu Vidéo, c'est Rémi Oukrat qui vous propose aujourd'hui de découvrir ce qu'est un "moteur" dans un jeu vidéo.
Alfred Lameche
Qu’est-ce qu’un moteur ?
Aujourd’hui nous allons tenter de démystifier ce qu’est un moteur, car de nombreuses personnes peuvent se demander de quoi il s’agit réellement. Et cette question est légitime, car l’utilisation du terme semble acceptée mais pas toujours bien définie. En effet, si l’on demande à Wikipédia ou même à chatGPT ce qu’est un moteur, on aura une réponse totalement loin de notre contexte qu’est le jeu vidéo. D’ailleurs, la synthèse du résultat est la suivante :
"Un moteur est un dispositif qui convertit une forme d'énergie en mouvement."
Mais alors pourquoi emploie-t-on le mot moteur aussi régulièrement dans le secteur du jeu vidéo ?
Il n’y a pas d’historique formel sur le sujet et certains diront que le mot moteur vient d’une métaphore associée au moteur de voiture en expliquant qu’il s’agit d’une définition pour donner un terme à une mécanique complexe.
En l’absence de véritables sources sur l’origine du mot moteur pour l’industrie logicielle. Je m’efforce de trouver une analogie simple afin d’expliquer ce que c’est à mes étudiants.
Pour ce faire, je me base sur l’étymologie du mot. Le mot moteur vient du latin "motor" du verbe movere qui veut dire "mouvoir".
En suivant cette logique, un moteur est donc quelque chose qui fait bouger des corps, des objets, tout un système complexe et c’est ce sens de machine qui met en mouvement des éléments qui est l’essence même du concept moteur comme on l’entend dans l’industrie du jeu vidéo ou dans l’industrie logicielle.
Dans l’industrie
Bien que l’on entend souvent parler de moteur, on fait très souvent allusion aux moteurs 3D de l’industrie du jeu vidéo. Mais dans l’industrie logicielle, cette appellation n’est pas réservée aux moteurs 3D et l’on peut donc avoir plusieurs types de moteurs comme les moteurs de base de données, les moteurs graphiques, les moteurs physiques, les moteurs de recherche, les moteurs de jeu, etc...
Quels sont les critères pour être un moteur ?
Alors il n’y a pas d’AOC pour obtenir l’appellation moteur, ni un concours particulier, mais nous allons voir ce qui est informellement attendu de ce que doit être un moteur.
Tout d’abord, un moteur est une librairie ou composant logiciel. C'est-à-dire que si je veux l’exploiter, je dois piocher dans cette librairie les fonctions parmi une liste qui m’intéressent. Ça peut-être des fonctions pour ajouter un cube dans une scène ou importer un objet graphique, etc...
Le moteur a pour but de faire une abstraction de toute la technicité sous-jacente afin de rendre accessible des fonctionnalités.
En effet, pour le simple import d’un objet 3D dans une scène via un moteur 3D :
Pour les programmeurs, cela a nécessité beaucoup de lignes de code et d’efforts afin d’assurer la prise en compte du format et des différentes versions l’utilisateur, cela doit être transparent.
L’idée principale d’un moteur est d’être complexe à l’intérieur, mais simple pour l’utilisateur
D’après ce que nous avons vu, il est nécessaire pour un moteur d’être une librairie, mais cela n’est pas suffisant, car en effet, un moteur apporte une notion supplémentaire qui est proche de sa définition liée au "mouvement". En effet, un moteur dans le logiciel est comme un moteur de voiture, il doit être "lancé" ce qui veut dire que logiciellement le moteur après être lancé va se mettre à "tourner" ou à "vivre".
Pour faire simple, une boucle est enclenchée niveau moteur et c’est ce qui va constituer son cycle de vie. Il sera donc possible de scruter des informations ou d’échanger avec lui à des instants "t" et d’observer son comportement.
Intérêts
Certains moteurs populaires ou internes sont plus complets que d’autres et apportent un gros lot de fonctionnalités intéressantes qui améliorent le développement de jeu en fournissant du clef en main.
Un moteur est extrêmement utile à tous les niveaux du développement d’un jeu vidéo :
- Pour le développement gameplay
- Pour la création d’interfaces
- Pour l’édition d’assets
- Pour l’édition de niveau
- Pour la gestion du son
- Pour le déploiement
- etc…
En effet, partons du développement d’un jeu vidéo comme il a pu être fait il y a quelques années ou comme il est fait quand on décide de recréer un simple moteur de jeu 3D en partant de rien.
On va commencer par se demander sur quelles plateformes on veut faire tourner notre jeu (OS, hardware, etc...) et faire des compromis et développements spécifiques. Chaque cible va avoir ses propres librairies, sa propre façon de penser et il faudra considérer tout cela dans le moteur. Même si l’on est que sur un simple petit moteur 3D, on devra s’occuper du rendu et il faudra donc faire le code nécessaire pour commencer à afficher un triangle, puis un cube puis tout le reste pour être capable d’importer des objets 3D qui ne sont que des ensembles de triangles. Forcément, plus les objets seront lisses et beaux, plus il faudra se creuser les méninges afin d’optimiser l’affichage dans une scène.
Et dans tout cet exemple, il ne s’agit que d’une infime partie du rendu 3D. On comprend très vite que réaliser un jeu vidéo sans l’usage d’un moteur est plus pénible et nécessite que tous les gens travaillant dessus, se doivent d’être calé en sciences et en programmation. Cela rend le développement inaccessible aux gens moins techniques, mais avec un gros talent artistique.
Afin d'accroître la productivité, et de permettre le développement de jeux vidéo par des personnes moins techniques mais capables d’apporter une signature artistique, il en est ressorti qu’il était nécessaire de développer des moteurs réutilisables sur plusieurs projets. Les studios ont compris qu’il était nécessaire de développer des outils et interfaces graphiques pouvant être utilisés par des artistes, game designers, etc... afin qu’ils puissent utiliser toute la puissance du moteur sans coder. C’est d’ailleurs ce que l’on retrouve dans les moteurs populaires accessibles.
Types de moteur
Nous allons donc par la suite présenter quelques types de moteur qui sont utilisés plus spécifiquement dans le secteur du jeu vidéo. Bien entendu, cela ne pourra pas être exhaustif étant donné qu’il y en a tout un tas.
Moteur 3D
Quand on parle de moteurs, la première chose qui vient à l’esprit, c’est moteur 3D même si l’on peut aussi réaliser des jeux en 2D. Un moteur 3D est un moteur qui va gérer le rendu de tous les objets graphiques dans notre jeu vidéo. Il va faire usage de nombreux algorithmes pour identifier efficacement ce qui est nécessaire d’afficher. Étant donné que l’affichage, c’est du visuel, il a en charge de gérer la propagation de la lumière pour embellir les objets à l’écran.
Moteur physique
Ensuite, vient le moteur le plus connu qui est le moteur physique. Alors le but de ce moteur est de coller à la science physique pour fournir une simulation proche des lois fondamentales qui régissent notre monde. Les programmeurs de gameplay pourront paramétrer celui-ci afin de définir leur gameplay. Les paramètres seront différents si l’on souhaite avoir une expérience réaliste, ou si l’on veut un jeu de plateforme. Dans un moteur de jeu complet, il est possible d’avoir différents moteurs physiques. Pour la gestion de la physique newtonienne pour les objets dans l’espace, pour la gestion de la physique lors de la destruction d’objets, pour la gestion des particules (feu, FX), pour la gestion du mouvement des arbres, etc…
Moteur de son
On en parle moins souvent, mais il s’agit d’un moteur très important, car il permet de définir toute la gestion du son de notre jeu pour avoir une cohérence en fonction de l’orientation de notre caméra, de la proximité du bruit, et de la propagation du son dans l’espace.
Moteur économique
Ce type de moteur est surtout utilisé pour des jeux de gestion ou des RPGs. L’objectif est d’avoir un moteur capable de gérer toute une économie avec des PNJ : producteurs, récolteurs, commerçants, etc… Ils peuvent chercher à s’enrichir et à faire évoluer leur commerce. Par exemple pour des RPGs, nous avons ainsi des PNJ qui vont réussir à s’enrichir et d’autres à s’appauvrir et les prix des objets à acheter pour le joueur peuvent fluctuer. Le but serait d’éviter que le joueur soit capable de tout acheter en ayant fait trop de quêtes annexes.
D’autres types de moteurs existent, mais il y en a tellement que cela serait beaucoup trop long à énumérer. Ce qu’il faut garder en tête lors du développement d’un moteur, c’est que l’un des points les plus importants à considérer, est la performance. Plusieurs concepts techniques se cachent derrière le mot "performance".
Bien entendu, l’objectif au final, par exemple pour un moteur 3D, c’est d’avoir un rendu époustouflant avec une fluidité élevée et le tout en utilisant le moins de ressources possibles. Il s’agit bien entendu d’une lettre au Père Noël, mais c’est l’idéal que l’on s’efforce d’atteindre. Comme pour tout, il faut faire des compromis et la difficulté réside dans le choix du positionnement des curseurs.
Alors instruit ?
J’ai eu la chance de réaliser divers moteurs (graphiques, 3D, physiques, économiques, autres...) et j’enseigne leur développement aux étudiants. Mais je dois avouer que je trouve très drôle la réalisation des moteurs économiques, car c’est toujours marrant de voir des PNJ qui cherchent à s’enrichir sur le dos d’autres PNJ et ça retranscrit malheureusement bien le comportement humain.
Parce que la connaissance est la meilleure voie pour accéder à la bienveillance, j’espère de tout cœur que ce petit article vous a permis d’y voir plus clair sur ce qu’est un moteur dans l’industrie du jeu vidéo.
Article rédigé par Rémi Oukrat