- Quake II engine
-
id Tech 2
Le id Tech 2 est un moteur de jeux vidéo développé par id Software. Il succède à l'id Tech 1 utilisé pour le jeu Doom. Initié pour le jeu Quake (1996) et amélioré pour le jeu Quake II (1997). Il a selon son évolution successivement été désigné Quake engine, puis Quake II engine, et en 2007 id Software renomme sa gamme de moteurs, et cette version prend le nom définitif de id Tech 2. L'article traite des deux versions (pour Quake et Quake II) , versions qui ont énormément de code en commun.
Sommaire
Historique
Les bases du id Tech 2 ont été créé en 1996 avec le Quake engine pour le jeu Quake. John Carmack y réalisa la grosse partie du travail de programmation, avec l'aide de Michael Abrash, un spécialiste des optimisations algorithmiques et assembleur.
La même année, le code de la partie réseau, alors uniquement adaptée aux faibles latences des réseaux locaux, est entièrement revue pour fonctionner sur un réseau moins fiable et plus lent qu'est Internet. C'est la branche nommée QuakeWorld (décembre 1996), réalisée par John Carmack avec l'aide de John Cash et de Christian Antkow.
Le moteur initial de Quake réalise tout le rendu de manière logiciel. John Carmack expérimente plusieurs exécutables dédiés supportant différentes accélérations matérielles[réf. nécessaire] (par exemple VQuake, pour supporte la puce Vérité 1000 de Rendition de la carte 3D Blaster), puis en fin janvier 1997 réalise un support OpenGL générique (GLQuake), alors supporté par quelques cartes[réf. nécessaire] (dont la Voodoo de 3dfx).
Fin 1997, Quake II est publié. Le Quake II engine résulte principalement de la convergence du code des différentes branches[réf. nécessaire]. Des retouches structurelles sont apportées, dont la scission des différents aspects du moteur en plusieurs bibliothèques dynamiques séparant par exemple la logique propre au jeu du reste du moteur[réf. nécessaire].
Les différentes versions sont libérées successivement sous GPL en 1999 (Quake engine)[1], puis en 2001 (Quake 2 engine)[2],[3].
En 2007 id Software renomme sa gamme de moteurs, et formellement le Quake II engine prend le nom de id Tech 2, et les autres versions intermédiaires depuis le Doom engine (id Tech 1) sont retirées de la gamme.
Technique
Arbre BSP
Les décors sont découpés selon un arbre BSP (Binary space partitioning) : une hiérarchie de plan subdivise l'espace en deux moitiés complètement séparées, les triangles intersectant ces plans étant découpés. Des plans sont également introduits le long des murs extérieurs de la carte. Les sous-zones ainsi définies par les plans sont appelées les Leaf : ce sont elles qui contiennent les triangles du décor.
Un outil précalcule, par lancer de rayons, pour chaque leaf quels autres leafs sont visibles.
Il est facile de savoir récursivement de quel coté d'un plan un point (ici la caméra) est, et de trouver dans quel leaf elle se situe. On en récupère la liste des leafs visibles. En suivant les plans de l'arbre BSP découpant le monde, on peut avoir un tri parfait des leafs du plus proche au plus éloigné de la caméra.
Rendu par GEL
Pour ne pas afficher les parties de murs cachées par un mur plus proche, une Globel Edge List est utilisée : elle stocke la liste des bords de tous les triangles déjà affichés, et chaque nouveau triangle est "clippé" (découpé) par ces segments : seuls les parties visibles de ces triangles sont ensuite affichées. D'autres algorithmes pour avoir le même résultat existent, mais avec des couts différents : Z-buffer (ralentissait trop les prototypes de Quake), S-Buffer (Scanline Buffer) et C-Buffer (Coverage Buffer) (qui scalent mal avec la résolution de l'écran).
Textures, Surface Cache
Les murs sont affichés avec une texture de base et une lightmap. Pour ne pas tout afficher deux fois, une Surface est générée en mélangeant la texture et la lightmap utilisées par un mur.
Les Surfaces sont stockées dans un cache, afin de réutiliser celles précédemment calculées, et de les libérer si elles ne sont plus utilisées.
Des Surfaces plus petites sont générées pour les murs plus lointains en utilisant les mipmaps des textures (les lightmaps étant déjà en basse résolution), afin d'économiser de la mémoire et d'éviter un phénomène d'aliasing des textures vues de trop loin.
ZBuffer et personnage
Pendant l'affichage des décors, un Z-buffer est également rempli. Il ne sert pas pendant le rendu du décor, mais pendant le rendu des personnages et autres objets 3D dynamiques, afin de les masquer par le décor quand nécessaire.
Vus de loin, les personnages ne sont pas affichés en 3D mais par un système de voxels : gros point dont la couleur, uniforme, vient de la texture du personnage.
Éclairage dynamique
Les personnages sont éclairés uniformément, par une couleur qui dépend de leur position ; cette couleur provient d'une structure stockant l'éclairage ambiant en 3D.
Affichage des triangles
Le rendu bas niveau des triangles est écrit en assembleur. Il utilise la FPU pour tous les calculs de correction de perspective et d'interpolation des coordonnées de texture, à cause de la quantité limité de registres entiers.
Jeux notables
Liste de jeux notables utilisant le moteur, ou une version retouchée, du jeu Quake[4] ou Quake II[5]. Ne sont pas listé ici les mods, les versions du moteur ont suscité l'apparition de centaines de mods.
- Quake (1996, Quake engine)
- QuakeWorld (1996)
- Malice (Quake engine)
- Shrak (Quake engine)
- Quake Mission Pack 1: Scourge Of Armageddon (Quake engine)
- Quake Mission Pack 2: Disolution Of Eternity (Quake engine)
- X-Men: The Ravages of Apocalypse (Quake engine)
- Abyss of Pandemonium (Quake engine)
- Q!Zone for Quake (Quake engine)
- AfterShock for Quake (Quake engine)
- Dark Hour (Quake engine)
- Eternal War (Quake engine)
- Half-Life (1998, GoldSrc)
- Sin (1998, Quake II engine)
- Hexen II (1997, Quake II engine)
- Quake II (1997, Quake II engine)
- Daïkatana (2000, Quake II engine)
- Anachronox (2001, Quake II engine)
- Soldier of Fortune (2000, Quake II engine)
- Nexuiz (2005-, DarkPlaces)
- UFO: Alien Invasion (2006-, Quake II engine)
- Sin: Wages of Sin (Quake II engine)
- Kingpin (Quake II engine)
Moteurs libres dérivés
Le 21 décembre 1999, John Carmack de id Software libère le code source du moteur Quake sur Internet sous les termes de la licence publique générale GNU, permettant aux programmeurs de modifier le moteur et d'y ajouter de nouvelles fonctionnalités. Rapidement les premières versions modifiées du moteur ont commencé à circuler sur Internet.
Certaines des ces modifications sont disponibles sur des Live CD. Ces derniers rassemblent un système d'exploitation libre ainsi que le client QuakeWorld. Il faut cependant recopier certains fichiers originaux du CD de Quake (pak0.pak et pak1.pak) sur ces Live CD pour que ces derniers soient totalement opérationnels. En effet, le moteur QuakeEngine est passé dans le domaine public alors que les éléments graphiques (textures, graphismes...) sont restés la propriété d'ID Software.
DarkPlaces
DarkPlaces (en)[6] est une modification du moteur qui améliore le code réseau (netcode), ajoute un support des cartes de Quake III, a un moteur de rendu complètement refait (éclairage et ombres calculées en temps réel, bump mapping, gestion des shaders OpenGL, etc.), un navigateur de serveur intégré et ajoute le support de l'Ogg Vorbis.
Il se base sur la version d'Id Tech 2 qui a été libéré par Id Software et est compatible Linux, Mac OS X et Windows. Il est notamment utilisé par Nexuiz.
Il est développé par Forest Hale, dit "LordHavoc", ainsi qu'une communauté de développeurs.
ProQuake
ProQuake (en)[7] est basé sur le code libéré par Id. Ce mod, sous licence GPL, se focalise sur l'amélioration du mode multijoueur (précision des tirs, etc.) et de la protection anti-cheat mais il permet aussi:
- de se connecter à travers un réseau NATé et donc que plusieurs personnes peuvent se connecter avec la même adresse IP (64 maximum[8]).
- d'être protégé contre les attaques DoS.
- d'enregistrer des démos.
- de jouer sous Linux, Windows (98, Xp et Vista).
Il est développé par J.P. Grossman (dit "Mephistopheles"). La dernière version (3.50 du 21 septembre 2002[7]) est compatible avec Quake et NetQuake, mais pas avec QuakeWorld.
Telejano
Telejano[9] est une modification dérivée du TomazQuake engine qui ajoute beaucoup de nouveau éléments comme un moteur de particules, des effets de lumières, des étincelles à l'impact des balles, des explosions ; pour l'eau : des effets de vages et de caustique ; des trainées de fumé derrière les boule de magma et les roquettes ; mais aussi du sang plus réaliste, du brouillard. Tout cela sans aucune modification des cartes originales.
La dernière version (annoncée comme la version final du projet) est la 8.01 du 7 janvier 2005.
Autres moteurs connus
- Tenebrae[10] - un dérivé, le premier à ajouter un éclairage et des ombres calculées en temps réel sur le Quake engine.
- Tomaz Quake[11] - l'une des premières modification du moteur à se retrouver sur le net.
- Twilight Engine - le plus rapide des moteurs basé sur Quake engine, cette modification privilégie la performance sur les ajouts fonctionnels.
D'autres moteurs
Il existe bien sûr bien d'autres modifications du moteur:
- ezQuake[12]: Ajoute des effets de particules, d'eau, de brouillard, le support de la QuakeTV, un player MP3 intégré...
- FitzQuake[13]: Principalement de la correction de bugs et de l'ajout d'effets (skyboxes, brouillard, lumières colorées)
- FuhQuake (en): basé sur ZQuake auquel il a ajouté le support des textures 24 bits, des lumières statiques, ainsi qu'un début de système anti-cheat.
- JoeQuake[14]: basé sur ZQuake et FuhQuake, il se focalise principalement sur la lecture de demo. Il supporte les textures 32 bits, les animation douces et les lumières colorées.
- MacGLQuake[15]: cherche à porter GLQuake et GLHexen 2 sur MacOS.
- Pocket Quake[16]: est un portage de Quake sur PocketPC.
- QuakeForge[17]: Cherche à améliorer le jeu (par une protection anti-cheat) et à le rendre à accessible à un maximum de personnes.
- ZQuake[18]: Se focalise sur l'amélioration des performances, de la stabilité et de la compatibilité et de rendre le gameplay plus fluide. Il est compatible avec NetQuake et QuakeWorld.
Liens Externes
- A comparison of Quake Engines focused on Singleplayer
- Quake's Lighting Model: Surface Caching par Michael Abrash
Notes et références
- ↑ (en) id Software's Technology Licensing Program sur http://www.idsoftware.com/. Consulté le 12 septembre 2008. « Many people are aware that the original QUAKE source code was publicly released by id in 1999 under the GNU General Public. »
- ↑ (en) Slashdot, 22 décembre 2001, Quake 2 source code released under the GPL
- ↑ (en) id Software's Technology Licensing Program sur http://www.idsoftware.com/. Consulté le 12 septembre 2008. « [..] as of December, 2001 this critically acclaimed engine is also available under the GNU General Public License. »
- ↑ (en) 3D Engine: Quake sur http://www.mobygames.com/home. Consulté le 5 septembre 2008
- ↑ (en) 3D Engine: id Tech 2 sur http://www.mobygames.com/home. Consulté le 5 septembre 2008
- ↑ (en) LordHavoc's DarkPlaces Quake. Consulté le 6 septembre 2008
- ↑ a et b (en) ProQuake. Consulté le 6 septembre 2008
- ↑ (en) J.P. Grossman, « Readme de la version 3.50 ». Mis en ligne le 21 septembre 2002, consulté le 6 septembre 2008
- ↑ (en) Telejano, « Telejano ». Consulté le 5 septembre 2008
- ↑ (en) C. Hollemeersch, « Tenebrae ». Consulté le 5 septembre 2008
- ↑ (en) Tomaz, « Tomaz' Corner ». Consulté le 5 septembre 2008
- ↑ (en) ezQuake. Mis en ligne le 26 mai 2007, consulté le 5 septembre 2008
- ↑ (en) John Fitzgibbons, « FitzQuake ». Consulté le 5 septembre 2008
- ↑ (en) Jozsef, « JoeQuake ». Consulté le 5 septembre 2008
- ↑ (en) MacGLQuake. Consulté le 5 septembre 2008
- ↑ (en) Pocket Quake. Consulté le 5 septembre 2008
- ↑ (en) QuakeForge. Consulté le 5 septembre 2008
- ↑ (en) ZQuake. Consulté le 5 septembre 2008
- Portail du jeu vidéo
Catégorie : Moteur de jeu vidéo
Wikimedia Foundation. 2010.