|
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.
Vue généraleDans les jeux vidéo modernes, il existe cinq ensembles principaux gérés par des moteurs distincts, chacun concernant une fonction spécifique du développement : 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 croître 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 engine, Reality engine, Havok, Novodex, Antiryad Gx, etc. Application middlewareCertaines compagnies sont maintenant spécialisées dans le développement de logiciels dits de middleware, 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ésChaque moteur de jeu est unique. Toutefois, certaines fonctionnalités se retrouvent. Les entrées/sortiesCette partie s'occupe de la lecture des périphériques externes :
Elle est aussi en charge de la lecture des données du jeu, et de l'écriture des sauvegardes.
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ématiquesOn 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 :
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 physiqueLe 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 :
Détection des collisionsLa 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, astéroïdes…). 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 :
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 GraphismeLe sonRecours au langage de scriptLe 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 artificielleLe réseauNotes et références
Liens externes
|
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net