Doom engine

Doom engine

Id Tech 1

L'id Tech 1 (ou Doom engine) est un moteur de jeu qui permit de faire fonctionner les jeux Doom et Doom II de id Software. Il a aussi été utilisé sous licence par les jeux Hexen, Heretic, Strife et HacX, et d'autres jeux. Il a été créé par John Carmack, et certaines fonctions auxiliaires ont été écrites par Mike Abrash, John Romero, Dave Taylor et Paul Radek. Initialement développé sur les systèmes NeXT, il a été porté sous DOS pour la première version de Doom et a été porté ensuite sur un grand nombre de consoles et de systèmes d'exploitation.

Le code source de la version Linux de Doom a été libéré en 1997 sous une licence permettant la libre utilisation non commerciale, puis a été de nouveau libéré en 1999 sous la licence publique générale GNU (GNU GPL). La douzaine de ports non officiels des sources qui ont été créés depuis, ont permis de faire fonctionner le jeu sur des systèmes d'exploitation jusqu'alors incompatibles avec le jeu, et dans certain cas ont permis d'étendre les capacités du moteur en ajoutant de nouvelles fonctions.

Ce n'est pas un vrai moteur 3D, car il n'est pas possible d'incliner le champ de vision en haut ou en bas, et deux pièces ne peuvent pas se trouver l'une en dessous de l'autre, mais c'est une architecture logiciel assez élégante qui permet de faire du pseudo rendu 3D. Lors de son développement, Doom était révolutionnaire pour sa capacité à faire rapidement des projections de textures dans un environnement 3D.

Sommaire

Structure des niveaux

En y regardant de plus près, tous les niveaux de Doom sont en 2 dimensions, démontrant l'une des principales limitations du Doom engine : il n'est pas possible de créer des salles les unes au dessus des autres. Cette limitation permet toutefois de faciliter l'affichage de niveau sous forme de carte, représentant les murs par des lignes et le personnage de dessus.

Éléments de base

L'élément de base est le sommet (vertex), qui représente un point en deux dimensions. Les sommets sont reliés pour former des lignes (linedefs). Chaque ligne peut avoir un ou deux cotés (connu sous le nom de sidedefs). Les sidedefs sont enfin groupés ensemble pour former des polygones (appelé sector ; secteur). Un secteur est une zone particulière d'un niveau.

Secteurs

Chaque secteur contient un ensemble de propriétés, comme une hauteur de plancher et de plafond ainsi qu'une texture pour le plancher et pour le plafond. Chaque secteur définit également un certain niveau de luminosité. Ainsi, pour créer une zone d'ombre ou de lumière, il faut créer un nouveau secteur. Il ne peut donc pas vraiment y avoir d'ombres portées, ni même de lumière dynamique. Il s'agit d'une autre limitation du Doom engine.

Sidedefs

Les sidedefs ont moins de propriétés que les secteurs ; Néanmoins, ils peuvent être orientés, et possèdent une ou deux textures (une par face).

Things

Les "Things", littéralement "Choses" en Anglais, représentent tous les objets dynamiques du jeu. Entre autres, les things peuvent représenter des ennemis, des objets à ramasser, ou même des objets de "décoration", telles les torches. Les Things peuvent être orientées dans huit directions au départ, et, outre leur nature, elles n'ont pas de propriété modifiable.

Subdivision binaire de l'espace

Doom utilise une technique connue sous le nom de partition binaire de l'espace (binary space partitioning ou BSP). Un outil est utilisé pour convertir un niveau en arbre BSP, les niveaux bruts ne sont pas intégrés dans le jeu. Selon la taille du niveau, le processus peut prendre un temps important. C'est pour cette raison qu'il n’est pas possible de déplacer des murs dans Doom ; alors que des portes ou des ascenseurs se déplacent de haut en bas jamais aucun ne se déplace sur le coté.

Un niveau est divisé en arbre binaire : chaque position de l'arbre est un nœud qui représente une zone particulière du niveau (la racine représente par exemple l'ensemble du niveau). À chaque branche de l'arbre représente une ligne de division séparent l'espace en deux. En même temps, cette ligne de division peut couper les murs (linedefs) en sous-segments (segs).

Les feuilles de l'arbre représentent des polygones convexes, et il n'est pas utile de diviser plus encore la zone. Ces polygones convexes sont référés sous le nom de sous-secteur (ou SSECTORS), et sont liés à un secteur particulier. Chaque sous-secteur possède une liste de segs qui lui est associé.

Le système BSP est une manière ingénieuse de structurer les sous-secteurs pour qu'ils soient bien ordonnés pour le rendu graphique. L'algorithme devient assez simple :

  1. Commencer au nœud racine.
  2. Traiter les nœuds fils de ce nœud de manière récursive. Les nœuds les plus proches de l'observateur étant traités en premier. Cette information peut être trouvée en regardant de quel coté de la ligne de division l'observateur se trouve.
  3. Lorsque un sous-secteur est atteint, le dessiner.

