DooM

le meilleur jeu de tous les temps

.

[archives]

.

[jouer] ::: [doom legacy] ::: [doom builder] ::: [oblige/obhack]

Dans cette section, vous aurez accès aux informations et aux liens relatifs à mes créations pour DooM (la toute première version, sortie en… 1993), un des premiers et meilleurs FPS (en anglais « First Person Shooter », ou en français, « Jeu de tir à la Première Personne », ou « Jeu en vue 3D Subjective »), programmé par iD Software. Bien sûr, le jeu est graphiquement dépassé. Mais sa jouabilité est inégalable. Il reste donc l’un des meilleurs FPS, malgré son ancienneté.

FLASH BACK

Au moment de sa sortie en 1993, la majorité des ordinateurs n’avaient pour carte vidéo qu’une carte dite VGA, capable d’afficher 320×240 pixels, suivant une palette de couleurs limitée à 256 combinaisons. En outre, au sein des microprocesseurs ou des cartes graphiques VGA, rien ne facilitait la gestion de la 3D. Tous les calculs permettant la projection de coordonnées 3D sur un plan en 2D (l’écran), l’application de textures, les calculs vectoriels, la gestion des collisions, la gestion des échantillons sonores en stéréo, la luminosité (à savoir l’assombrissement progressif du rendu en fonction de l’éloignement de l’objet représenté) : tout devait être réalisé à la volée par un unique microprocesseur principal cadencé au mieux à 50MHz… Ceci sans parler de la mémoire vive, qui ne dépassait pas les 8MB. Les contraintes étaient telles que bien des programmeurs avant DooM jugeaient qu’un tel jeu ne pouvait exister. La sortie de DooM a prouvé qu’il était possible de contourner certaines limitations techniques jugées (à tort) infranchissables. DooM affiche des environnements en 3D texturés, composés de halls, de murs, de corridors, d’élévateurs, de plafonds mouvants, de portes, d’espaces sombres, d’éclairages blafards, de néons au starters défectueux, de labyrinthes aux tréfonds obscurs, le tout grouillant de monstres digitalisés prêts à vous foncer dessus au moindre soupir.

L’EXPLOIT TECHNIQUE

Pour réussir cet exploit, les programmeurs ont simplement mis au point une technique astucieuse, le Raycasting, allégeant au maximum possible l’effort du microprocesseur dans ses calculs en simplifiant au maximum l’expérience 3D. Pour comprendre un peu plus le Raycasting- sans rentrer dans le détail de la programmation, disons que les programmeurs de DooM sont probablement partis de la technique de Raytracing, plus complète, et au résultat parfait, exploitée à l’époque par un logiciel comme Peristence of Vision. Très connu, Persistence of Vision permettait déjà à un simple ordinateur de bureau, de faire lentement mais surement, de l’image de synthèse, à savoir d’afficher et combiner des primitives parfaites, sphères, cônes, tores, en les maculant de couleurs générées selon des mathématiques fractales. Persistence of Vision, générait des plans vers l’infini et orientait la caméra dans tous les sens, sur tous les axes, permettait aussi des luminosités complexes, des effets de flous, d’ouverture focale, etc… La technique du Raytracing ou lancer de rayon est gourmande : elle demande la résolution d’équations vectorielles pour rayon de lumière pointant sur chaque point de la caméra. En outre, cette technique suppose de savantes formules pour calculer des couleurs marbrées, souvent plus ou moins inspirées par des mathématiques fractales. La technique de Raytracing, du fait des calculs nécessaires à l’affichage des couleurs des matériaux : induit donc une lenteur supplémentaire du calcul, qui la rend inapte au jeu d’action en temps réel.

En ce qui concerne les textures de DooM, elles ne sont pas calculées en temps réel comme les matériaux de Persistence of Vision ; elles ont été pré-dessinées, utilisant une palette de couleurs réduite à 255 éléments maximum. Les textures sont en fait disponibles en mémoire sous la forme d’alignements verticaux de blocs de couleurs. On verra pourquoi plus bas. Les ennemis ou objets, ne sont pas non plus calculés en véritable 3D : ce sont des simples « sprites » (à savoir des petites images animées), issus de la digitalisation de figurines sculptées à la main, peintes, puis montées sur un plateau en rotation pour une capture sous de multiples angles.

