Halo Création
Halo Création a déménagé !

Halo Infinite est peut-être dans un an, mais le futur de Halo est déjà là !

Nous sommes fiers de vous présenter notre nouvelle plateforme sociale pour tous : venez découvrir, partager et commenter tout ce qui touche à Halo, et plus encore !

https://www.halocrea.com/

Mise à jour en temps réel, système de vote, récupération des clips Xbox Live, intégration Twitch, messagerie instantanée, et un site pensé aussi bien pour bureau que pour périphériques mobiles ... Des fonctionnalités modernes pour une expérience au top !

Si vous voulez disposer d'une catégorie publique ou privée pour votre communauté/équipe/clan, n'hésitez pas à nous contacter !

À très bientôt !

Le staff Halo Création

<div style="position:relative;height:0;padding-bottom:56.21%"><iframe src="https://www.youtube.com/embed/C6bpYjp5R1Y" style="position:absolute;width:100%;height:100%;left:0" width="641" height="360" frameborder="0" allowfullscreen></iframe></div>
Le deal à ne pas rater :
ETB Pokémon Fable Nébuleuse : où acheter le coffret dresseur ...
Voir le deal

Fonctionnement du moteur de Halo

2 participants

Aller en bas

Fonctionnement du moteur de Halo Empty Fonctionnement du moteur de Halo

Message par RedHyperion Jeu 24 Fév 2011 - 16:09

J'ai pensé que ca pourrait intéresser certains moddeurs de savoir un peu comment fonctionne le moteur de Halo au niveau visuel. Alors il s'agit du moteur de Halo : Combat Evolved mais le principe de fonctionnement étudié dans cet article est pratiquement le même que pour les autres épisodes. Dans cet article j'explique notamment qu'est ce qu'un moteur de jeu, son intérêt, ses fonctions principales, mais aussi ce qu'est un shader et les méthodes d'éclairage. Il est évident qu'il ne s'agit que d'un aperçu comparé à ce qui se passe vraiment derrière les lignes de codes, mais il s'agit de la meilleure explication que l'on puisse trouver sur le fonctionnement du Blam! Engine.


DEBUT DE L'ARTICLE

Fonctionnement du moteur de Halo Moteur

La technologie utilisée par Halo : Combat Evolved est un moteur de jeu propriétaire développé par Bungie Software et Microsoft puis amélioré par Gearbox Software lors de son portage vers le PC. Ce moteur de jeu s'appelle Blam! Engine, il s'agit du même moteur pour toute la trilogie - il a quand même subi quelques améliorations depuis - étant donné qu'un tout nouveau moteur à été développé pour Halo Reach.

Moteur de jeu

Un moteur de jeu est un ensemble de composants logiciels appelés bibliothèques qui simule l'univers virtuel d'un jeu. Le composant principal d'un moteur de jeu 3D est certes le moteur de rendu, mais il existe d'autres composants qui sont chargés du système (lecture/écriture des entrées et sorties, c'est à dire les périphériques et les données), de la physique (contrairement à Halo 2, Halo 1 ne possède pas de moteur physx), du son...

Son fonctionnement est donc analogue à celui d'un moteur à combustion d'une voiture, mais le moteur ne suffit pas à faire la voiture ou le jeu, tout comme il faut un châssis et des roues pour la voiture, il faut du contenu pour le jeu. Le moteur de Halo est à la base programmé en C (langage de programmation assez basique) avec une API (Application Programming Interface) appelée DirectX. Programmer avec une API n'est pas chose aisée et il a fallu créer un langage de scripts basé sur le C pour simplifier la tâche aux Level Designers en particulier. Il s'agit du Blam! Script.

Le concept de game engine est apparu dans les année 90 lors de l'apparition des FPS comme Wolfenstein ou Doom mais s'est surtout appliqué pendant la 6ème génération du jeu vidéo (la belle époque de la Playstation 2, de la Dreamcast, de Halo et des beaux jeux en 3D). En effet l'industrie du jeu vidéo ne peut plus se permettre de confondre le travail des concepteurs avec celui des artistes et des programmeurs, il est donc préférable qu'une petite équipe de programmeurs développent un moteur et les outils qui vont avec pour permettre aux artistes de se consacrer au contenu d'un jeu unique.

Aujourd'hui nous sommes à la septième génération du jeu vidéo (la next gen), les jeux vidéos sortent massivement et rapidement avec des graphismes à couper le souffle, mais comment les développeurs font-ils pour respecter de telles délais avec de telles contraintes ? Et bien tout simplement parce que beaucoup de studios ne développent plus leurs game engines mais achètent (pour quelques milliers d'euros seulement) des moteurs très performants déjà conçus par d'autre développeurs, on peut citer l'Unreal Engine d'Epic Games (Gears of War, Unreal...), le CryEngine de Crytek (Far Cry et Crysis) et le Source Engine de Valve Software (Counter Strike, Half Life...).
Alors évidement on ne va pas acheter le moteur Blam! comme on achète un logiciel, il suffit pour cela d'acheter à moins de quinze euros le jeu Halo PC et de télécharger le Halo Editing Kit et l'extension gratuite Halo Custom Edition pour créer ses propres niveaux.


