# Id Tech

Id Tech désigne une série de moteurs de jeu développés par la firme id Software.

## 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). Les nombreux 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 certains cas ont permis d'étendre les capacités du moteur en ajoutant de nouvelles fonctions.

### Éditeur de niveaux

Dès la création de Doom, et encouragés par les auteurs du jeu, des amateurs travaillèrent à construire de nouvelles cartes pour le jeu, et développer des outils dédiés : DEU (Doom Editing Utility), DETH (DOOM Editor for Total Headcases), le logiciel commercial DCK (Doom Construction Kit), etc. Les logiciels actuellement fonctionnels et régulièrement mis à jour sur des systèmes modernes comprennent Doom Builder et Eureka (héritier multiplateforme de l'outil Yadex sur Linux). Il existe même des générateurs aléatoires de cartes, tel que OBLIGE (héritier de SLIGE).

## Id Tech 3

L'id Tech 3, plus connu sous le nom de Quake III engine, est une évolution directe des versions précédentes incluses dans Quake et Quake II.
À la QuakeCon 2005, John Carmack a annoncé que le code source du moteur Quake III serait libéré sous GPL. Le 19 août 2005, id Software a libéré les sources du moteur sous GPL, par contre les ressources du jeu vidéo Quake III Arena restent la propriété de id Software. Le code peut ainsi être téléchargé par qui le veut.
Infinity Ward, les créateurs de la série Call of Duty utilisent depuis Call of Duty 2 un moteur maison à base du code source d'id Tech 3 (la société avait déjà utilisé le moteur id Tech 3 en lui-même pour le premier titre). Depuis, le moteur a évolué pour les jeux successeurs de la série mais toujours sur le code source d'id Tech.

### Évolutions par rapport à l'id Tech 2

Contrairement à l'id tech 2 qui avait concentré sa pipeline sur les problèmes relatifs au rendu logiciel, L'id Tech 3 a été spécialement optimisé pour openGL, ce qui a permis une importante simplification du moteur graphique.
La simplicité de l'id tech 3 en a fait le moteur de jeu le plus populaire et le plus utilisé, il est notamment à la base des séries Jedi Knight et Call of Duty.
Son format de map (q3.bsp) très rapide à lire car directement encodé en vertex buffers est devenu une référence dans la 3d rich internet application, il existe des bibliothèques pour le lire avec Webgl et Flash Player, et il est à la base du plugin quakelive.

#### Bones

L'animation des personnages est fluide, calculée en temps réel avec les bones (squelettes articulés).

#### Shaders

L'id Tech 3 introduit les fichiers shaders qui permettent un contrôle précis du rendu des textures. Ils permettent divers effets tels que la transparence, la réflexion, l'additive blending, le texture splatting, etc.

#### Collisionmap en brushes

L'id Tech 2 utilisait deux arbres bsp, un simplifié utilisé pour la détection de collisions, et un plus complexe qui stockait les faces afin d'assurer leur z-ordering. Le z-ordering étant inutile en full hardware, l'id tech 3 n'utilise plus qu'un seul arbre, qui gère à la fois les collisions et le culling (suppression sélective).
La collisionmap d'id tech 3 n'est plus gérée par un second bsp mais par une liste de volumes convexes (brushes). Cette collisionmap indépendante de l'arbre bsp permet de tester les collisions sur les brushes de détail.

#### Stockage balancé et encapsulé de la géométrie

La géométrie n'est plus compressée sous forme de n-gons (polygones) convexes, elle est directement encodée en vertex buffers (tampons de points). Les triangles sont encapsulés dans des formes plus complexes (n-gons (polygones) concaves, curves, trimeshes) qui sont stockées dans le bsp.
Cela permet d'alléger les calculs processeur, qui ne se préoccupent plus du détail des triangles.
La nouvelle pipeline de rendu fonctionne désormais comme suit:
* frustum culling de l'arbre bsp, avec élimination des feuilles occluses grâce à l'occlusion précalculée avec un rapport cluster-to-cluster ;
* repérage de toutes les formes contenues dans ces feuilles visibles ;
* la carte vidéo rend tous les triangles contenus dans ces formes.

#### QuadPatch Curves

Le rendu hardware permettant d'augmenter considérablement la quantité de polygones, l'id tech 3 introduit des formes courbes codées en quads qui permettent de se dégager de l'esthétique low-poly (basse polygonisation) très anguleuse de l'id tech 2.
Permet de modéliser des terrains extérieurs, des grottes, des coupoles, des colonnes, etc. Le joueur peut modifier la résolution polygonale des courbes dans le menu d'options en fonction des capacités mémoire de sa machine.
Ces courbes remplacent partiellement, voir totalement, la géométrie bsp générée par les brushes. Une map peut être entièrement modélisée en courbes, stockées dans un bsp généré à partir de brushes invisibles.

#### Détails

L'ajout de détails (petits brushes sans incidence sur la complexité de l'arbre afin d'éviter les parcours trop coûteux en calcul ainsi que les risques de holes) posait un problème d'optimisation dans l'id tech 2, il fallait passer par des models indépendants dont l'intégration à la pipeline de rendu coûtait plus de calculs processeur que pour le model statique.
L'id tech 3 permet de modéliser des détails sans passer par les models. Les détails brushes sont intégrés au model statique, ce qui accélère leur rendu.

#### Ombres dynamiques

L'id tech 3 propose un rendu d'ombres dynamiques simplifiées sous forme d'une petite tache sombre projetée sur quelques polygones. Projetées uniquement, à l'origine, sur les n-gons (polygones) concaves, certains dérivés de l'id tech 3 ont rajouté la projection d'ombre sur les courbes.

### Jeux utilisant le moteur de Quake 3

* Return to Castle Wolfenstein
* American McGee's Alice
* Call of Duty
* Star Trek Voyager : Elite Force
* Heavy Metal : F.A.K.K. 2
* Jedi Knight II: Jedi Outcast
* Soldier of Fortune II: Double Helix
* Medal of Honor : Débarquement allié
* Star Trek Elite Force 2
* Jedi Knight: Jedi Academy
* Wolfenstein: Enemy Territory
* Tremulous
* OpenArena
* Urban Terror
* Quake Live
* 007 : Quitte ou double

## Id Tech 4

L'id Tech 4, plus connu sous le nom de Doom 3 engine, est utilisé pour la première fois dans le jeu Doom 3.
Conçu principalement par John Carmack, celui-ci a aussi créé d'autres moteurs par le passé comme le Doom engine et le Quake engine, qui ont été généralement reconnus comme de grandes avancées technologiques dans le domaine.

### Historique

L'id Tech 4 a d'abord été conçu comme une amélioration du Quake engine. À l'origine, il était prévu de complètement réécrire le moteur de rendu du Quake Engine, tout en gardant certains sous-systèmes comme l'accès aux fichiers et la gestion de la mémoire. Après que le nouveau moteur de rendu fut fonctionnel, il fut décidé de passer du langage C au C++, ce qui nécessita une réécriture et une restructuration complète du reste du moteur. Le moteur actuel ne contient donc que très peu de code issu du moteur Quake engine, ce qui en fait le premier vrai nouveau moteur d’id Software depuis 1996.

### Ajouts par rapport à l'id tech 3

L'id Tech 4 est sorti avec de nombreuses nouvelles technologies par rapport au Quake 3 engine (id tech 3) qui l'a précédé. Cela inclut le bump mapping, le normal mapping et la lumière spéculaire. D'autres fonctionnalités ont été ajoutées par la suite au moteur, comme la technologie MegaTexture (notamment utilisée dans le jeu Enemy Territory: Quake Wars).

#### IA et scripting

Les personnages non joueurs ont une intelligence artificielle (IA) rudimentaire (de type pathfinder) et le jeu est enrichi d'un langage de script appelé DoomScript.

#### Pixel shaders

L'id tech 4 permet divers effets propres à la génération d'effets vidéo en pixel shader : déformation, flou, bump mapping, etc.

#### Réécriture complète en objet

Le moteur a été entièrement réécrit en C++.

#### Réécriture des formats de fichier

Les fichiers du jeu sont désormais entièrement encodés avec le format ASCII qui était déjà utilisé pour coder les entités dans l'Id Tech 3. Ce format est plus lent à charger mais plus souple, plus adapté à l'objet et plus facile à déboguer.
Les cartes du jeu (maps) ne sont plus codées sur un simple fichier .bsp, mais encodées sous la forme de 4 fichiers différents afin de mieux isoler les différentes partie du programme :
* le fichier « .map », lu par l'éditeur de niveaux du jeu et par le jeu lui-même, qui contient les entités et autres informations. Il sert à générer 3 autres fichiers  :
** le fichier « .cm », qui définit une collisionmap pour le moteur physique  ;
** le fichier « .proc », qui contient toute la géométrie pré calculée par le compilateur  : triangles, portails, volumes de lumière des lampes statiques  ;
** le fichier « .aas », qui contient des structures pour guider l'IA.
L'occlusion n'est plus approximativement pré-calculée dans des tables, elle est calculée en temps réel à l'aide de portails stockés dans le bsp.

#### Éclairage et ombres dynamiques en temps réel

La principale innovation de l'id Tech 4 est l'utilisation totale de l'éclairage dynamique. Les volumes d'ombres sont rendus en polygones avec un algorithme appelé Carmack's Reverse. Les volumes d'ombre des lampes statiques sont pré-calculés à la compilation de la map, les volumes d'ombre de lampes mobiles sont calculés en temps réel.
Alors qu’auparavant les moteurs 3D combinaient grossièrement les lumières pré-calculées ou les lightmaps avec des lumières dynamiques dont l'effet changeait la luminosité d'un objet entier, l'approche utilisée par l'id Tech 4 a permis un éclairage et un ombrage plus réaliste qu'auparavant.

#### Synchronisation des lèvres

Quake 4 offre une technologie de synchronisation des lèvres en temps réel. Un système qui est similaire à celui du Source Engine, avec onze émotions faciales génériques et le support des langues anglaise, française, italienne et espagnole (le Source Engine est indépendant de la langue).

#### Technologie de rendu MegaTexture

MegaTexture est une technologie apparue avec Enemy Territory: Quake Wars. Elle est conçue pour éliminer les textures répétitives dans un environnement.
La version originale de l'id Tech 4 a été critiquée pour son inaptitude à gérer les paysages et les décors extérieurs. La technologie MegaTexture corrige ce problème en permettant l'utilisation d'une seule texture massive recouvrant tout le niveau.
Il est actuellement nettement plus simple de charger une seule texture de 32000x32000 pixels que seize textures de 4000x4000 pixels. Le résultat est considérablement plus détaillé qu'avec des textures répétitives. De plus, la sous-couche MegaTexture permet aussi d'appliquer une grande variété de paramètres à certaines zones, comme la tenue de route des véhicules, les bruits de pas ou les particules à utiliser pour les explosions. Ce qui limite l'utilisation de polygones supplémentaires.

#### Futures améliorations prévues

Les ombres gérées par l'id Tech 4 original ont un gros défaut : leurs contours sont tous parfaitement nets. Les jeux suivants basés sur ce moteur permettront l'utilisation de véritables ombres douces par une véritable gestion de la pénombre, calculée par rapport à la distance entre la lumière et le cache.

### Liste de jeux utilisant l'id Tech 4

* Doom 3
* Doom 3: Resurrection of Evil
* Doom 3: The Lost Mission
* Quake 4
* Prey
* Enemy Territory: Quake Wars
* Wolfenstein
* Brink
* Quadrilateral Cowboy

## Id Tech 5

id Tech 5 est dévoilé pour la première fois lors de la WWDC 2007 par John Carmack.
Pour cette version, id a changé le schéma habituel de nommage. Le précédent moteur était nommé « Doom 3 engine », du nom du jeu pour lequel il a été créé; celui-ci est désormais appelé id Tech 4. Le nom laisse maintenant transparaître plus facilement la parenté entre les différents moteurs.
Le moteur de jeu a notamment été utilisé pour les jeux Rage, Wolfenstein: The New Order, le standalone Wolfenstein: The Old Blood ainsi que The Evil Within.

### Démonstrations

Le moteur Id Tech 5 a été dévoilé pour la première fois lors de la WWDC 2007 par John Carmack, démonstration utilisant un ordinateur Apple Macintosh à 8 cœurs. Cependant, la démo n'utilisa qu'un seul cœur et un seul processus OpenGL fonctionnant sur une carte vidéo de Nvidia, la Quadro 7000 dotée de 512 Mio.
La première démonstration publique réelle prit place à la QuakeCon 2007. Une partie de la démonstration présente l'aspect multiplate-forme, où quatre machines (Windows, Mac OS, PlayStation 3, Xbox 360) ont fait fonctionner une séquence de présentation de Rage. Une longue partie présentait les outils d'éditions.

### Ajouts par rapport à l'id tech 4

L'innovation principale d'id Tech 5 par rapport à l'id Tech 4 est de pouvoir afficher des cartes très grandes ou très détaillées. Le moteur peut désormais gérer de très grands extérieurs ou des intérieurs high-poly.

### Optimisation sur PlayStation 3

Jon Olick, ancien programmeur principal de Naughty Dog et ayant travaillé pour Sony sur l'ensemble de la bibliothèques EDGE, qui permet une meilleure utilisation du processeur Cell, a eu pour rôle chez id Software d'optimiser l'Id tech 5 pour obtenir les meilleures performances possibles sur la PlayStation 3, du fait de sa connaissance très avancée du Cell.

#### Streaming mémoire vidéo

Les maps contiennent plus de données (textures, etc.) que la mémoire des machines ne peut en contenir. Celles-ci sont mises à jour avec du streaming.

#### MegaTexture avancé

La démonstration faite à la WWDC 2007 utilisait 20 Go de textures (la technologie MegaTexture avancée, celle mise au point depuis Enemy Territory: Quake Wars avec l'id Tech 4, et des textures pouvant aller jusqu'à une résolution de 128 000 par 128 000 pixels) et un monde entièrement dynamique et modifiable.

#### Ombres mappées temps réel

Le moteur graphique permet de gérer l'affichage de pénombre par le biais du Shadow mapping (en). Elle est différente de celle utilisée par le moteur id Tech 4, qui générait des ombres polygonales affichées en Stencil buffer.

#### Compatibilité directX et multi-plateformes

Le moteur est multiplate-forme (Windows, Mac OS, Playstation 4, Xbox One, PlayStation 3, Xbox 360), et id annonce qu'il permet de rendre le même contenu sur différentes plates-formes, l'adaptant automatiquement aux capacités de la machine cible. Ceci réduirait la complexité d'un déploiement de jeu sur plusieurs systèmes. Il viendrait également avec une suite complète d'outils d'édition nommée Id Studio.

#### Autres fonctions

Le moteur génèrerait également d'autres effets graphiques, comme le High dynamic range rendering (prise en compte de l'intensité de la lumière) et le Motion blur.
Il serait également multitâche et génèrerait en parallèle le rendu vidéo et sonore, la logique propre au jeu, l'intelligence artificielle et la physique.

### Licences

Contrairement aux versions précédentes de l'id Tech, à la suite du rachat d'id software par Bethesda, la licence du moteur ne sera plus vendue aux autres sociétés.