En outre, niveau 3D, il y a des calculs vectoriels qui sont plus simples à réaliser pour un ordinateur que d’autres. En matière de lourdeur, les équations vectorielles relatives aux surfaces sphériques parfaites sont très gourmandes. Cependant, à l’époque, les microprocesseurs souffraient moins sur les calculs des intersections sur des surfaces planes. Moralité : pour gagner en vitesse, le monde de DooM sera dénué de courbes lisses réelles, et toutes les surfaces apparemment courbées sont en fait composées d’une série de surfaces planes.

D’autre part, pour accélérer le rendu, les programmeurs de DooM ont eu l’idée de pré-calculer au maximum ce qui pouvait l’être, et de confier à des « robots mathématiques » le soin de parcourir hors jeu et de façon rationnelle tous les niveaux créés, puis pour chaque position de l’espace, de trier correctement l’ordre d’affichage des murs et plans divers. Ces « robots mathématiques » ont donc pu « préparer le terrain » au microprocesseur qui, une fois délesté de ce triage fastidieux, n’a plus qu’à puiser dans un fichier d’extension .WAD, le résultat de calculs qui auraient rendu impossible toute fluidité de l’action s’ils avaient été effectués en temps réel. L’espace des niveaux de DooM n’est pas calculé à la volée à 100%, il a déjà été parcouru à 90% de manière exhaustive par ces « robots mathématiques ». Cependant, ce travail préliminaire impose  une relative staticité du monde. Il en résulte par exemple, que les murs de DooM ne peuvent réellement bouger, se déplacer sur l’axe Z ou pivoter, car s’ils le faisaient, tout l’ordonnancement des plans stocké à l’avance dans les fichiers WAD serait compromis. En outre, la procédure d’affichage de DooM trace les textures verticalement. Comme les textures sont stockées en mémoire verticalement aussi, l’ensemble est très rapide. Cependant, au moment de lever ou de baisse la tête, le système de tracé vertical des textures n’est plus adapté. Le champ de vision du héros reste donc toujours strictement parallèle au sol. Le héros peut donc certes sauter ou s’accroupir, mais impossible pour lui de « tanguer », impossible aussi pour lui de simplement lever ou abaisser le regard. Il en résulte aussi une limite sur le gameplay, simplifié lui-aussi : puisque le regard du héros ne peut s’ajuster de façon précise vers le haut et le bas, les ennemis situés sur des hauteurs ou en contrebas sont automatiquement touchés s’ils se trouvent sur l’axe de tir vertical. Enfin, la technique de pré-calcul a elle-même ses failles : les robots mathématiques optent pour une stratégie qui consiste à organiser l’espace en le découpant en deux et à re-découper en deux l’espace visité sans cesse, jusqu’à ce qu’ils ne rencontrent plus aucune raison de continuer à décrire le monde. Cependant, lorsque les secteurs parcourus sont trop détaillés ou trop imbriqués (niveau de convexité/concavité impossible à résoudre), les robots sont dépassés : ils laissent des pans entier de secteurs non calculés d’où des trous, ou pire, ils produisent finalement des crashs à l’exécution au grand dam des concepteur de niveaux. La conception des niveaux de DooM obéit donc à une exigence d’efficacité et de simplicité.

Notons : le monde de DooM permet tout de même l’ abaissement du plafond ainsi que l’élévation du sol. Cette composante permet la création d’escaliers, de portes à ouverture ou fermeture verticale, ou de plafonds capables d’écraser le joueur. Fosses, trappes, l’environnement 3D « hostile » est né de cette simple fonctionnalité exploitée à fond. Utiliser des obstacles comme des secteurs à la base plus élevée, permet aussi la restriction d’accès à certaines zones du monde et contribue à son aspect labyrinthique. Vient ensuite le gameplay inhérent au design du niveau : des boutons qui ouvrent des portes, activent des élévateurs, des systèmes minutés. Des secteurs qui une fois franchis entraînent l’affaissement du plafond. Cependant, cet élément fondamental pour la jouabilité, se limite au strict nécessaire, pour des raisons évoquées plus haut. Chaque zone d’un niveau de DooM est appelé secteur, chaque secteur a un et un seul sol, un et un seul plafond ; impossible de créer des niveaux avec des secteurs chevauchant d’autres secteurs, par exemple, impossible de créer un pont qui serait donc franchissable par le dessus et aussi par le dessous.