Rendu


L'opération principale du moteur s'appelle le rendu en temps réel qui peut être comparée à une photo comportant une largeur, une longueur et de la profondeur (relief) et dont la scène représente à la fois des objets (modèles), pris d'un point précis (point de vue) et des sources de lumière (éclairage), ajoutez y une quatrième composante : le temps et vous obtiendrez une représentation 2D d'un univers en 4D. Car comme vous le savez notre univers possède 4 dimensions : la largeur, la longueur, la profondeur (que la stéréo de nos yeux peuvent distinguer sous forme de relief) et le temps qui d'avoir des actions, c'est exactement le même principe pour les jeux vidéos.

Il existe plusieurs procédés de rendu, les deux principaux sont celui de la rastérization et du raytracing (lancer de rayons). Pour faire simple le raytracing permet d'obtenir une qualité photoréaliste d'une image de synthèse mais nécessite des calculs longs et complexes et par conséquent couteux en performances. C'est pour cela que le procédé utilisé dans l'industrie du jeu vidéo est celui de la rastérisation, de qualité moindre mais peu couteuse en ressources graphiques. Concrètement la rastérization consiste à convertir des coordonnées tridimensionnelles en une image pixelisée.


Halo supporte quatre rendus différents : le rendu fixe et les Pixels Shaders 1.1, 1.4 et 2.0. Il exploite aussi bien les processeurs graphiques dépassés que ceux de la dernière génération. Alors le rendu fixe est bien entendu le moins bon rendu disponible, on s'en sert principalement pour des tests sur une machine peu puissante. Pour les autres rendus il va falloir que je fournisse une petite explication sur les shaders.

Pixel shader

Un shader (du verbe shade : nuancer, ombrager) est une suite d'instructions informatiques données à un processeur. Ils décrivent la manière dont la lumière est absorbée ou diffusée, quelle texture doit être utilisée, la réflexion (reflet), la réfraction, l'ombrage, le déplacement des objets...

Étant donné que les shaders font partis du processus de rendu, c'est le processeur graphique qui se charge de ces opérations afin de soulager le processeur central, c'est le principe de l'accélération matérielle.

Les shaders ont été crées en 1988 par Pixar, ils étaient à l'époque utilisés uniquement dans l'industrie cinématographique étant donné la puissance de calcul nécessaire. Mais avec le développement des GPU (Graphic Processing Unit) de plus en plus accessibles pour nos PCs et l'arrivée des consoles de 6ème génération (PS2, Xbox, Dreamcast, Gamecube et PSP), les shaders ont pu être intégrés aux APIs DirectX 8 et OpenGL 1.4 dés 2001. Halo à donc été l'un des premiers jeux à en profiter.

Il existe plusieurs types de shaders mais un seul est utilisé dans la 3D temps réel, pour DirectX il s'agit des Pixel shaders et des Fragment shaders pour OpenGL. Cette différence est insignifiante pour nous étant donné qu'il s'agit de la même chose, alors pourquoi ne portent ils pas le même nom ? Parce que l'on ne programme pas un jeu avec le même langage en DirectX qu'en OpenGL, DirectX est utilisé uniquement par les plateformes Windows (Xbox et PCs) et peut être programmé avec beaucoup de langages tandis que OpenGL fonctionne avec tout le monde mais avec un unique langage de programmation : le Cg.

Les shaders sont supportés par Blam! sous la forme d'un système de matériaux que nous verrons dans une autre page. Aucune connaissance en programmation n'est nécessaire pour en fabriquer.

Fonctionnement du moteur de Halo 440px-Position_des_shaders_dans_le_pipeline.svg

Voici un schéma de pipeline de processeur graphique, un pipeline est un petit élément dans un circuit électronique dans lequel les données avance les unes derrières les autres au rythme d'un signal électrique appelé signal d'horloge (pour faire simple ce sont des oscillations). On peut donc le comparer à une sorte de canalisation (d'où le nom) dans laquelle les instructions sont découpées en étages. Les pipelines existent depuis 1958.


Éclairage


Partition binaire de l'espace

Pour la visibilité, le moteur utilise une BSP (Binary Space Partition) qui consiste à diviser l'espace en zones convexes, je ne vais pas vous expliquer ici même en détail comment cela fonctionne (surtout avec des propriétés barbares comme l'hyperplan ou les sous-espaces vectoriels...) mais pour faire simple il s'agit en fait d'afficher des formes en faisant une contraste entre les espaces "pleins" (et donc possédant une surface) et les espaces "vides". La représentation de ces zones se fait au moyen d'une arborescence appelée arbre-BSP.

