Moteur de jeu vidéo

Moteur de jeu vidéo

Moteur de jeux

Un moteur de jeu est une application informatique (dite de type middleware) apportant les fonctionnalités principales au fonctionnement d'un jeu vidéo, mais aussi une aide au développement ou à la portabilité du jeu. Les fonctionnalités généralement fournies par un moteur de jeu sont un moteur de rendu (que ce soit 2D ou 3D), un moteur physique ou juste les détections de collision, la gestion du son, le scriptage, l'animation, des fonctions d'intelligence artificielle, un support réseau.

Sommaire

Vue générale

Dans les jeux vidéo modernes, il existe des ensembles principaux parfois gérés par des moteurs distincts, chacun concernant une fonction spécifique du développement : le système (entrée/sortie, interface utilisateur, mémoire, etc.), le graphisme, le son, le réseau (pour les jeux multijoueurs), la physique et l'intelligence artificielle. Mais la définition d'un moteur de jeu reste malgré tout relativement floue en raison de la juxtaposition des notions. Un moteur de jeu est ainsi le regroupement de l'ensemble des moteurs spécialisés nécessaires à la réalisation d'un jeu.

Par exemple la société Valve Software commercialise le Source engine qui est le nom commercial de son moteur de jeu. Le Source engine est une solution de développement « clé en main » regroupant les différents moteurs (graphisme, son...) nécessaires au développement d'un jeu. La gestion de la physique de ce moteur de jeu est assurée par le moteur Havok, spécialisé et développé par une société tierce et qui est lui-même utilisé dans d'autres moteurs de jeu.

Le choix d'un studio de création de jeu se limite donc généralement à acheter ou développer tout ou partie des moteurs nécessaires au développement de son jeu. Il est en revanche important de signaler que depuis plusieurs années le rôle des moteurs de jeu ne cesse de grandir. L'investissement que représente en effet le développement des moteurs de jeu ne cesse de croitre et rend délicat voire impossible l’amortissement de ceux-ci sur une unique production.

Parmi les moteurs de jeu les plus utilisés ou remarqués ces dernières années, on citera (liste non exhaustive) : le Renderware, les différents Unreal engine, Quake engine, le Source engine, le CryEngine, le Torque Game Engine, Reality engine, Havok, Novodex, Antiryad Gx, etc.

Application middleware

Certaines entreprises sont maintenant spécialisées dans le développement de logiciels dits de middleware (« intergiciels » en français), c'est-à-dire fournissant des fonctions qui restent personnalisables. De tels développements ont pour but de ne plus « réinventer la roue » en développant une suite logicielle robuste qui inclut plusieurs éléments nécessaires à la création d'un jeu. De nombreux logiciels de ce type dans le jeu vidéo fournissent des facilités de développement pour les graphismes, les sons, la physique, et l'implémentation d'intelligences artificielles. Gamebryo et RenderWare sont deux représentants largement répandus.

Certains middlewares fournissent exclusivement une seule facilité, comme par exemple la synthèse d'arbres et de plantes, c'est le cas de SpeedTree, cette spécialisation lui permet de générer des images plus convaincantes que des moteurs plus généralistes.

Certains middlewares fournissent tout le code source, d'autres publient la spécification de leur interface de programmation pour permettre la liaison avec d'autres logiciels. Certains encore, proposent l'un ou l'autre des arrangements selon le contrat signé et les honoraires.

Fonctionnalités

Chaque moteur de jeu est unique. Toutefois, certaines fonctionnalités se retrouvent.

Les entrées/sorties