Le processus est terminé lorsque la colonne entière des pixels est remplie (c'est-à-dire lorsqu'il n'y plus de trou). Cet ordre de traitement assure qu'aucun temps n'est gaspillé pour dessiner des objets qui ne sont pas visibles et en conséquence les niveaux peuvent devenir très grands sans qu'il n'y ait vraiment de pénalité de vitesse.

Rendu

A l'époque les ordinateurs n'étaient pas assez performants pour rendre de la vraie 3d. Doom utilisait un moteur de fausse 3d: la camera ne peut jamais tourner vers le haut ou vers le bas, et le terrain est codé en analysé en 2d, ce qui réduit considérablement les calculs.

Dessin des murs

Les murs sont rendus avec la technique du Raycasting, utilisée aussi pour Wolfenstein 3D. Elle consiste à tracer des tranches verticales de texture à hauteur variable pour donner l'illusion des murs.

Plancher et plafond

Les planchers et plafonds sont rendus avec une méthode similaire: le Z-Mapping, également utilisé dans des jeux comme Mario Kart, et qui fonctionne avec des tranches de texture horizontales.

Objet (sprites)

Chaque secteur du niveau possède une liste chaînée représentant les objets (things) s'y trouvant. Pendant la phase de rendu des secteurs, les objets sont placés dans la file d'attente pour être affichés. Ceux qui ne sont pas dans le champ de vision sont ignorés.

Les bords des sprites sont coupés en vérifiant la liste des segments déjà dessinés. Les sprites dans Doom sont stockés avec le même format que celui utilisé pour les murs, de telle sorte qu'il est très facile pour de moteur de rendu de les afficher : les mêmes fonctions qui sont utilisés pour afficher des murs sont employées pour dessiner des sprites.

Alors que les sous secteurs garantissent d’être déjà triés, les sprites ne le sont pas. Doom stocke une liste de sprites à afficher (vissprites) et trie cette liste juste avant le rendu. Ainsi les sprites les plus en retrais sont affichés avant ceux qui se trouvent plus proche du champ de vision. Ceci génère des recouvrements — que l'on peut considérer comme un traitement non optimal — mais qui sont habituellement négligeables sur le temps de traitement.

Enfin, les textures utilisées sur les deux cotés d'un mur et recourant à la transparence sont affichées en même temps que les sprites à la fin du processus de rendu plutôt qu'avec les autres murs.

Éditeur de niveaux

Doom et Duke Nukem 3D utilisent le même type de cartes, mais le moteur de Duke Nukem a moins de limitations (possibilité de superposer des étages par exemple). Les niveaux de Doom peuvent donc être édités avec l'éditeur de niveau de Duke Nukem 3D.

Références

Lien externe

  • Portail du jeu vidéo Portail du jeu vidéo
  • Portail des logiciels libres Portail des logiciels libres
Ce document provient de « Id Tech 1 ».

Wikimedia Foundation. 2010.

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

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • Doom engine — Developer(s) id Software Written in C, Assembly language Type Game engine License GNU General Public License …   Wikipedia

  • Doom Engine — Saltar a navegación, búsqueda Doom Engine es el motor grafico que id Software uso para sus videojuegos Doom y Doom II. Este motor gráfico también es usado por Hexen, Heretic, Strife y HacX, y otros juegos producidos por licenciatarios. Fue creado …   Wikipedia Español

  • Doom engine — У этого термина существуют и другие значения, см. Doom (значения) …   Википедия

  • Doom-Engine — Levelstruktur der Doom Engine Die Doom Engine (oder auch id Tech 1 ) ist eine Game Engine von id Software, die überwiegend von John Carmack entwickelt wurde. Sie wurde für das 1993 veröffentlichte Computerspiel Doom programmiert. Die Doom Engine… …   Deutsch Wikipedia

  • Doom Engine — Id Tech 1 L id Tech 1 (ou Doom engine) est un moteur de jeu qui permit de faire fonctionner les jeux Doom et Doom II de id Software. Il a aussi été utilisé sous licence par les jeux Hexen, Heretic, Strife et HacX, et d autres jeux. Il a été créé… …   Wikipédia en Français

  • Doom (video game) — DOOM redirects here. For other uses, see Doom (disambiguation). Doom Box art, painted by Don Ivan Punchatz. Developer(s) id Software Publis …   Wikipedia

  • DOOM — Doom, gespielt auf einem OLPC One Laptop Per Child. Screenshot von FreeDoom, einer freien Variante. Doom (eng …   Deutsch Wikipedia

  • DOOM II — Doom, gespielt auf einem OLPC One Laptop Per Child. Screenshot von FreeDoom, einer freien Variante. Doom (eng …   Deutsch Wikipedia

  • DooM — Doom, gespielt auf einem OLPC One Laptop Per Child. Screenshot von FreeDoom, einer freien Variante. Doom (eng …   Deutsch Wikipedia

  • DooM ³ — Doom, gespielt auf einem OLPC One Laptop Per Child. Screenshot von FreeDoom, einer freien Variante. Doom (eng …   Deutsch Wikipedia

Share the article and excerpts

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