Cette méthode est également utilisée en robotique pour détecter les collisions et par tout les ordinateurs qui ont besoin de travailler avec un espace. Dans le jeu vidéo, un arbre BSP sert à optimiser les calculs de collisions, d'occlusions (quand quelque chose est bouché) et des ombres. La BSP est utilisée dans les jeux vidéos depuis Doom et principalement dans les FPS.

Pour résumer, la BSP sert à construire la géométrie du niveau, alors pour afficher les modèles 3D (comme le Spartan) on utilisera des vertex lighting (sommets lumineux) qui seront expliqués sur une autre page.

Fonctionnement du moteur de Halo BSP_Trees

Petite illustration expliquant comment fonctionne l'arbre BSP de Doom (par opposition à Marathon).


Radiosité

Halo possède à la fois des éclairages statiques et des éclairages dynamiques. Le statique est crée par un processus dit de radiosité (ou radiance) sur la géométrie du niveau dont le résultat est enregistré dans un lightmap qui n'est qu'un genre de texture bitmap.

La lumière utilisée par le processus de radiosité peut provenir de nombreuses sources comme le soleil de la skybox et possède de nombreux paramètres d'éclairage et d'attributs qui peuvent être facilement réglés. Les matériaux ont des propriétés qui peuvent être réglées de manière à émettre de la lumière pouvant être utilisée dans le processus de radiosité. Ces matériaux peuvent être appliqués sur n'importe quelle surface. Les modèles peuvent également être paramétrés dans ce but à l'aide de lightmaps.

L'effet de radiance peut être contrôlé pour presque toutes les surfaces du jeu. Il suffit pour cela de modifier la tesselation (ou combien de fois la surface est divisée), plus cette valeur est élevée, plus la résolution de la lightmap sur la surface le sera ainsi que la durée du processus de radiosité. En résumé, des paramètres élevés augmentent la quantité de lightmaps (qui deviennent alors plus étendues) et affectent la quantité de mémoire utilisée (la radiosité est pré-calculée et donc stockée en mémoire).

Si il y a des éclairages statiques et dynamiques, il y a aussi des ombres dynamiques. Les ombres dynamiques sont formées par des objets tels des véhicules ou des personnages. Les ombres statiques bien entendu sont le résultat d'un processus de radiosité. Les modèles dits statiques tels que les décors (sceneries) peuvent être réglés de manières a utiliser des ombres ou des lumières statiques durant le processus de radiosité.