Ensuite, la luminosité. Les premières tentatives de création d’un jeu de tir en 3D n’avaient pas réussi à simuler correctement la baisse de visibilité accompagnant l’éloignement des plans situés plus loin par rapport à la caméra. DooM répond à cette problématique et le résultat est plus que probant, il est immersif. La palette des 256 couleurs de DooM est en fait composée d’une série de courtes sous-palettes de taille et de progression de couleurs exactement identiques, (dégradés de rouge vert bleu), à ceci prêt que leurs intensités vont decrescendo jusqu’au quasi noir. Chaque monstre, texture ou objet, est dessiné pixel par pixel, et en fonction de sa luminosité intrinsèque et de son éloignement par rapport au point de vue de la caméra, DooM sélectionne une sous-palette plus qu’une autre pour assombrir plus ou moins le pixel à afficher. Chaque secteur de DooM a sa propre luminosité, et dispose de systèmes capables de moduler l’intensité de la lumière de façon automatique, ou même en fonction de certaines actions de l’utilisateur. Ainsi, on part d’un monde aux textures flashy, qui peut d’un coup sombrer dans la pénombre, les ténèbres. On peut tomber sur des secteurs aux lumières qui pulsent lentement, aux lumières qui flashent avec plus ou moins d’intermittence, de façon stroboscopique. Les monstres aussi, apparaissent par intermittence, l’anxiété de ne pouvoir les suivre de façon parfaitement continue n’en est que plus forte.

Enfin les sons. Chaque objet, missile, arme, émet un son. Du simple grognement au ricochet, du claquement d’un fusil à pompe à l’explosion d’un baril de produit toxique inflammable, chaque sprite est émetteur de son… et l’atout du jeu, est de parfaitement faire coïncider la distance et l’orientation stéréo et le rendu au sein des écouteurs. L’environnement sonore a été déterminant dans le fait que DooM fut un des premiers programmes ludiques à produire chez le joueur, cette espèce de réaction instinctive d’évitement physique des tirs. Un monstre crache une boule de feu, une fois lancée, elle part dans l’espace en votre direction et suit une trajectoire rectiligne en émettant un bruit d’ectoplasme brulant étrange. La boule approche, d’un pas sur le côté droit, le héros l’évite, on entend le souffle de la boule de feu chatouiller l’oreille gauche, s’éloigner un peu pour finir en « blam » : elle a rencontré et explosé sur le mur situé dans le dos du héros. Le joueur de DooM découvre alors que sur son siège, il s’est lui-même complètement décalé sur la droite pour éviter une boule de feu qui n’existe pas : le monde de DooM a donc, pour un court instant, débordé du virtuel pour surgir dans la réalité. Le son joue plus profondément sur les instincts : tout comme l’animal effectue sa besogne en gardant les oreilles levées, le joueur de DooM avance prudemment dans la pénombre d’un éclairage faiblissant, à l’affut d’un bruit lui permettant d’identifier la provenance des problèmes.

Il faut savoir que les programmeurs de DooM ont depuis longtemps eu l’opportunité de ré-écrire complètement leur moteur de jeu pour dépasser ses limites. Chaque ré-écriture leur donne d’ailleurs souvent l’occasion de sortir un nouveau jeu qui constitue en lui-même une quasi révolution, doublée d’une véritable démonstration technique. L’ambition des développeurs n’est pas seulement le fun, c’est aussi la commercialisation parallèle d’un moteur de jeu puissant, stable, et flexible, à l’attention d’autres éditeurs de jeu et d’autres programmeurs, qui souhaitent faire l’économie d’une recherche et développement ardue en la matière. Une fois commercialisés les moteurs 3D plus performants et attractifs rendent obsolètes les anciens, qui passent alors gratuitement dans l’espace public. Les jeux conçus avec les vieux moteurs 3D, reprennent alors souvent une seconde jeunesse. Ils sont portés sur des systèmes d’exploitation initialement non prévus, ils font l’objet d’optimisations et d’actualisations, et supportent des nouveaux matériels associés. Ainsi, même si le programme exécutable initial de DooM ne peut aujourd’hui plus être lancé « tel quel » sur nos ordinateurs modernes, le code source du moteur a pu largement être repris par des passionnés. L’un d’entre eux, DooM Legacy, permet non seulement de faire tourner DooM sur Windows 32bits, mais il supporte aussi la 3D via le mode d’affichage OpenGL, et ses effets d’éclairage. DooM Legacy apporte aussi une multitude d’améliorations, comme par exemple un multiplayer de groupe jusqu’à 32 participants, la possibilité d’ajouter des « scripts » aux cartes. Un sous-langage de programmation contrôle en effet la logique du jeu : nommé FraggleScript, il permet par exemple de préciser et modifier des comportements d’objets ou de monstres inédits, et donc à terme, d’élaborer des épisodes reposant sur des règles de jeu totalement nouvelles.

RUN & GUN

L’exploit technique est un fait, mais DooM ne serait pas élu meilleur jeu du monde pour rien si ce n’était pour son gameplay, sa jouabilité sans faille, et doit-on dire, l’aspect contrasté et amusant du défouloir qu’il propose. Les fondamentaux de DooM reposent sur un mélange de jeu de tir, de pac-man (pour le labyrinthe et le jeu de cache-cache avec les monstres), et de réflexion (trouver la sortie d’un labyrinthe en franchissant des étapes). Outre l’aspect immersif et innovant qu’on a décrit plus haut, DooM propose au joueur d’affronter deux ennemis qui oeuvrent main dans la main à la perte du héros. Le monstre d’un côté, le monde en 3D lui-même de l’autre. Qu’on se le dise : les monstres sont à priori profondément stupides. Ils voient le joueur, il cherchent à le tuer en tirant dessus immédiatement, ou en se jetant sur lui. Mais en réalité, cette stupidité est largement compensée par l’interaction entre les monstres d’un côté et l’environnement 3D hostile de l’autre.  Échapper à une meute de monstres quand on n’a plus une douille de fusil à pompe sous la main n’est pas si simple. D’une part parce que le niveau n’est pas forcément plus clair qu’un labyrinthe. D’autre part parce que le joueur peut à tout moment tomber sur une trappe mortelle, un plafond presse-purée, une cuve d’acide toxique, un convertisseur photoélectrique brûlant, un baril inflammable qui lui explose à la figure, une étendue de lave en fusion. La conception des cartes dans DooM fait souvent que l’ennemi – si bête soit-il – a l’avantage d’être largement en surnombre, et que toute tentative d’élimination directe des meutes lancées sur vous reste éprouvante. Tantôt, le joueur pourra opter pour le repli stratégique si possible, au pire, ne pouvant « foncer dans le tas », il est contraint d’opter pour une tactique de jeu devenue la marque de fabrique du joueur de DooM, le « run & gun » (courir et tirer). En gros, le joueur de DooM acculé au mur et sans plus de ressource, est contraint de se battre d’une façon quasi folle, en courant un peu sans arrêt dans tous les sens, afin déjà d’échapper aux tirs ennemis arrivant en masse, de casser régulièrement ses trajectoires, de rendre imprévisible la lecture de sa course, afin de diviser les meutes à ses trousses et de perturber leur visée. Il arrive qu’un ennemi, dans cette situation, effectue par erreur un « friendly fire ». Or un ennemi blessé riposte immédiatement sur qui l’agresse, même si c’est un autre ennemi à son image. Les monstres restent soit statiques pendant de longues minutes tant qu’il ne voient pas le joueur ou lui tournent le dos, puis courent vite vers lui. Tout comme les fantômes dans pac-man changent radicalement de conduite en fonction d’un élément déclencheur, les monstres dans DooM changent vite de camp. Il en résulte aussi des attitudes contrastées du côté du joueur. On passe d’une prudence extrême dans des corridors noirs et d’une avancée à pas de velours, à des courses de lapin dératés. Dans une phase de run & gun le joueur peut, tout en continuant à courir, prendre le temps de récupérer les douilles laissés par les cadavres issus d’affrontement internes au camp ennemi, et espérer survivre, en éliminant peu à peu les forces en présence.  Éprouvant, le run & gun s’effectue d’ailleurs sur une musique de fond très rock’n roll, aux accords presque convenus. Le côté bon enfant du rythme musical combiné à la frénésie du run & gun fait de DooM un jeu contrasté au niveau du vécu émotionnel ; il peut être tendu, viscéral, mais tout aussi « fun » et même rigolo. C’est la variabilité extrême des situations rencontrées et des ambiances proposées qui font de DooM un titre finalement culte.