Cette partie s'occupe de la lecture des périphériques externes :

  • Joystick (lecture de l'état des boutons et du ou des sticks)
  • Souris (lecture de l'état des boutons, du mouvement relatif, de la position)
  • Clavier

Elle est aussi en charge de la lecture des données du jeu, et de l'écriture des sauvegardes.

  • Lecture/écriture depuis un disque dur.
  • Lecture depuis un DVD, un CD ou un mini disk.
  • Lecture/écriture depuis une carte mémoire.

C'est elle qui se chargera de compresser/décompresser les données du jeu (notamment pour accélérer les chargements). Elle sera aussi en charge de leur éventuel cryptage/décryptage.

Les mathématiques

On y trouvera toutes sortes de fonctions mathématiques nécessaires à l'élaboration d'un jeu. Pour un jeu 3D, on y trouvera plus particulièrement :

  • les matrices. En général des matrices 3x4 ou 4x4 pour le stockage de l'orientation des objets (sur les trois axes), de leur scale (sur les trois axes) et parfois aussi de leur position. La signification réelle des lignes et colonnes est directement liée au moteur et n'a pas toujours de base mathématique réelle. Certains stockeront un scale uniforme sur la dernière colonne ou ligne, d'autres la translation, d'autres encore utiliseront des matrices de transformations plus complexes pour éviter les problèmes de scale dans le cas des matrices hiérarchisées.
  • les quaternions. Ils servent au stockage des orientations. Ils sont beaucoup plus compacts que les matrices et supportent beaucoup mieux les interpolations. On les retrouve typiquement dans les animations, pour stocker l'orientation de chaque clef d'interpolation.
  • les vecteurs. À deux, trois ou quatre dimensions. On parle de composantes x, y, z et w. La composante w n'est en général pas utilisée, et n'existe qu'à des fins d'optimisation sur les processeurs 128 bits.

On peut citer comme exemple de calcul très souvent effectué dans un moteur de jeu : la multiplication de matrices, l'inversion de matrices, le produit scalaire ou vectoriel.

La physique

Le module de physique calculera le mouvement des objets, la manière dont ils interagissent les uns avec les autres, la manière dont ils glissent sur le sol ou sur les murs, la manière dont ils rebondissent etc. C'est lui aussi qui calculera la déformation des objets mous, des cheveux, poils, vêtements et autres rideaux. On peut distinguer trois grandes catégories de simulation :

  • la physique du point. C'est la plus simple. Un objet est formalisé par un seul point en mouvement avec une vitesse, une accélération, une friction, de la gravité etc. En général, ce genre de physique se contente de déplacer les objets sans agir sur leur orientation.
  • la physique du solide. Chaque entité est formalisée par une ou plusieurs formes mathématiques (boîte, sphère, gélule, cylindre) ou même par un mesh convexe. La physique du solide est beaucoup plus réaliste (et donc complexe) que la physique du point puisqu'elle gère aussi l'évolution de l'orientation. Certains éditeurs se sont spécialisés dans la fabrication de modules de physique du solide pouvant être directement intégrés dans les moteurs existants. On citera par exemple Havok, Novodex, et dans le domaine du libre ODE ou Bullet.
  • la physique de particules. Elle s'apparente à la physique du point. Un volume est constitué d'un ensemble de particules (on parle aussi d'atomes) liées entre eux par des contraintes (le plus souvent des ressorts). Ce type de physique autorise la déformation et la rupture des volumes. Elle est donc particulièrement bien adaptée à la simulation des tissus.

Détection des collisions

La gestion des collisions est une couche logicielle qui permet de détecter lorsque deux objets se rencontrent et ainsi de pouvoir définir une action résultante. Un objet est alors une représentation géométrique d'éléments du jeu (personnages, obstacle, projectiles…).

Un module de collision est typiquement constitué d'un ensemble de fonctions mathématiques pour le calcul des intersections par paires de primitives géométriques : sphère contre sphère, sphère contre boîte, boîte contre triangle… Chacune de ces fonctions calculera selon les capacités du module le point d'intersection, la normale au point de contact, ainsi que la distance de pénétration des deux objets.

On distingue deux grandes catégories de collisions :

  • La détection sur modèle d'objets statiques, la plus simple, considère que deux objets sont en collision si au moment du traitement de la détection les deux objets se touchent. Comme le traitement est échantillonné régulièrement dans le temps, des objets en mouvement rapide ont très bien pu entrer en contact avec d'autres objets entre deux temps d'échantillonnage.
  • La détection sur modèle d'objets dynamiques s'attache aussi au mouvement des objets. On traite la transition d'un instant échantillonné au suivant. Les calculs sont plus coûteux, mais ont l'avantage d'empêcher un volume en mouvement d'en traverser un autre sans que cela soit détecté. L'instant de la collision de deux objets peut être calculé plus précisément qu'avec la technique dite statique.

Selon le type de jeu l'une ou l'autre des approches est utilisée. Les moteurs de jeux en 3D actuelles utilisent typiquement un mélange de ces deux méthodes.

Pour optimiser les calculs de collision sur les formes complexes, les moteurs de jeu peuvent utiliser la notion de volume englobant et plus généralement de hiérarchie de volumes englobants. Le calcul rapide mais approximatif permet alors d'éliminer des états de non collision, dans le cas contraire un calcul exact est réalisé sur l'objet. La hiérarchie de volumes englobants rajoute seulement des étapes supplémentaires en subdivisant un objet en sous ensembles englobés dans une forme simple.

Pour réduire le nombre de calcul de paire d'objets les moteurs recourent généralement à structurer l'espace en sous ensembles d'objets proches.


Le graphisme

Articles détaillés : Moteur 2D et Moteur 3D.

Le son

Article détaillé : Moteur Son.

Recours au langage de script

Le recours au langage de script est une méthode qui a aujourd'hui fait ses preuves, permettant, du point de vue développeur, de faciliter le paramétrage du moteur de jeu en fonction du gameplay qu'il a été décidé de réaliser. Le recours au script dans un projet de développement a pour conséquence de séparer les métiers, le programmeur du moteur peut s'occuper spécialement de cette tâche, le concepteur de niveaux (level designer) peut améliorer le gameplay sans pour cela être un programmeur chevronné.

Historiquement, le besoin d'un système de script s'est fait sentir pour les jeux d'aventure nécessitant beaucoup d'interactions, il en a découlé Script Creation Utility for Maniac Mansion (SCUMM), créé initialement et comme son nom l'indique pour le jeu Maniac Mansion (1987) et réutilisé pour chaque nouveau jeu avec un minimum de modifications, il a resservi pour le jeu The Curse of Monkey Island (1997) soit 10 ans plus tard. Les autres types de jeu sont aussi devenus à leur tour complexes, leurs moteurs de jeu ont alors souvent incorporé un système de script [1].

Pour le développement de Jedi Knight: Dark Forces II (1997), le moteur de jeu a été adapté pour supporter un langage de script. Robert Huebner, qui a participé à cette évolution, explique qu'il existait avant cela un langage binaire INF qu'il était dur d'assimiler, un livret compté était destiné à cet usage. Le langage de script implémenté : COG est compilé à la volée lors du lancement d'une partie puis exécuté sur une machine virtuelle (un automate à pile) pour assurer la robustesse du jeu. Il n'y a eu aucune conséquence négative rapportée que ce soit sur le développement ou sur le jeu lui-même, mais plutôt un accroissement de la créativité des concepteurs [1].

Certaines entreprises ont développé leurs propres langages de script, comme il est écrit plus haut, c'est aussi le cas de id Software avec le langage QuakeC ou de Epic Games avec le langage UnrealScript. Mais l'intégration d'un langage de script est devenu très accessible, certaines bibliothèques logicielles étant développées indépendamment spécialement dans ce but. C'est le cas de la bibliothèque et du langage Lua qui a été utilisé dans un grand nombre de jeux de genres très divers [2].

L'intelligence artificielle

Article détaillé : Intelligence artificielle.

Le réseau

Article détaillé : Moteur Réseau.

Voir aussi

Notes et références

  1. a  et b Robert Huebner, Adding Languages to Game Engines (www.gamasutra.com, 1997)
  2. Lua uses, le langage Lua a été utilisé dans des jeux aussi divers que Baldur's Gate (1998), Escape from Monkey Island (2000), Homeworld 2 (2003), World of Warcraft (2004), Far Cry (2005)

Liens externes

  • Developpez.com, ressources pour le développement de moteurs de jeux vidéo.
  • (en)[1], moteur de jeu gratuit en C++.
  • (en) GameMiddleware.org, annuaire de solutions middleware commerciales pour les jeux vidéo.
  • REWiki - Un dépôt d'information sur les formats de données des jeux vidéo
  • Portail du jeu vidéo Portail du jeu vidéo
Ce document provient de « Moteur de jeux ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Moteur de jeu vidéo de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • Moteur De Jeu — Moteur de jeux Un moteur de jeu est une application informatique (dite de type middleware) apportant les fonctionnalités principales au fonctionnement d un jeu vidéo, mais aussi une aide au développement ou à la portabilité du jeu. Les… …   Wikipédia en Français

  • Moteur de jeu — Un moteur de jeu est un ensemble de composants logiciels qui effectuent des calculs de géométrie et de physique utilisés dans les jeux vidéo. L ensemble forme un simulateur en temps réel souple qui reproduit les caractéristiques des mondes… …   Wikipédia en Français

  • Jeu vidéo de tir subjectif — Jeu de tir subjectif Far Cry, jeu de tir subjectif, de 2004, présente la vue « classique » du genre. Un jeu de tir subjectif est un type de jeu vidéo de tir en 3D dans lequel le personnage doit en général éliminer des ennemis à l aide d …   Wikipédia en Français

  • Jeu-video — Jeu vidéo Moonlander, 1973 Un jeu vidéo, ou ludiciel, est un jeu utilisant un dispositif informatique. Le joueur utilise des périphériques pour agir sur le jeu et percevoir l’environnement virtuel …   Wikipédia en Français

  • Jeu-vidéo — Moonlander, 1973 Un jeu vidéo, ou ludiciel, est un jeu utilisant un dispositif informatique. Le joueur utilise des périphériques pour agir sur le jeu et percevoir l’environnement virtuel …   Wikipédia en Français

  • Jeu Vidéo — Moonlander, 1973 Un jeu vidéo, ou ludiciel, est un jeu utilisant un dispositif informatique. Le joueur utilise des périphériques pour agir sur le jeu et percevoir l’environnement virtuel …   Wikipédia en Français

  • Jeu video — Jeu vidéo Moonlander, 1973 Un jeu vidéo, ou ludiciel, est un jeu utilisant un dispositif informatique. Le joueur utilise des périphériques pour agir sur le jeu et percevoir l’environnement virtuel …   Wikipédia en Français

  • Jeu Vidéo De Course — Un jeu vidéo de course est un type de jeu vidéo dont le gameplay est basé sur le contrôle d un véhicule, le plus souvent motorisé. Le but est généralement de progresser le plus rapidement possible d un point à un point autre pour gagner sur les… …   Wikipédia en Français

  • Jeu video de course — Jeu vidéo de course Un jeu vidéo de course est un type de jeu vidéo dont le gameplay est basé sur le contrôle d un véhicule, le plus souvent motorisé. Le but est généralement de progresser le plus rapidement possible d un point à un point autre… …   Wikipédia en Français

  • Jeu vidéo d'aventure — Jeu d aventure Le jeu d aventure est un type de jeu vidéo caractérisant les jeux vidéo dont l intérêt prédominant se focalise sur la recherche et l exploration, les dialogues, la résolution d énigmes, plutôt que sur les réflexes et l action.… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”