Le procédé de radiosité est analogue à celui de la radiance (qui s'effectue dans notre univers) et possède bon nombres de propriétés en optique qui ne seront pas abordées pour le moment.


Nous arrivons à la fin de ce court mais enrichissant aperçu sur le moteur Blam!, le peu que j'ai pu écrire est la plus grosse source d'informations disponible sur ce dernier. Nous verrons dans de prochains chapitres le fonctionnement intrinsèque de la rastérization, mais aussi le système de matériaux, le Blam! Script, la détection des collisions et bien plus encore.


Crédits : document réalisé par RedHyperion pour www.halomappingworld.net à l'aide de Halo PC Editing Reference par Matthew Armstrong, David Mertz et Marc Tardif (Gearbox Software) et du livre Game Engine Architecture de Jason Gregory. Photos : moteur de BMW pour l'intro, image du pipeline trouvée sur Wikipédia. Ce travail m'a demandé beaucoup d'heures en recherche et en rédaction, respectez mon travail.


FIN DE L'ARTICLE

J'espère que vous avez apprécié cette petite étude sur le moteur de Halo Wink.
RedHyperion
RedHyperion
Recrue
Recrue

Messages : 18
Date d'inscription : 24/02/2011
Âge : 30
Réputation : 4
Talent : Canon Police
Halo favori : Halo CE
Domaine favori : Mods

Revenir en haut Aller en bas

Fonctionnement du moteur de Halo Empty Re: Fonctionnement du moteur de Halo

Message par Invité Jeu 24 Fév 2011 - 16:16

J'ai hésité à m'inscrire à ton site, dans ta présentation, mais maintenant, je le fais !!!
Franchement, merci de ton partage... Tu as une très bonne connaissance d'info, Tout bien expliqué !!! (Bien qu'il y a des choses que je n'ai pas compris) ^^
Franchement, bravo bravo bravo !!
Je t'applaudis. (Hey les gars ! On a un ingénieur !!!! Oupah :p)
Bravo !!
Allez, encore un +1 Bien mérité... Bravo.

Oh, It's me, the first ? I'm The win ! agadounoel
Phantom'z
avatar
Invité
Invité


Revenir en haut Aller en bas

Fonctionnement du moteur de Halo Empty Re: Fonctionnement du moteur de Halo

Message par RedHyperion Jeu 24 Fév 2011 - 16:46

Si il y a des choses qui sont difficiles à comprendre c'est qu'elles sont peut être mal expliquées donc à corriger. C'est quoi que t'as pas compris exactement ?
RedHyperion
RedHyperion
Recrue
Recrue

Messages : 18
Date d'inscription : 24/02/2011
Âge : 30
Réputation : 4
Talent : Canon Police
Halo favori : Halo CE
Domaine favori : Mods

Revenir en haut Aller en bas

Fonctionnement du moteur de Halo Empty Re: Fonctionnement du moteur de Halo

Message par Invité Jeu 24 Fév 2011 - 16:56

Les plans d'images ^^
avatar
Invité
Invité


Revenir en haut Aller en bas

Fonctionnement du moteur de Halo Empty Re: Fonctionnement du moteur de Halo

Message par Spartmax Jeu 24 Fév 2011 - 17:01

Moi j'ai tout compris : je suis pas fait pour faire un moteur de jeu! XD
Spartmax
Spartmax
Légende
Légende

GamerTag : SpartMax31
Team : CRÉA
Messages : 566
Date d'inscription : 02/09/2008
Âge : 32
Réputation : 44
Talent : Born Toulouse and live to win
Halo favori : Halo 2
Domaine favori : Tricks & EE

Revenir en haut Aller en bas

Fonctionnement du moteur de Halo Empty Re: Fonctionnement du moteur de Halo

Message par RedHyperion Jeu 24 Fév 2011 - 17:06

SpartMax31 a écrit:Moi j'ai tout compris : je suis pas fait pour faire un moteur de jeu! XD

T'en fais pas beaucoup essaye, beaucoup abandonnent ^^.

Pнanтom'Z a écrit:Les plans d'images ^^

Plans d'images ? Tu veux dire comment on obtient une image avec la rastérization ou le truc du BSP ? Parce que le BSP faudrait tout un tutoriel pour expliquer comment un truc pareil fonctionne :lol!: .
RedHyperion
RedHyperion
Recrue
Recrue

Messages : 18
Date d'inscription : 24/02/2011
Âge : 30
Réputation : 4
Talent : Canon Police
Halo favori : Halo CE
Domaine favori : Mods

Revenir en haut Aller en bas

Fonctionnement du moteur de Halo Empty Re: Fonctionnement du moteur de Halo

Message par Invité Jeu 24 Fév 2011 - 17:11

Nan, la t'es HS
J'comprend pas les images ^^
Mais tant qu'a faire, fais un tuto pour ça aussi :lol!:
avatar
Invité
Invité


Revenir en haut Aller en bas

Fonctionnement du moteur de Halo Empty Re: Fonctionnement du moteur de Halo

Message par RedHyperion Jeu 24 Fév 2011 - 17:30

C'est prévu pour la BSP Wink

Bah les images en fait c'est surtout fait pour illustrer un peu histoire de reposer les yeux et de montrer qu'il y a encore tellement de choses à découvrir. Le prochain article que j'écrirai (dans pas longtemps) sera sur la rastérization donc en gros ca expliquera en détail ce que représente la première image sur le pipeline.
RedHyperion
RedHyperion
Recrue
Recrue

Messages : 18
Date d'inscription : 24/02/2011
Âge : 30
Réputation : 4
Talent : Canon Police
Halo favori : Halo CE
Domaine favori : Mods

Revenir en haut Aller en bas

Fonctionnement du moteur de Halo Empty Re: Fonctionnement du moteur de Halo

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires
» Diverses infos sur Halo 5: Guardians (Disque dur/Manette/Bouclier/Shield/Halo 5/Menu principal/Machinima/Cinéma/Kills/Information/Gameplay/Assassinations/Main menu/Points Spartans/Jaquette/Assassinats/HD/Moteur graphique/Avatar)
» Diverses infos sur Halo Reach (Assassinat/News/Moteur graphique/Challenge/Nouveautés/Avatar/Actus/Assassination/Console/Description)
» Diverses infos sur Halo 4 (Disque dur/Manette/Bouclier/Shield/Menu principal/Machinima/Cinéma/Kills/Information/Gameplay/Assassinations/Main menu/Points Spartans/Jaquette/Assassinats/HD/Moteur graphique/Avatar)
» Diverses infos sur Halo Anniversary (CEA/Website/Updates/Rating/Remastered/Review/Reach Engine/Neogaf/Main menu/Leaked/Joystiq/Informations/Impressions/Game/Analysis/Announcement/Suite/Nouveau/Gameplay/Demo/News/Moteur graphique/Nouveautés/Actus/3D)
» Concours #15 : Requiem

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum