John Carmack

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 30 novembre 2020 à 23:07 et modifiée en dernier par Alain594 (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
John Carmack
John Carmack à la GDC 2010
Fonction
Directeur technique
Reality Labs (en)
depuis le
Biographie
Naissance
Nationalité
Domiciles
Formation
Université du Missouri à Kansas City
Shawnee Mission East High School (en)
Raytown South High School (en)Voir et modifier les données sur Wikidata
Activités
Conjoint
Katherine Anna Kang (de à )Voir et modifier les données sur Wikidata
Autres informations
A travaillé pour
Reality Labs (en) (depuis le )
Id Software ( - )
Softdisk (jusqu'en )
Armadillo AerospaceVoir et modifier les données sur Wikidata
Distinction
Œuvres principales
signature de John Carmack
Signature

John Carmack, né le à Roeland Park au Kansas, est un ingénieur en informatique américain, par ailleurs programmeur et développeur de jeux vidéo.

Il est notamment connu pour avoir été le programmeur principal et le cofondateur (avec plusieurs personnes, dont John Romero) de la société id Software, une entreprise américaine de jeux vidéo. Son habileté en programmation informatique lui a permis de devenir une célébrité dans la communauté des joueurs et des développeurs d'applications graphiques et de moteurs 3D de jeux vidéo.

Depuis son départ d'id Software en 2013, il rejoint en tant que directeur technique la société Oculus VR, celle-ci étant rachetée en 2014 par Facebook.

Carrière

John Carmack est à l'origine de nombreux jeux de tir à la première personne (FPS) sortis par id Software, tels que : Wolfenstein 3D (le premier jeu de ce genre à obtenir un certain succès), Doom (reconnu comme une révolution technologique et immense succès mondial) et Quake (le premier FPS à présenter un environnement totalement en 3D temps réel, y compris les objets et personnages et le premier à introduire le jeu à plusieurs par Internet). Il dirige ensuite le développement de Doom 3, dont le moteur graphique était à la pointe de la technologie lors de sa sortie. Son dernier projet chez id Software est la direction du développement de Rage et du moteur graphique id Tech 5.

Carmack en 2005 lors de la Coupe X PRIZE à Las Cruces et Alamogordo (Nouveau-Mexique).

En 2001, il rejoint le panthéon des développeurs (Hall of Fame) de l’Academy of Interactive Arts and Sciences.

Il est, avec son épouse Katherine Anna Kang, le fondateur de la société Armadillo Aerospace, qui s'intéresse aux roquettes utilisées pour les fusées spatiales[1].

Le , John Carmack devient directeur technique d'Oculus VR, fabricant de l'Oculus Rift, un casque de réalité virtuelle. Il conserve également pendant un temps son poste chez id Software[2],[3]. Mais, le , il quitte définitivement id Software pour travailler à plein temps pour Oculus VR[4]. Celle-ci devient une filiale de Facebook en .

Un programmeur astucieux

Le succès de John Carmack repose notamment sur son habileté à transposer de façon optimale les meilleurs algorithmes et techniques de rendu 3D sur des systèmes temps réel, tout en restant extrêmement au fait des nouveautés en matière de rendu 3D. Il est le plus célèbre développeur indépendant capable de réaliser des moteurs graphiques exploitant au maximum les évolutions du matériel, en particulier des cartes graphiques pour PC. Il a inventé plusieurs algorithmes, notamment le Carmack's Reverse ; il n'est pas le premier à avoir découvert ce principe mais est le premier à l'avoir utilisé efficacement et intensivement.

L'Id Tech 3 (moteur de rendu 3D du jeu Quake III Arena) étant sous licence GNU GPL, il est possible de consulter l'intégralité du code source de ce jeu. Parmi celui-ci, on retrouve deux fonctions longtemps attribuées à John Carmack et qui auront fait beaucoup parler d'elles : l'une pour calculer une racine carrée, l'autre pour calculer une racine carrée inversée.

Écrite en C, la fonction calculant une racine carrée inversée est la suivante :

float Q_rsqrt( float number ){
    long i;
    float x2, y;
    const float threehalfs = 1.5F;
    
    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y; // evil floating point bit level hacking
    i  = 0x5f3759df - ( i >> 1 ); // what the fuck?
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
    // y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed
    
    #ifndef Q3_VM
    #ifdef __linux__
      assert( !isnan(y) ); // bk010122 - FPE?
    #endif
    #endif
    return y;
}

Cette fonction est pour le moins particulière puisqu'elle ne contient aucune boucle, elle ne fait intervenir qu'une suite de calculs élémentaires. Pour autant, celle-ci fournit des approximations tout à fait acceptables (de l'ordre de 10-3). Elle est même jusqu'à 4 fois plus rapide que la fonction (float) 1.0/sqrt(x) et se révèle ainsi parfaite pour un jeu vidéo.

En réalité, cette fonction repose sur une méthode tirée de l'analyse numérique : la méthode de Newton. La clef de son efficacité réside dans l'utilisation d'une constante particulière 0x5f3759df. Cette constante hexadécimale est utilisée comme première approximation et réduit de façon remarquable le nombre d'itérations nécessaires pour obtenir une approximation satisfaisante. Cette constante – dite magique – est si remarquable qu'une seule itération de Newton donne des résultats suffisants dans le cadre du rendu graphique.

Chris Lomont de l'université de Purdue[5] a depuis étudié la question. Il existe une constante fournissant de meilleures approximations : 0x5f375a86. Dans son étude, Chris Lomont fait également mention du fait que l'utilisation originale de cette constante serait peut-être due à Gary Tarolli[6], alors développeur chez nVidia.

Cette fonction est illégale en C++03[7] : les valeurs float sont stockées dans le FPU alors que les entiers sont utilisés par le CPU.

Collaborations

Liste des principaux jeux vidéo sur lesquels John Carmack a collaboré en tant que programmeur, développeur ou directeur technique.

Date de sortie Titre Développeur Éditeur Credited for
Modèle:Dts Doom (reboot) id Software Bethesda Softworks Former technical director, former engine programmer, former developer
Modèle:Dts Doom 3 BFG Edition id Software Bethesda Softworks Technical director, engine programmer, developer
Modèle:Dts Rage id Software Bethesda Softworks Technical director, engine programmer, developer
Modèle:Dts Enemy Territory: Quake Wars Splash Damage Activision Programming
Modèle:Dts Orcs & Elves Fountainhead Entertainment Electronic Arts Producer/programmer/writer
Modèle:Dts Quake 4 Raven Software Activision, Bethesda Softworks (republished 2012) Technical director
Modèle:Dts Doom RPG (en) Fountainhead Entertainment id Software Producer/programmer
Modèle:Dts Doom 3: Resurrection of Evil Nerve Software Activision Technical director
Modèle:Dts Doom 3 id Software Activision Technical director
Modèle:Dts Return to Castle Wolfenstein id Software Activision Technical director
Modèle:Dts Quake III: Team Arena id Software Activision Programming
Modèle:Dts Quake III Arena id Software Activision Programming
Modèle:Dts Quake II id Software Activision Programming
Modèle:Dts Doom 64 Midway Games Midway Games Programming
Modèle:Dts Quake id Software GT Interactive Programming
Modèle:Dts Final Doom id Software GT Interactive Programming
Modèle:Dts Hexen: Beyond Heretic Raven Software id Software 3D engine
Modèle:Dts Heretic Raven Software id Software Engine programmer
Modèle:Dts Doom II: Hell on Earth id Software GT Interactive Programming
Modèle:Dts Doom id Software id Software Programming
Modèle:Dts ShadowCaster Raven Software Origin Systems 3D engine
Modèle:Dts Spear of Destiny id Software FormGen Software engineer
Modèle:Dts Wolfenstein 3D id Software Apogee Software Programming
Modèle:Dts Catacomb 3-D id Software Softdisk Programming
Modèle:Dts Commander Keen in Aliens Ate My Babysitter! id Software FormGen Programming
Modèle:Dts Commander Keen in Goodbye, Galaxy! id Software Apogee Software Programming
Modèle:Dts Commander Keen in Keen Dreams id Software Softdisk Programming
Modèle:Dts Shadow Knights id Software Softdisk Design/programming
Modèle:Dts Rescue Rover 2 id Software Softdisk Programmer
Modèle:Dts Rescue Rover id Software Softdisk Programmer
Modèle:Dts Hovertank 3D id Software Softdisk Programming
Modèle:Dts Dangerous Dave in the Haunted Mansion id Software Softdisk Programming
Modèle:Dts Dark Designs III: Retribution Softdisk Softdisk Programmer/designer
Modèle:Dts Commander Keen in Invasion of the Vorticons id Software Apogee Software Programming
Modèle:Dts Slordax: The Unknown Enemy Softdisk Softdisk Programming
Modèle:Dts Catacomb II Softdisk Softdisk Developer
Modèle:Dts Catacomb Softdisk Softdisk Programmer
Modèle:Dts Dark Designs II: Closing the Gate Softdisk Softdisk Programmer/designer
Modèle:Dts Dark Designs: Grelminar's Staff John Carmack Softdisk Developer
Modèle:Dts Tennis John Carmack Softdisk Developer
Modèle:Dts Wraith: The Devil's Demise John Carmack Nite Owl Productions Developer
Modèle:Dts Shadowforge John Carmack Nite Owl Productions Developer

Notes et références

Voir aussi

Sur les autres projets Wikimedia :

Bibliographie

Article connexe

Liens externes