PROJET : RIVERS OF BLOOD

En m’appuyant sur le moteur de DooM Legacy, je compte prolonger l’expérience ludique de DooM, en créant un tout nouvel épisode, composé de 9 niveaux géants, très hostiles, mais à la difficulté bien dosée : Rivers of Blood. Contrairement aux niveaux classiques de DooM, assez simples, ceux-ci ne pourront pas se terminer en 2 minutes. En effet, DooM Legacy a considérablement augmenté la taille autorisée pour les secteurs des niveaux ; les cartes que j’ai élaborées sont d’une part huit fois plus grandes, d’autre part, la complexité du chemin qui vous mènera à la sortie ne vous permettra pas d’en faire le tour rapidement. L’intérêt de DooM Legacy, est qu’il reproduit fidèlement le gameplay initial du DooM de 1993, mais il introduit aussi des nouveautés, comme la possibilité via OpenGL de regarder en haut et en bas, d’une part. D’autre part, une technique secrète permet de faire que DooM Legacy affiche des secteurs superposés sur lesquels il est possible d’avancer, afin de réaliser les fameux ponts suspendus ou galeries souterraines impossibles à concevoir en 1993. Si les premiers niveaux de l’épisode n’exploitent pas explicitement ces nouvelles fonctionnalités, les suivants le font de plus en plus, au point de vous proposer des mondes véritablement distincts de ceux que DooM a pu vous proposer jusque là.

L’épisode a été long à produire, et d’ailleurs, il n’est pas encore terminé. Il est le fruit d’heures et d’heures d’essais et d’erreurs. Pour l’instant il n’utilise aucune ressource graphique différentes des ressources du fichier WAD originel. Les monstres et les murs n’ont pas été remplacés. Pas plus que les sons des armes et des monstres. Cependant, j’ai déjà pu composer pour chaque niveau mes propres fonds musicaux en MIDI, que j’ai converti en fichiers .MUS, qui sont des sortes de fichiers MIDI lisibles par DOOM. L’épisode comporte donc pour l’instant 7 cartes, de E1M1 à E1M7, qui sont très variées, et qui exploitent les possibilités majeures du moteur de DooM Legacy (rendu en « vraie » 3D OpenGL, effets de lumière, planchers en 3D, possibilité de nager dans l’eau). J’ai pu tous finir la majorité en moins de 15 minutes à l’exception des deux derniers qui nécessitent un temps minimum plus long, de 20 à 25 minutes en moyenne. Mais forcément, il faut les connaître par cœur… Le néophyte se mangera plusieurs morts cuisantes avant de se promener dans mes niveaux les mains dans les poches. Les cartes E1M8 ainsi que la carte cachée E1M9 font toujours l’objet de remaniements intensifs. Ces niveaux seront encore plus grands et délirants que les autres, et s’appuieront sur des portions de niveaux premièrement générés par les utilitaires de génération aléatoire de niveaux Oblige, et Obhack, retravaillés en second sous DooM Builder 2 (éditeur visuel de niveaux pour DooM fonctionnant sous Windows).

APERÇU DU GAMEPLAY

Pour l’instant, je me suis contenté d’afficher des captures d’écran, puis plus récemment, j’ai publié des petites vidéos montrant la manière de traverser les 7 premiers niveaux. On peut considérer qu’il s’agit là de solutions pour les joueurs perdus dans un gigantisme progressif.

Maxime

  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :